on ebe2bb5 help sign in
elk/bench/src/Syntax/Case.elm
80 lines 1.3 kB history raw
1module Syntax.Case (benchmark) where
3import Benchmark exposing (Benchmark, test, suite)
4import String
7benchmark : Benchmark.Benchmark
8benchmark =
9 suite "case expressions"
10 [ suite "simple explicit patterns"
11 [ test "Maybe.withDefault 0 (Just 42)" (withDefault 0 (Just 42))
12 , test "Maybe.withDefault 0 Nothing" (withDefault 0 Nothing)
13 , test "isBlack Diamond" (isBlack Diamond)
14 , test "evaluate basicBoolean" (\_ -> evaluate basicBoolean)
15 , test "evaluate fancyBoolean" (\_ -> evaluate fancyBoolean)
16 ]
17 ]
20-- 1 Level Deep Patterns
22withDefault default maybe _ =
23 case maybe of
24 Just x ->
25 x
27 Nothing ->
28 default
31type Suit = Diamond | Heart | Spade | Club
34isBlack suit _ =
35 case suit of
36 Diamond ->
37 False
39 Heart ->
40 False
42 Spade ->
43 True
45 Club ->
46 True
49type Boolean
50 = Tru
51 | Fls
52 | And Boolean Boolean
53 | Or Boolean Boolean
54 | Not Boolean
57basicBoolean =
58 And (Not Fls) Tru
61fancyBoolean =
62 Or (Not Tru) (Or Fls (And Tru Tru))
65evaluate boolean =
66 case boolean of
67 Tru ->
68 True
70 Fls ->
71 False
73 And a b ->
74 evaluate a && evaluate b
76 Or a b ->
77 evaluate a || evaluate b
79 Not bool ->
80 not (evaluate bool)