@@ -0,0 +1,135 @@
1+module CtorBench where
2+
3+type ManyCtors =
4+ MyLongNamedCtor1 Float Float Float
5+ | MyLongNamedCtor2 Float Float
6+ | MyLongNamedCtor3 Float Float Float
7+ | MyLongNamedCtor4 Float Float
8+ | MyLongNamedCtor5 Float Float Float
9+ | MyLongNamedCtor6 Float Float
10+ | MyLongNamedCtor7 Float Float Float
11+ | MyLongNamedCtor8 Float Float
12+ | MyLongNamedCtor9 Float Float Float
13+ | MyLongNamedCtor10 Float Float
14+ | MyLongNamedCtor11 Float Float Float
15+ | MyLongNamedCtor12 Float Float
16+ | MyLongNamedCtor13 Float Float Float
17+ | MyLongNamedCtor14 Float Float
18+ | MyLongNamedCtor15 Float Float Float
19+ | MyLongNamedCtor16 Float Float
20+ | MyLongNamedCtor17 Float Float Float
21+ | MyLongNamedCtor18 Float Float
22+ | MyLongNamedCtor19 Float Float Float
23+ | MyLongNamedCtor20 Float Float
24+
25+
26+getFieldSum someData =
27+ case someData of
28+ MyLongNamedCtor1 x y z ->
29+ x + y + z
30+
31+ MyLongNamedCtor3 x y z ->
32+ x + y + z
33+
34+ MyLongNamedCtor5 x y z ->
35+ x + y + z
36+
37+ MyLongNamedCtor7 x y z ->
38+ x + y + z
39+
40+ MyLongNamedCtor9 x y z ->
41+ x + y + z
42+
43+ MyLongNamedCtor11 x y z ->
44+ x + y + z
45+
46+ MyLongNamedCtor13 x y z ->
47+ x + y + z
48+
49+ MyLongNamedCtor15 x y z ->
50+ x + y + z
51+
52+ MyLongNamedCtor17 x y z ->
53+ x + y + z
54+
55+ MyLongNamedCtor19 x y z ->
56+ x + y + z
57+
58+ MyLongNamedCtor20 x y ->
59+ x + y
60+
61+ MyLongNamedCtor18 x y ->
62+ x + y
63+
64+ MyLongNamedCtor16 x y ->
65+ x + y
66+
67+ MyLongNamedCtor14 x y ->
68+ x + y
69+
70+ MyLongNamedCtor12 x y ->
71+ x + y
72+
73+ MyLongNamedCtor10 x y ->
74+ x + y
75+
76+ MyLongNamedCtor8 x y ->
77+ x + y
78+
79+ MyLongNamedCtor6 x y ->
80+ x + y
81+
82+ MyLongNamedCtor4 x y ->
83+ x + y
84+
85+ MyLongNamedCtor2 x y ->
86+ x + y
87+
88+
89+makeRandomData i =
90+ case (i % 20) of
91+ 0 ->
92+ MyLongNamedCtor20 (toFloat i) (toFloat <| i*i)
93+ 1 ->
94+ MyLongNamedCtor1 (toFloat i) (toFloat <| i*i) (toFloat <| i*i*i)
95+ 2 ->
96+ MyLongNamedCtor2 (toFloat i) (toFloat <| i*i)
97+ 3 ->
98+ MyLongNamedCtor3 (toFloat i) (toFloat <| i*i) (toFloat <| i*i*i)
99+ 4 ->
100+ MyLongNamedCtor4 (toFloat i) (toFloat <| i*i)
101+ 5 ->
102+ MyLongNamedCtor5 (toFloat i) (toFloat <| i*i) (toFloat <| i*i*i)
103+ 6 ->
104+ MyLongNamedCtor6 (toFloat i) (toFloat <| i*i)
105+ 7 ->
106+ MyLongNamedCtor7 (toFloat i) (toFloat <| i*i) (toFloat <| i*i*i)
107+ 8 ->
108+ MyLongNamedCtor8 (toFloat i) (toFloat <| i*i)
109+ 9 ->
110+ MyLongNamedCtor9 (toFloat i) (toFloat <| i*i) (toFloat <| i*i*i)
111+ 10 ->
112+ MyLongNamedCtor10 (toFloat i) (toFloat <| i*i)
113+ 11 ->
114+ MyLongNamedCtor11 (toFloat i) (toFloat <| i*i) (toFloat <| i*i*i)
115+ 12 ->
116+ MyLongNamedCtor12 (toFloat i) (toFloat <| i*i)
117+ 13 ->
118+ MyLongNamedCtor13 (toFloat i) (toFloat <| i*i) (toFloat <| i*i*i)
119+ 14 ->
120+ MyLongNamedCtor14 (toFloat i) (toFloat <| i*i)
121+ 15 ->
122+ MyLongNamedCtor15 (toFloat i) (toFloat <| i*i) (toFloat <| i*i*i)
123+ 16 ->
124+ MyLongNamedCtor16 (toFloat i) (toFloat <| i*i)
125+ 17 ->
126+ MyLongNamedCtor17 (toFloat i) (toFloat <| i*i) (toFloat <| i*i*i)
127+ 18 ->
128+ MyLongNamedCtor18 (toFloat i) (toFloat <| i*i)
129+ 19 ->
130+ MyLongNamedCtor19 (toFloat i) (toFloat <| i*i) (toFloat <| i*i*i)
131+
132+
133+sumFieldsList : List ManyCtors -> Float
134+sumFieldsList dataList =
135+ List.foldr (\val sumSoFar -> (getFieldSum val) + sumSoFar ) 0.0 dataList