blob: c52bdc723a8c67b07a586da9c40fb4f3fba63ea3 (
plain) (
blame)
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
|
module Constructors where
data Foo
= Bar
| Baz
| Quux Foo Int
newtype Norf = Norf (Foo, [Foo], Foo)
bar, baz, quux :: Foo
bar = Bar
baz = Baz
quux = Quux quux 0
unfoo :: Foo -> Int
unfoo Bar = 0
unfoo Baz = 0
unfoo (Quux foo n) = 42 * n + unfoo foo
unnorf :: Norf -> [Foo]
unnorf (Norf (Bar, xs, Bar)) = xs
unnorf (Norf (Baz, xs, Baz)) = reverse xs
unnorf _ = undefined
|