-
Notifications
You must be signed in to change notification settings - Fork 1
/
Deque.hs
42 lines (31 loc) · 750 Bytes
/
Deque.hs
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
40
41
42
module Deque where
import Prelude hiding (head, tail, last, init)
-- Double ended queues
-- Adding and removing allowed from both ends
data Deque a =
Deque Int [a] Int [a]
deriving (Eq, Show)
empty :: Deque a
empty = error "todo"
isEmpty :: Deque a -> Bool
isEmpty = error "todo"
-- Add to front
cons :: a -> Deque a -> Deque a
cons = error "todo"
-- Add to rear
snoc :: a -> Deque a -> Deque a
snoc = error "todo"
-- First element from front
head :: Deque a -> a
head = error "todo"
-- Last element (in rear)
last :: Deque a -> a
last = error "todo"
-- Deque without head
tail :: Deque a -> Deque a
tail = error "todo"
-- All except last
init :: Deque a -> Deque a
init = error "todo"
check :: Deque a -> Deque a
check = error "todo"