@explorable-viz/fluid 0.7.9 → 0.7.11

Sign up to get free protection for your applications and to get access to all the features.
Files changed (168) hide show
  1. package/.spago/{argonaut-codecs/v9.0.0 → affjax-node/v1.0.0}/.editorconfig +1 -1
  2. package/.spago/affjax-node/v1.0.0/.eslintrc.json +30 -0
  3. package/.spago/affjax-node/v1.0.0/.gitignore +13 -0
  4. package/.spago/pathy/v9.0.0/.editorconfig +13 -0
  5. package/dist/fluid/fluid/dataset/methane-emissions.fld +123 -0
  6. package/dist/fluid/fluid/dataset/mini-non-renewables.fld +3 -0
  7. package/dist/fluid/fluid/dataset/mini-renewables.fld +6 -0
  8. package/dist/fluid/fluid/dataset/non-renewables.fld +67 -0
  9. package/dist/fluid/fluid/dataset/renewables-new.fld +301 -0
  10. package/dist/fluid/fluid/dataset/renewables-restricted.fld +139 -0
  11. package/dist/fluid/fluid/dataset/renewables.fld +100 -0
  12. package/dist/fluid/fluid/example/arithmetic.fld +1 -0
  13. package/dist/fluid/fluid/example/array.fld +2 -0
  14. package/dist/fluid/fluid/example/compose.fld +2 -0
  15. package/dist/fluid/fluid/example/desugar/list-comp-1.fld +1 -0
  16. package/dist/fluid/fluid/example/desugar/list-comp-10.fld +1 -0
  17. package/dist/fluid/fluid/example/desugar/list-comp-2.fld +1 -0
  18. package/dist/fluid/fluid/example/desugar/list-comp-3.fld +1 -0
  19. package/dist/fluid/fluid/example/desugar/list-comp-4.fld +1 -0
  20. package/dist/fluid/fluid/example/desugar/list-comp-5.fld +1 -0
  21. package/dist/fluid/fluid/example/desugar/list-comp-6.fld +1 -0
  22. package/dist/fluid/fluid/example/desugar/list-comp-7.fld +1 -0
  23. package/dist/fluid/fluid/example/desugar/list-comp-8.fld +1 -0
  24. package/dist/fluid/fluid/example/desugar/list-comp-9.fld +1 -0
  25. package/dist/fluid/fluid/example/desugar/list-enum.fld +1 -0
  26. package/dist/fluid/fluid/example/dict-list-comp.fld +1 -0
  27. package/dist/fluid/fluid/example/dicts.fld +10 -0
  28. package/dist/fluid/fluid/example/div-mod-quot-rem.fld +4 -0
  29. package/dist/fluid/fluid/example/factorial.fld +6 -0
  30. package/dist/fluid/fluid/example/filter.fld +1 -0
  31. package/dist/fluid/fluid/example/first-class-constr.fld +1 -0
  32. package/dist/fluid/fluid/example/flatten.fld +12 -0
  33. package/dist/fluid/fluid/example/foldr-sumSquares.fld +1 -0
  34. package/dist/fluid/fluid/example/graphics/background.fld +7 -0
  35. package/dist/fluid/fluid/example/graphics/grouped-bar-chart.fld +9 -0
  36. package/dist/fluid/fluid/example/graphics/line-chart.fld +13 -0
  37. package/dist/fluid/fluid/example/graphics/stacked-bar-chart.fld +3 -0
  38. package/dist/fluid/fluid/example/include-input-into-output.fld +1 -0
  39. package/dist/fluid/fluid/example/length.fld +1 -0
  40. package/dist/fluid/fluid/example/lexicalScoping.fld +3 -0
  41. package/dist/fluid/fluid/example/lib/some-constants.fld +1 -0
  42. package/dist/fluid/fluid/example/linked-inputs/energyscatter.fld +24 -0
  43. package/dist/fluid/fluid/example/linked-inputs/mini-energyscatter.fld +30 -0
  44. package/dist/fluid/fluid/example/linked-outputs/convolution-data.fld +5 -0
  45. package/dist/fluid/fluid/example/linked-outputs/convolution.fld +12 -0
  46. package/dist/fluid/fluid/example/linked-outputs/line-chart.fld +15 -0
  47. package/dist/fluid/fluid/example/linked-outputs/moving-average.fld +19 -0
  48. package/dist/fluid/fluid/example/linked-outputs/pairs-data.fld +1 -0
  49. package/dist/fluid/fluid/example/linked-outputs/pairs.fld +2 -0
  50. package/dist/fluid/fluid/example/lookup.fld +15 -0
  51. package/dist/fluid/fluid/example/map.fld +1 -0
  52. package/dist/fluid/fluid/example/mergeSort.fld +22 -0
  53. package/dist/fluid/fluid/example/normalise.fld +3 -0
  54. package/dist/fluid/fluid/example/nub.fld +1 -0
  55. package/dist/fluid/fluid/example/pattern-match.fld +12 -0
  56. package/dist/fluid/fluid/example/percent.fld +1 -0
  57. package/dist/fluid/fluid/example/plot/methane.fld +14 -0
  58. package/dist/fluid/fluid/example/plot/non-renewables.fld +22 -0
  59. package/dist/fluid/fluid/example/range.fld +4 -0
  60. package/dist/fluid/fluid/example/record-lookup.fld +3 -0
  61. package/dist/fluid/fluid/example/records.expect.fld +0 -0
  62. package/dist/fluid/fluid/example/records.fld +11 -0
  63. package/dist/fluid/fluid/example/reverse.fld +1 -0
  64. package/dist/fluid/fluid/example/scratchpad.fld +6 -0
  65. package/dist/fluid/fluid/example/slicing/add.expect.fld +1 -0
  66. package/dist/fluid/fluid/example/slicing/add.fld +1 -0
  67. package/dist/fluid/fluid/example/slicing/array/array.expect.fld +2 -0
  68. package/dist/fluid/fluid/example/slicing/array/array.fld +4 -0
  69. package/dist/fluid/fluid/example/slicing/array/dims.expect.fld +3 -0
  70. package/dist/fluid/fluid/example/slicing/array/dims.fld +3 -0
  71. package/dist/fluid/fluid/example/slicing/array/lookup.expect.fld +3 -0
  72. package/dist/fluid/fluid/example/slicing/array/lookup.fld +5 -0
  73. package/dist/fluid/fluid/example/slicing/array/renewables.fld +100 -0
  74. package/dist/fluid/fluid/example/slicing/convolution/edgeDetect.expect.fld +1 -0
  75. package/dist/fluid/fluid/example/slicing/convolution/edgeDetect.fld +1 -0
  76. package/dist/fluid/fluid/example/slicing/convolution/emboss-wrap.fld +1 -0
  77. package/dist/fluid/fluid/example/slicing/convolution/emboss.expect.fld +1 -0
  78. package/dist/fluid/fluid/example/slicing/convolution/emboss.fld +1 -0
  79. package/dist/fluid/fluid/example/slicing/convolution/filter/edge-detect.fld +5 -0
  80. package/dist/fluid/fluid/example/slicing/convolution/filter/emboss.fld +5 -0
  81. package/dist/fluid/fluid/example/slicing/convolution/filter/gaussian.fld +5 -0
  82. package/dist/fluid/fluid/example/slicing/convolution/gaussian.expect.fld +1 -0
  83. package/dist/fluid/fluid/example/slicing/convolution/gaussian.fld +1 -0
  84. package/dist/fluid/fluid/example/slicing/convolution/test-image.fld +7 -0
  85. package/dist/fluid/fluid/example/slicing/dict/create.expect.fld +2 -0
  86. package/dist/fluid/fluid/example/slicing/dict/create.fld +1 -0
  87. package/dist/fluid/fluid/example/slicing/dict/difference.expect.fld +4 -0
  88. package/dist/fluid/fluid/example/slicing/dict/difference.fld +3 -0
  89. package/dist/fluid/fluid/example/slicing/dict/disjointUnion.expect.fld +2 -0
  90. package/dist/fluid/fluid/example/slicing/dict/disjointUnion.fld +1 -0
  91. package/dist/fluid/fluid/example/slicing/dict/foldl.expect.fld +3 -0
  92. package/dist/fluid/fluid/example/slicing/dict/foldl.fld +1 -0
  93. package/dist/fluid/fluid/example/slicing/dict/get.expect.fld +5 -0
  94. package/dist/fluid/fluid/example/slicing/dict/get.fld +3 -0
  95. package/dist/fluid/fluid/example/slicing/dict/intersectionWith.expect.fld +5 -0
  96. package/dist/fluid/fluid/example/slicing/dict/intersectionWith.fld +4 -0
  97. package/dist/fluid/fluid/example/slicing/dict/map.expect.fld +8 -0
  98. package/dist/fluid/fluid/example/slicing/dict/map.fld +5 -0
  99. package/dist/fluid/fluid/example/slicing/dict/match.expect.fld +6 -0
  100. package/dist/fluid/fluid/example/slicing/dict/match.fld +5 -0
  101. package/dist/fluid/fluid/example/slicing/divide.expect.fld +1 -0
  102. package/dist/fluid/fluid/example/slicing/divide.fld +1 -0
  103. package/dist/fluid/fluid/example/slicing/dtw/average-series.expect.fld +8 -0
  104. package/dist/fluid/fluid/example/slicing/dtw/average-series.fld +8 -0
  105. package/dist/fluid/fluid/example/slicing/dtw/compute-dtw.expect.fld +6 -0
  106. package/dist/fluid/fluid/example/slicing/dtw/compute-dtw.fld +6 -0
  107. package/dist/fluid/fluid/example/slicing/explained.expect.fld +1 -0
  108. package/dist/fluid/fluid/example/slicing/explained.fld +1 -0
  109. package/dist/fluid/fluid/example/slicing/filter.expect.fld +4 -0
  110. package/dist/fluid/fluid/example/slicing/filter.fld +6 -0
  111. package/dist/fluid/fluid/example/slicing/intersperse-1.expect.fld +4 -0
  112. package/dist/fluid/fluid/example/slicing/intersperse-2.expect.fld +4 -0
  113. package/dist/fluid/fluid/example/slicing/intersperse.fld +5 -0
  114. package/dist/fluid/fluid/example/slicing/length.expect.fld +1 -0
  115. package/dist/fluid/fluid/example/slicing/length.fld +1 -0
  116. package/dist/fluid/fluid/example/slicing/linked-outputs/bar-chart-line-chart.expect.fld +0 -0
  117. package/dist/fluid/fluid/example/slicing/linked-outputs/bar-chart-line-chart.fld +29 -0
  118. package/dist/fluid/fluid/example/slicing/linked-outputs/stacked-bar-scatter-plot.expect.fld +0 -0
  119. package/dist/fluid/fluid/example/slicing/linked-outputs/stacked-bar-scatter-plot.fld +39 -0
  120. package/dist/fluid/fluid/example/slicing/list-comp-1.expect.fld +6 -0
  121. package/dist/fluid/fluid/example/slicing/list-comp-2.expect.fld +6 -0
  122. package/dist/fluid/fluid/example/slicing/list-comp.fld +8 -0
  123. package/dist/fluid/fluid/example/slicing/lookup.expect.fld +6 -0
  124. package/dist/fluid/fluid/example/slicing/lookup.fld +14 -0
  125. package/dist/fluid/fluid/example/slicing/map.expect.fld +1 -0
  126. package/dist/fluid/fluid/example/slicing/map.fld +1 -0
  127. package/dist/fluid/fluid/example/slicing/matrix-update.expect.fld +5 -0
  128. package/dist/fluid/fluid/example/slicing/matrix-update.fld +10 -0
  129. package/dist/fluid/fluid/example/slicing/multiply.expect.fld +1 -0
  130. package/dist/fluid/fluid/example/slicing/multiply.fld +1 -0
  131. package/dist/fluid/fluid/example/slicing/nth.expect.fld +1 -0
  132. package/dist/fluid/fluid/example/slicing/nth.fld +1 -0
  133. package/dist/fluid/fluid/example/slicing/output-not-source.expect.fld +2 -0
  134. package/dist/fluid/fluid/example/slicing/output-not-source.fld +1 -0
  135. package/dist/fluid/fluid/example/slicing/section-5-example-1.expect.fld +10 -0
  136. package/dist/fluid/fluid/example/slicing/section-5-example-2.expect.fld +10 -0
  137. package/dist/fluid/fluid/example/slicing/section-5-example-3.expect.fld +10 -0
  138. package/dist/fluid/fluid/example/slicing/section-5-example.fld +14 -0
  139. package/dist/fluid/fluid/example/slicing/zeros-1.expect.fld +3 -0
  140. package/dist/fluid/fluid/example/slicing/zeros-2.expect.fld +3 -0
  141. package/dist/fluid/fluid/example/slicing/zeros.fld +4 -0
  142. package/dist/fluid/fluid/example/slicing/zipWith-1.expect.fld +4 -0
  143. package/dist/fluid/fluid/example/slicing/zipWith.fld +4 -0
  144. package/dist/fluid/fluid/example/text-viz/explainable-table.fld +7 -0
  145. package/dist/fluid/fluid/example/text-viz/fake-probabilities.fld +3 -0
  146. package/dist/fluid/fluid/example/text-viz/figure-spm-4.fld +42 -0
  147. package/dist/fluid/fluid/example/text-viz/left-barchart-table.fld +5 -0
  148. package/dist/fluid/fluid/example/text-viz/likelihoods.fld +9 -0
  149. package/dist/fluid/fluid/example/text-viz/right-barchart-table.fld +5 -0
  150. package/dist/fluid/fluid/example/text-viz/table-spm-1.fld +30 -0
  151. package/dist/fluid/fluid/lib/convolution.fld +16 -0
  152. package/dist/fluid/fluid/lib/dtw.fld +47 -0
  153. package/dist/fluid/fluid/lib/fnum.fld +22 -0
  154. package/dist/fluid/fluid/lib/graphics.fld +221 -0
  155. package/dist/fluid/fluid/lib/prelude.fld +266 -0
  156. package/dist/fluid/fluid/lib/text-viz.fld +18 -0
  157. package/dist/fluid/fluid.mjs +28285 -0
  158. package/package.json +1 -1
  159. package/.spago/node-process/v11.0.0/.eslintrc.json +0 -29
  160. package/.spago/node-process/v11.0.0/.gitignore +0 -8
  161. package/.spago/node-process/v11.1.0/.eslintrc.json +0 -29
  162. package/.spago/node-process/v11.1.0/.gitignore +0 -8
  163. package/.spago/node-process/v11.2.0/.eslintrc.json +0 -29
  164. package/.spago/node-process/v11.2.0/.gitignore +0 -8
  165. package/.spago/optparse/v6.0.0/.gitignore +0 -8
  166. package/.spago/optparse/v6.0.0/.npmrc +0 -1
  167. /package/.spago/{argonaut-codecs → pathy}/v9.0.0/.gitignore +0 -0
  168. /package/.spago/{argonaut-codecs → pathy}/v9.0.0/.tidyrc.json +0 -0
