on master help sign in
Add checkboxes example
84bfb4eEvan Czaplicki
bench/src/Main.elm+10−4
@@ -8,6 +8,7 @@ import Benchmark
8import Syntax.Case as Case
8import Syntax.Case as Case
9import Syntax.Let as Let
9import Syntax.Let as Let
10import Syntax.Records as Records
10import Syntax.Records as Records
11+import Realistic.Check as Check
11import Realistic.Todo as Todo
12import Realistic.Todo as Todo
12
13
13
14
@@ -16,10 +17,15 @@ import Realistic.Todo as Todo
16compilerBenchmark : Benchmark.Benchmark
17compilerBenchmark : Benchmark.Benchmark
17compilerBenchmark =
18compilerBenchmark =
18 Benchmark.suite "generated code"
19 Benchmark.suite "generated code"
20+ [ Benchmark.suite "business logic from the wild"
21+ [ Check.benchmark
22+ , Todo.benchmark
23+ ]
24+ , Benchmark.suite "syntax"
19− [ Case.benchmark
25+ [ Case.benchmark
20− , Let.benchmark
26+ , Let.benchmark
21− , Records.benchmark
27+ , Records.benchmark
22− , Todo.benchmark
28+ ]
23 ]
29 ]
24
30
25
31
bench/src/Realistic/Check.elmnew file+65
@@ -0,0 +1,65 @@
1+module Realistic.Check (benchmark) where
2+{-| Source: http://elm-lang.org/examples/checkboxes
3+-}
4+
5+import Benchmark
6+import String
7+
8+
9+benchmark : Benchmark.Benchmark
10+benchmark =
11+ Benchmark.suite "check box business logic"
12+ [ run "toggle boxes" toggleActions
13+ ]
14+
15+
16+run : String -> List Action -> Benchmark.Benchmark
17+run description actions =
18+ Benchmark.test
19+ (description ++ " - " ++ toString (List.length actions) ++ " actions")
20+ (\_ -> List.foldl update initialModel actions)
21+
22+
23+toggleActions =
24+ [ Red True
25+ , Underline True
26+ , Bold True
27+ , Bold False
28+ , Red False
29+ , Bold True
30+ , Bold False
31+ ]
32+
33+
34+-- MODEL
35+
36+type alias Model =
37+ { red : Bool
38+ , underline : Bool
39+ , bold : Bool
40+ }
41+
42+
43+initialModel =
44+ Model False False True
45+
46+
47+-- UPDATE
48+
49+type Action
50+ = Red Bool
51+ | Underline Bool
52+ | Bold Bool
53+
54+
55+update action model =
56+ case action of
57+ Red bool ->
58+ { model | red = bool }
59+
60+ Underline bool ->
61+ { model | underline = bool }
62+
63+ Bold bool ->
64+ { model | bold = bool }
65+
bench/src/Realistic/Todo.elm+2
@@ -1,4 +1,6 @@
1module Realistic.Todo (benchmark) where
1module Realistic.Todo (benchmark) where
2+{-| Source: https://github.com/evancz/elm-todomvc
3+-}
2
4
3import Benchmark
5import Benchmark
4import String
6import String