blob: 2b369b796bdb03716b3934143934b3142cb4a6da (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
module Stack (
Stack,
empty,
at,
pop,
(<:>)
) where
import Data.List
data Stack a = Stack [a]
instance Show a => Show (Stack a) where
show (Stack x) = "Stack:\n" ++ intercalate "\n" (map (show) x) ++ "\n\n"
infixr 9 <:>
empty :: Stack a
empty = Stack []
at :: Stack a -> Int -> Maybe a
at (Stack list) index =
if (index < length list && index >= 0)
then Just (list!!index)
else Nothing
pop :: Int -> Stack a -> Stack a
pop n (Stack list) = Stack (drop n list)
(<:>) :: a -> Stack a -> Stack a
x <:> (Stack list) = Stack (x : list)
|