@@ -0,0 +1,11 @@
1
+ let f {fst: x, snd: []} = x;
2
+ f {fst: x, snd: (y: xs)} = y;
3
+
4
+ g {} = 7
5
+ in {
6
+ a: f {snd: [], fst: 2},
7
+ b: f {fst: 4, snd: [6, 7]},
8
+ c: g {unused: 22},
9
+ d: [ x | {fst: x, snd: []} <- [{fst: 5, third: "hello", snd: []}, {fst: 6, snd: [7, 8]}] ],
10
+ e: {a: 4, h: {i: 6, j: 7}}.h.j
11
+ }
@@ -0,0 +1 @@
1
+ reverse [1, 2]
@@ -0,0 +1,6 @@
1
+ let nth2 i j xs = nth (i - 1) (nth (j - 1) xs) in
2
+ let xs = [[1, 4, 8],
3
+ [3, 2, 17],
4
+ [0, 14, 6]];
5
+ ys = [| nth2 i j xs | (i, j) in (3, 3) |]
6
+ in ys ! (3, 2)
@@ -0,0 +1 @@
1
+ ⸨5⸩ + (⸨0⸩ + ⸨3⸩)
@@ -0,0 +1 @@
1
+ 5 + (0 + 3)
@@ -0,0 +1,2 @@
1
+ let xs = [[1, 4, 8], [3, _2_, 17], [0, 14, 6]]
2
+ in [| nth2 i j xs | (i, j) in (3, 3) |]
@@ -0,0 +1,4 @@
1
+ let xs = [[1, 4, 8],
2
+ [3, 2, 17],
3
+ [0, 14, 6]]
4
+ in [| nth2 i j xs | (i, j) in (3, 3) |]
@@ -0,0 +1,3 @@
1
+ let (x, y) = ⸨(⸨3⸩, ⸨3⸩)⸩;
2
+ yss = ⸨[|0|(i, j) in (x, y)|]⸩ in
3
+ dims yss
@@ -0,0 +1,3 @@
1
+ let (x, y) = (3, 3);
2
+ yss = [| 0 | (i, j) in (x, y) |]
3
+ in dims yss
@@ -0,0 +1,3 @@
1
+ let xs = [[1, 4, 8], [3, 2, 17], [0, ⸨14⸩, 6]];
2
+ ys = [|nth2 i j xs|(i, j) in (3, 3)|] in
3
+ ys ! ((3, 2))
@@ -0,0 +1,5 @@
1
+ let xs = [[1, 4, 8],
2
+ [3, 2, 17],
3
+ [0, 14, 6]];
4
+ ys = [| nth2 i j xs | (i, j) in (3, 3) |]
5
+ in ys ! (3, 2)
@@ -0,0 +1,100 @@
1
+ -- The original dataset sometimes has '~0' instead of '0'.
2
+ -- Including only 3 countries here. Also, have reduced the Hydro value for China 2015 from 296 to 96 (ouch)
3
+ -- to make the charts fit nicely into grant proposal. Fix this once proposal submitted!
4
+ [
5
+ -- https://www.ren21.net/wp-content/uploads/2019/05/GSR2014_Full-Report_English.pdf
6
+ { year: 2013, country: "China", energyType: "Bio", output: 6.2 },
7
+ { year: 2013, country: "China", energyType: "Hydro", output: 260 },
8
+ { year: 2013, country: "China", energyType: "Solar", output: 19.9 },
9
+ { year: 2013, country: "China", energyType: "Wind", output: 91 },
10
+
11
+ { year: 2013, country: "USA", energyType: "Bio", output: 15.8 },
12
+ { year: 2013, country: "USA", energyType: "Hydro", output: 78 },
13
+ { year: 2013, country: "USA", energyType: "Solar", output: 12.1 },
14
+ { year: 2013, country: "USA", energyType: "Wind", output: 61 },
15
+
16
+ { year: 2013, country: "Germany", energyType: "Bio", output: 8.1 },
17
+ { year: 2013, country: "Germany", energyType: "Hydro", output: 5.6 },
18
+ { year: 2013, country: "Germany", energyType: "Solar", output: 36 },
19
+ { year: 2013, country: "Germany", energyType: "Wind", output: 34 },
20
+
21
+ -- https://www.ren21.net/wp-content/uploads/2019/05/GSR2015_Full-Report_English.pdf
22
+ { year: 2014, country: "China", energyType: "Bio", output: 10 },
23
+ { year: 2014, country: "China", energyType: "Hydro", output: 280 },
24
+ { year: 2014, country: "China", energyType: "Solar", output: 28 },
25
+ { year: 2014, country: "China", energyType: "Wind", output: 115 },
26
+
27
+ { year: 2014, country: "USA", energyType: "Bio", output: 16.1 },
28
+ { year: 2014, country: "USA", energyType: "Hydro", output: 79 },
29
+ { year: 2014, country: "USA", energyType: "Solar", output: 18 },
30
+ { year: 2014, country: "USA", energyType: "Wind", output: 66 },
31
+
32
+ { year: 2014, country: "Germany", energyType: "Bio", output: 8.8 },
33
+ { year: 2014, country: "Germany", energyType: "Hydro", output: 5.6 },
34
+ { year: 2014, country: "Germany", energyType: "Solar", output: 38 },
35
+ { year: 2014, country: "Germany", energyType: "Wind", output: 39 },
36
+
37
+ -- https://www.ren21.net/gsr-2016/00-Reference-Tables.php
38
+ { year: 2015, country: "China", energyType: "Bio", output: 10.3 },
39
+ { year: 2015, country: "China", energyType: "Hydro", output: 96 },
40
+ { year: 2015, country: "China", energyType: "Solar", output: 44 },
41
+ { year: 2015, country: "China", energyType: "Wind", output: 145 },
42
+
43
+ { year: 2015, country: "USA", energyType: "Bio", output: 16.7 },
44
+ { year: 2015, country: "USA", energyType: "Hydro", output: 80 },
45
+ { year: 2015, country: "USA", energyType: "Solar", output: 26 },
46
+ { year: 2015, country: "USA", energyType: "Wind", output: 74 },
47
+
48
+ { year: 2015, country: "Germany", energyType: "Bio", output: 7.1 },
49
+ { year: 2015, country: "Germany", energyType: "Hydro", output: 5.6 },
50
+ { year: 2015, country: "Germany", energyType: "Solar", output: 40 },
51
+ { year: 2015, country: "Germany", energyType: "Wind", output: 45 },
52
+
53
+ -- https://www.ren21.net/gsr-2017/pages/tables/tables/#table-R2
54
+ { year: 2016, country: "China", energyType: "Bio", output: 12 },
55
+ { year: 2016, country: "China", energyType: "Hydro", output: 305 },
56
+ { year: 2016, country: "China", energyType: "Solar", output: 77 },
57
+ { year: 2016, country: "China", energyType: "Wind", output: 169 },
58
+
59
+ { year: 2016, country: "USA", energyType: "Bio", output: 16.8 },
60
+ { year: 2016, country: "USA", energyType: "Hydro", output: 80 },
61
+ { year: 2016, country: "USA", energyType: "Solar", output: 41 },
62
+ { year: 2016, country: "USA", energyType: "Wind", output: 82 },
63
+
64
+ { year: 2016, country: "Germany", energyType: "Bio", output: 7.6 },
65
+ { year: 2016, country: "Germany", energyType: "Hydro", output: 5.6 },
66
+ { year: 2016, country: "Germany", energyType: "Solar", output: 41 },
67
+ { year: 2016, country: "Germany", energyType: "Wind", output: 50 },
68
+
69
+ -- https://www.ren21.net/gsr-2018/pages/tables/tables/#Table_R2
70
+ { year: 2017, country: "China", energyType: "Bio", output: 14.9 },
71
+ { year: 2017, country: "China", energyType: "Hydro", output: 313 },
72
+ { year: 2017, country: "China", energyType: "Solar", output: 131 },
73
+ { year: 2017, country: "China", energyType: "Wind", output: 188},
74
+
75
+ { year: 2017, country: "USA", energyType: "Bio", output: 16.7 },
76
+ { year: 2017, country: "USA", energyType: "Hydro", output: 80 },
77
+ { year: 2017, country: "USA", energyType: "Solar", output: 51 },
78
+ { year: 2017, country: "USA", energyType: "Wind", output: 89 },
79
+
80
+ { year: 2017, country: "Germany", energyType: "Bio", output: 8 },
81
+ { year: 2017, country: "Germany", energyType: "Hydro", output: 5.6 },
82
+ { year: 2017, country: "Germany", energyType: "Solar", output: 42 },
83
+ { year: 2017, country: "Germany", energyType: "Wind", output: 56 },
84
+
85
+ -- https://www.ren21.net/gsr-2019/tables/table_02/table_02/
86
+ { year: 2018, country: "China", energyType: "Bio", output: 17.8 },
87
+ { year: 2018, country: "China", energyType: "Hydro", output: 322 },
88
+ { year: 2018, country: "China", energyType: "Solar", output: 176 },
89
+ { year: 2018, country: "China", energyType: "Wind", output: 210 },
90
+
91
+ { year: 2018, country: "USA", energyType: "Bio", output: 16.2 },
92
+ { year: 2018, country: "USA", energyType: "Hydro", output: 80 },
93
+ { year: 2018, country: "USA", energyType: "Solar", output: 62 },
94
+ { year: 2018, country: "USA", energyType: "Wind", output: 96 },
95
+
96
+ { year: 2018, country: "Germany", energyType: "Bio", output: 8.4 },
97
+ { year: 2018, country: "Germany", energyType: "Hydro", output: 5.6 },
98
+ { year: 2018, country: "Germany", energyType: "Solar", output: 45 },
99
+ { year: 2018, country: "Germany", energyType: "Wind", output: 59 }
100
+ ]
@@ -0,0 +1 @@
1
+ convolve inputImage filter extend
@@ -0,0 +1 @@
1
+ convolve inputImage filter extend
@@ -0,0 +1 @@
1
+ convolve inputImage filter wrap
@@ -0,0 +1 @@
1
+ convolve inputImage filter zero
@@ -0,0 +1 @@
1
+ convolve inputImage filter zero
@@ -0,0 +1,5 @@
1
+ let filter =
2
+ let edgeDetect = [[0, 1, 0],
3
+ [1, -4, 1],
4
+ [0, 1, 0]] in
5
+ [| nth2 i j edgeDetect | (i, j) in (3, 3) |];
@@ -0,0 +1,5 @@
1
+ let filter =
2
+ let emboss = [[-2, -1, 0],
3
+ [-1, 1, 1],
4
+ [ 0, 1, 2]] in
5
+ [| nth2 i j emboss | (i, j) in (3, 3) |];
@@ -0,0 +1,5 @@
1
+ let filter =
2
+ let gaussian = [[1, 4, 1],
3
+ [4, 16, 4],
4
+ [1, 4, 1]] in
5
+ [| nth2 i j gaussian | (i, j) in (3, 3) |];
@@ -0,0 +1 @@
1
+ convolve inputImage filter zero
@@ -0,0 +1 @@
1
+ convolve inputImage filter zero
@@ -0,0 +1,7 @@
1
+ let inputImage =
2
+ let image = [[15, 13, 6, 9, 16],
3
+ [12, 5, 15, 4, 13],
4
+ [14, 9, 20, 8, 1],
5
+ [ 4, 10, 3, 7, 19],
6
+ [ 3, 11, 15, 2, 9]] in
7
+ [| nth2 i j image | (i, j) in (5, 5) |];
@@ -0,0 +1,2 @@
1
+ {["a"] : 5,
2
+ [⸨"a"⸩ ++ ⸨"b"⸩] : 6}
@@ -0,0 +1 @@
1
+ { ["a"]: 5, ["a" ++ "b"]: 6 }
@@ -0,0 +1,4 @@
1
+ let e = ⸨{["a"] : 5,
2
+ ["a" ++ "b"] : 6}⸩;
3
+ f = ⸨{["ab"] : 12}⸩ in
4
+ dict_difference e f
@@ -0,0 +1,3 @@
1
+ let e = { ["a"]: 5, ["a" ++ "b"]: 6 };
2
+ f = { ["ab"]: 12 }
3
+ in dict_difference e f
@@ -0,0 +1,2 @@
1
+ {⸨a⸩ : 5,
2
+ b : 6} `dict_disjointUnion` {c : ⸨7⸩}
@@ -0,0 +1 @@
1
+ { a: 5, b: 6 } `dict_disjointUnion` { c: 7 }
@@ -0,0 +1,3 @@
1
+ foldl (*) 1 (dict_foldl concat2 [] {a : [5, 6],
2
+ b : [⸨0⸩, 10],
3
+ c : [3, 4]})
@@ -0,0 +1 @@
1
+ foldl (*) 1 (dict_foldl concat2 [] { a: [5, 6], b: [0, 10], c: [3, 4] })
@@ -0,0 +1,5 @@
1
+ let d = {a : 5,
2
+ ["a" ++ "b"] : {fst : 6,
3
+ snd : ⸨0⸩}};
4
+ a = "a" in
5
+ d.a * d.[(a ++ "b")].snd
@@ -0,0 +1,3 @@
1
+ let d = { a: 5, ["a" ++ "b"]: {fst: 6, snd: 0} };
2
+ a = "a"
3
+ in d.a * d.[a ++ "b"].snd
@@ -0,0 +1,5 @@
1
+ dict_intersectionWith (let x = ⸨2⸩ in
2
+ (fun n m = (n + m) * x)) {a : 5,
3
+ b : ⸨6⸩,
4
+ c : ⸨3⸩} {b : ⸨-6⸩,
5
+ c : ⸨7⸩}
@@ -0,0 +1,4 @@
1
+ dict_intersectionWith
2
+ (let x = 2 in (fun n m = (( n + m ) * x )) )
3
+ { a: 5, b: 6, c: 3 }
4
+ { b: -6, c: 7 }
@@ -0,0 +1,8 @@
1
+ let incHead = let x = ⸨3⸩ in
2
+ (fun xs = head xs + x);
3
+ d = {a : [⸨5⸩, 6],
4
+ b : [⸨9⸩, 10],
5
+ c : [3, 4]};
6
+ e = {c : []};
7
+ d' = dict_map incHead (dict_difference d e) in
8
+ d'.a + d'.b
@@ -0,0 +1,5 @@
1
+ let incHead = let x = 3 in fun xs -> head xs + x;
2
+ d = { a: [5, 6], b: [9, 10], c: [3, 4] };
3
+ e = { c: [] };
4
+ d' = dict_map incHead (dict_difference d e)
5
+ in d'.a + d'.b
@@ -0,0 +1,6 @@
1
+ let f {fst : x,
2
+ snd : []} = x;
3
+ f {fst : x,
4
+ snd : (y : ys)} = y in
5
+ ⸨{⸨a⸩ : f {snd : [],
6
+ fst : ⸨2⸩}}⸩
@@ -0,0 +1,5 @@
1
+ let f {fst: x, snd: []} = x;
2
+ f {fst: x, snd: (y: ys)} = y
3
+ in {
4
+ a: f {snd: [], fst: 2 }
5
+ }
@@ -0,0 +1 @@
1
+ ⸨362⸩ / ⸨9⸩
@@ -0,0 +1 @@
1
+ 362 / 9
@@ -0,0 +1,8 @@
1
+ let d x y = (x - y) * (x - y) in
2
+ let avg x y = (x + y) / ⸨2⸩ in
3
+ let avgSeq seq1 seq2 f = map (fun (i, j) = f (nth (i - 1) seq1) (nth (j - 1) seq2)) in
4
+ let seq1 = [3, ⸨1⸩, 2, 2, 1];
5
+ seq2 = [2, 0, ⸨0⸩, 3, 3, 1, 0];
6
+ window = 2;
7
+ (costs, matched) = computeDTW seq1 seq2 d window in
8
+ avgSeq seq1 seq2 avg matched
@@ -0,0 +1,8 @@
1
+ let d x y = (x - y) * (x - y);
2
+ let avg x y = (x + y) / 2;
3
+ let avgSeq seq1 seq2 f = map (fun (i, j) -> f (nth (i - 1) seq1) (nth (j - 1) seq2));
4
+ let seq1 = [3,1,2,2,1];
5
+ seq2 = [2,0,0,3,3,1,0];
6
+ window = 2;
7
+ (costs, matched) = computeDTW seq1 seq2 d window
8
+ in avgSeq seq1 seq2 avg matched
@@ -0,0 +1,6 @@
1
+ let d x y = (x - y) * (x - y) in
2
+ let seq1 = ⸨[⸩ ⸨3⸩ ⸨,⸩ ⸨1⸩ ⸨,⸩ 2 ⸨,⸩ 2 ⸨,⸩ 1 ⸨]⸩;
3
+ seq2 = ⸨[⸩ ⸨2⸩ ⸨,⸩ ⸨0⸩ ⸨,⸩ ⸨0⸩ ⸨,⸩ 3 ⸨,⸩ 3 ⸨,⸩ 1 ⸨,⸩ 0 ⸨]⸩;
4
+ window = ⸨2⸩;
5
+ (costs, matched) = computeDTW seq1 seq2 d window in
6
+ matched
@@ -0,0 +1,6 @@
1
+ let d x y = (x - y) * (x - y) in
2
+ let seq1 = [3, 1, 2, 2, 1];
3
+ seq2 = [2, 0, 0, 3, 3, 1, 0];
4
+ window = 2;
5
+ (costs, matched) = computeDTW seq1 seq2 d window in
6
+ matched
@@ -0,0 +1 @@
1
+ @ (1 + 1) @
@@ -0,0 +1,4 @@
1
+ let filter p [] = [];
2
+ filter p (x : xs) = let ys = filter p xs in
3
+ if p x then ⸨(x : ys)⸩ else ys in
4
+ filter ((<) ⸨5⸩) [⸨8⸩, 4, 7, 3]
@@ -0,0 +1,6 @@
1
+ let filter p [] = [];
2
+ filter p (x : xs) =
3
+ let ys = filter p xs in
4
+ if p x then x : ys else ys
5
+ in
6
+ filter ((<) 5) [8, 4, 7, 3]
@@ -0,0 +1,4 @@
1
+ let intersperse [] _ = [];
2
+ intersperse [x] _ = [x];
3
+ intersperse (x : (y : ys)) sep = (x : ⸨(sep : intersperse ((y : ys)) sep)⸩) in
4
+ intersperse ⸨[⸩ 1 ⸨,⸩ 2, 3] 0
@@ -0,0 +1,4 @@
1
+ let intersperse [] _ = [];
2
+ intersperse [x] _ = [x];
3
+ intersperse (x : (y : ys)) sep = ⸨(x : (sep : intersperse (⸨(y : ys)⸩) sep))⸩ in
4
+ intersperse ⸨[⸩ 1 ⸨,⸩ 2 ⸨,⸩ 3] 0
@@ -0,0 +1,5 @@
1
+ let intersperse [] _ = [];
2
+ intersperse [x] _ = [x];
3
+ intersperse (x : y : ys) sep = x : sep : intersperse (y : ys) sep
4
+ in
5
+ intersperse [1, 2, 3] 0
@@ -0,0 +1 @@
1
+ length ⸨[⸩ 1 ⸨,⸩ 2 ⸨,⸩ 3 ⸨,⸩ 4 ⸨,⸩ 5 ⸨]⸩
@@ -0,0 +1 @@
1
+ length [1, 2, 3, 4, 5]
@@ -0,0 +1,29 @@
1
+ MultiView {
2
+ barChart:
3
+ let totalFor c rows =
4
+ sum [ row.output | row <- rows, row.country == c ];
5
+ let data2015 = [ row | row <- renewables, row.year == 2015 ];
6
+ countryData = [ { x: c, bars: [ { y: "output", z: totalFor c data2015 } ] }
7
+ | c <- ["China", "USA", "Germany"] ]
8
+ in BarChart {
9
+ caption: "Total output by country",
10
+ size: { width: 275, height: 185 },
11
+ stackedBars: countryData
12
+ },
13
+ lineChart:
14
+ let series type country = [
15
+ { x: row.year, y: row.output }
16
+ | year <- [2013..2018], row <- renewables,
17
+ row.year == year, row.energyType == type, row.country == country
18
+ ] in LineChart {
19
+ tickLabels: { x: Default, y: Default },
20
+ size: { width: 330, height: 285 },
21
+ caption: "Output of USA relative to China",
22
+ plots: [
23
+ LinePlot { name: type, points: plot }
24
+ | type <- ["Bio", "Hydro", "Solar", "Wind"],
25
+ let plot = zipWith (fun p1 p2 -> { x: p1.x, y: p1.y / p2.y })
26
+ (series type "USA") (series type "China")
27
+ ]
28
+ }
29
+ }
@@ -0,0 +1,39 @@
1
+ MultiView {
2
+ stackedBarChart:
3
+ let totalFor year country rows =
4
+ let [ row ] = [ row | row <- rows, row.year == year, row.country == country ]
5
+ in row.nuclearOut + row.gasOut + row.coalOut + row.petrolOut;
6
+ let stack year = [ { y: country, z: totalFor year country nonRenewables }
7
+ | country <- ["BRA", "EGY", "IND", "JPN"] ]
8
+ in BarChart {
9
+ caption: "Non-renewables by country",
10
+ size: { width: 275, height: 185 },
11
+ stackedBars: [ { x: numToStr year, bars: stack year }
12
+ | year <- [2014..2018] ]
13
+ },
14
+ scatterPlot:
15
+ let isCountry name x = name == x.country;
16
+ isYear year x = year == x.year;
17
+
18
+ let plot year countries =
19
+ let rens = filter (isYear year) renewables;
20
+ nonRens = filter (isYear year) nonRenewables;
21
+ let plotCountry country =
22
+ let rens' = filter (isCountry country) rens;
23
+ rensOut = sum (map (fun x -> x.output) rens');
24
+ rensCap = sum (map (fun x -> x.capacity) rens');
25
+ x = head (filter (isCountry country) nonRens);
26
+ nonRensCap = x.nuclearCap + x.petrolCap + x.gasCap + x.coalCap
27
+ in {
28
+ x: rensCap / (rensCap + nonRensCap),
29
+ y: (rensOut + x.nuclearOut) / (rensCap + x.nuclearCap)
30
+ }
31
+ in map plotCountry countries
32
+
33
+ in ScatterPlot {
34
+ caption: "Clean energy efficiency vs proportion of renewable energy capacity",
35
+ points: plot 2018 [ "BRA", "CHN", "DEU", "FRA", "EGY", "IND", "JPN", "MEX", "NGA", "USA" ],
36
+ xlabel: "Renewables/TotalEnergyCap",
37
+ ylabel: "Clean Capacity Factor"
38
+ }
39
+ }
@@ -0,0 +1,6 @@
1
+ let data = [{year : 2013, country : "China", energyType : "Bio", output : 6.2}
2
+ , {year : 2013, country : "China", energyType : ⸨"Hydro"⸩, output : 260}
3
+ , {year : 2013, country : "China", energyType : "Solar", output : 19.9}
4
+ , {year : 2013, country : "China", energyType : "Wind", output : 91}
5
+ ] in
6
+ ⸨[row.output|type <- ["Bio", ⸨"Hydro"⸩, "Solar", "Wind"], row <- data, row.energyType == type]⸩
@@ -0,0 +1,6 @@
1
+ let data = [{year : 2013, country : "China", energyType : "Bio", output : 6.2}
2
+ , {year : 2013, country : "China", energyType : "Hydro", output : 260}
3
+ , {year : 2013, country : "China", energyType : ⸨"Solar"⸩, output : 19.9}
4
+ , {year : 2013, country : "China", energyType : "Wind", output : 91}
5
+ ] in
6
+ ⸨[row.output|type <- ["Bio", "Hydro", ⸨"Solar"⸩, "Wind"], row <- data, row.energyType == type]⸩
@@ -0,0 +1,8 @@
1
+ let data = [
2
+ { year: 2013, country: "China", energyType: "Bio", output: 6.2 },
3
+ { year: 2013, country: "China", energyType: "Hydro", output: 260 },
4
+ { year: 2013, country: "China", energyType: "Solar", output: 19.9 },
5
+ { year: 2013, country: "China", energyType: "Wind", output: 91 }
6
+ ] in
7
+ [ row.output | type <- ["Bio", "Hydro", "Solar", "Wind"],
8
+ row <- data, row.energyType == type ]
@@ -0,0 +1,6 @@
1
+ let lookup k (Empty) = None;
2
+ lookup k (NonEmpty t1 (key, val) t2) = match compare k key as
3
+ {(LT) -> lookup k t1;
4
+ (EQ) -> ⸨Some val⸩;
5
+ (GT) -> lookup k t2} in
6
+ lookup ⸨6⸩ (NonEmpty (NonEmpty (Empty) ((3, "USA")) (Empty)) ((4, "China")) (NonEmpty (⸨NonEmpty (Empty) (⸨(⸨6⸩, "Germany")⸩) (Empty)⸩) ((7, "UK")) (Empty)))
@@ -0,0 +1,14 @@
1
+ let lookup k Empty = None;
2
+ lookup k (NonEmpty t1 (key, val) t2) =
3
+ match compare k key as {
4
+ LT -> lookup k t1;
5
+ EQ -> Some val;
6
+ GT -> lookup k t2
7
+ }
8
+ in
9
+ lookup 6
10
+ (NonEmpty
11
+ (NonEmpty Empty (3, "USA") Empty)
12
+ (4, "China")
13
+ (NonEmpty (NonEmpty Empty (6, "Germany") Empty) (7, "UK") Empty)
14
+ )
@@ -0,0 +1 @@
1
+ map ((+) 2) ⸨[⸩ 3 ⸨,⸩ 4]
@@ -0,0 +1 @@
1
+ map ((+) 2) [3, 4]
@@ -0,0 +1,5 @@
1
+ let image' = [[15, 13, 6, 9, 16], [12, 5, 15, 4, 13], [14, 9, 20, 8, 1], [4, 10, 3, 7, 19], [3, 11, 15, 2, 9]];
2
+ image = [|nth2 i j image'|(i, j) in (5, 5)|];
3
+ index = (2, 2);
4
+ pair = ⸨4000⸩ in
5
+ matrixUpdate image index pair
@@ -0,0 +1,10 @@
1
+ let image' = [[15, 13, 6, 9, 16],
2
+ [12, 5, 15, 4, 13],
3
+ [14, 9, 20, 8, 1],
4
+ [ 4, 10, 3, 7, 19],
5
+ [ 3, 11, 15, 2, 9]];
6
+ image = [| nth2 i j image'
7
+ | (i, j) in (5, 5) |];
8
+ index = (2, 2);
9
+ pair = 4000
10
+ in matrixUpdate image index pair
@@ -0,0 +1 @@
1
+ 5 * (⸨0⸩ * 3)
@@ -0,0 +1 @@
1
+ 5 * (0 * 3)
@@ -0,0 +1 @@
1
+ nth 1 [3, ⸨4⸩, 5]
@@ -0,0 +1 @@
1
+ nth 1 [3, 4, 5]
@@ -0,0 +1,2 @@
1
+ let x = ⸨3⸩ in
2
+ (x, x < ⸨5⸩)
@@ -0,0 +1 @@
1
+ let x = 3 in (x, x < 5)
@@ -0,0 +1,10 @@
1
+ let map f [] = [];
2
+ map f (x : xs) = ⸨(f x : map f xs)⸩ in
3
+ let data = [{energyType : "Bio", output : 6.2}
4
+ , {energyType : ⸨"Hydro"⸩, output : 260}
5
+ , {energyType : "Solar", output : 19.9}
6
+ , {energyType : "Wind", output : 91}
7
+ , {energyType : "Geo", output : 14.4}
8
+ ];
9
+ output = ⸨[row.output|type <- [⸨"Hydro"⸩, "Solar", "Geo"], row <- data, row.energyType == type]⸩ in
10
+ map (fun x = floor ((x / sum output) * 100)) output
@@ -0,0 +1,10 @@
1
+ let map f [] = [];
2
+ map f (x : xs) = (f x : map f xs) in
3
+ let data = [{energyType : "Bio", output : 6.2}
4
+ , {energyType : "Hydro", output : ⸨260⸩}
5
+ , {energyType : "Solar", output : ⸨19.9⸩}
6
+ , {energyType : "Wind", output : 91}
7
+ , {energyType : "Geo", output : ⸨14.4⸩}
8
+ ];
9
+ output = [row.output|type <- ["Hydro", "Solar", "Geo"], row <- data, row.energyType == type] in
10
+ map (fun x = floor ((x / sum output) * ⸨100⸩)) output
@@ -0,0 +1,10 @@
1
+ let map f [] = [];
2
+ map f (x : xs) = ⸨(f x : map f xs)⸩ in
3
+ let data = [{energyType : "Bio", output : 6.2}
4
+ , {energyType : "Hydro", output : 260}
5
+ , {energyType : "Solar", output : 19.9}
6
+ , {energyType : "Wind", output : 91}
7
+ , {energyType : ⸨"Geo"⸩, output : 14.4}
8
+ ];
9
+ output = ⸨[row.output|type <- ["Hydro", "Solar", ⸨"Geo"⸩], row <- data, row.energyType == type]⸩ in
10
+ map (fun x = floor ((x / sum output) * 100)) output