kumi 0.0.25 → 0.0.27

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (223) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +16 -0
  3. data/CLAUDE.md +4 -0
  4. data/README.md +86 -78
  5. data/data/functions/agg/boolean.yaml +6 -2
  6. data/data/functions/agg/numeric.yaml +32 -16
  7. data/data/functions/agg/string.yaml +4 -3
  8. data/data/functions/core/arithmetic.yaml +62 -14
  9. data/data/functions/core/boolean.yaml +12 -6
  10. data/data/functions/core/comparison.yaml +25 -13
  11. data/data/functions/core/constructor.yaml +16 -8
  12. data/data/functions/core/conversion.yaml +32 -0
  13. data/data/functions/core/select.yaml +3 -1
  14. data/data/functions/core/stencil.yaml +14 -5
  15. data/data/functions/core/string.yaml +9 -4
  16. data/data/kernels/javascript/core/coercion.yaml +20 -0
  17. data/data/kernels/ruby/agg/numeric.yaml +1 -1
  18. data/data/kernels/ruby/core/coercion.yaml +20 -0
  19. data/docs/ARCHITECTURE.md +277 -0
  20. data/docs/DEVELOPMENT.md +62 -0
  21. data/docs/FUNCTIONS.md +955 -0
  22. data/docs/SYNTAX.md +8 -0
  23. data/docs/UNSAT_DETECTION.md +83 -0
  24. data/docs/VSCODE_EXTENSION.md +114 -0
  25. data/docs/functions-reference.json +1821 -0
  26. data/golden/array_element/expected/nast.txt +1 -1
  27. data/golden/array_element/expected/schema_ruby.rb +1 -1
  28. data/golden/array_index/expected/nast.txt +7 -7
  29. data/golden/array_index/expected/schema_ruby.rb +1 -1
  30. data/golden/array_operations/expected/nast.txt +2 -2
  31. data/golden/array_operations/expected/schema_ruby.rb +1 -1
  32. data/golden/array_operations/expected/snast.txt +3 -3
  33. data/golden/cascade_logic/expected/schema_ruby.rb +1 -1
  34. data/golden/cascade_logic/expected/snast.txt +2 -2
  35. data/golden/chained_fusion/expected/nast.txt +2 -2
  36. data/golden/chained_fusion/expected/schema_ruby.rb +1 -1
  37. data/golden/decimal_explicit/expected/ast.txt +38 -0
  38. data/golden/decimal_explicit/expected/input_plan.txt +3 -0
  39. data/golden/decimal_explicit/expected/lir_00_unoptimized.txt +30 -0
  40. data/golden/decimal_explicit/expected/lir_01_hoist_scalar_references.txt +30 -0
  41. data/golden/decimal_explicit/expected/lir_02_inlined.txt +44 -0
  42. data/golden/decimal_explicit/expected/lir_03_cse.txt +40 -0
  43. data/golden/decimal_explicit/expected/lir_04_1_loop_fusion.txt +40 -0
  44. data/golden/decimal_explicit/expected/lir_04_loop_invcm.txt +40 -0
  45. data/golden/decimal_explicit/expected/lir_06_const_prop.txt +40 -0
  46. data/golden/decimal_explicit/expected/nast.txt +30 -0
  47. data/golden/decimal_explicit/expected/schema_javascript.mjs +31 -0
  48. data/golden/decimal_explicit/expected/schema_ruby.rb +57 -0
  49. data/golden/decimal_explicit/expected/snast.txt +30 -0
  50. data/golden/decimal_explicit/expected.json +1 -0
  51. data/golden/decimal_explicit/input.json +5 -0
  52. data/golden/decimal_explicit/schema.kumi +14 -0
  53. data/golden/element_arrays/expected/nast.txt +2 -2
  54. data/golden/element_arrays/expected/schema_ruby.rb +1 -1
  55. data/golden/element_arrays/expected/snast.txt +1 -1
  56. data/golden/empty_and_null_inputs/expected/nast.txt +3 -3
  57. data/golden/empty_and_null_inputs/expected/schema_ruby.rb +1 -1
  58. data/golden/function_overload/expected/ast.txt +29 -0
  59. data/golden/function_overload/expected/input_plan.txt +4 -0
  60. data/golden/function_overload/expected/lir_00_unoptimized.txt +18 -0
  61. data/golden/function_overload/expected/lir_01_hoist_scalar_references.txt +18 -0
  62. data/golden/function_overload/expected/lir_02_inlined.txt +20 -0
  63. data/golden/function_overload/expected/lir_03_cse.txt +20 -0
  64. data/golden/function_overload/expected/lir_04_1_loop_fusion.txt +20 -0
  65. data/golden/function_overload/expected/lir_04_loop_invcm.txt +20 -0
  66. data/golden/function_overload/expected/lir_06_const_prop.txt +20 -0
  67. data/golden/function_overload/expected/nast.txt +22 -0
  68. data/golden/function_overload/expected/schema_javascript.mjs +12 -0
  69. data/golden/function_overload/expected/schema_ruby.rb +39 -0
  70. data/golden/function_overload/expected/snast.txt +22 -0
  71. data/golden/function_overload/input.json +8 -0
  72. data/golden/function_overload/schema.kumi +19 -0
  73. data/golden/game_of_life/expected/lir_00_unoptimized.txt +4 -4
  74. data/golden/game_of_life/expected/lir_01_hoist_scalar_references.txt +4 -4
  75. data/golden/game_of_life/expected/lir_02_inlined.txt +16 -16
  76. data/golden/game_of_life/expected/lir_03_cse.txt +20 -16
  77. data/golden/game_of_life/expected/lir_04_1_loop_fusion.txt +20 -16
  78. data/golden/game_of_life/expected/lir_04_loop_invcm.txt +20 -16
  79. data/golden/game_of_life/expected/lir_06_const_prop.txt +20 -16
  80. data/golden/game_of_life/expected/nast.txt +4 -4
  81. data/golden/game_of_life/expected/schema_javascript.mjs +4 -2
  82. data/golden/game_of_life/expected/schema_ruby.rb +5 -3
  83. data/golden/game_of_life/expected/snast.txt +10 -10
  84. data/golden/hash_keys/expected/schema_ruby.rb +1 -1
  85. data/golden/hash_value/expected/nast.txt +1 -1
  86. data/golden/hash_value/expected/schema_ruby.rb +1 -1
  87. data/golden/hash_value/expected/snast.txt +1 -1
  88. data/golden/hierarchical_complex/expected/nast.txt +3 -3
  89. data/golden/hierarchical_complex/expected/schema_ruby.rb +1 -1
  90. data/golden/hierarchical_complex/expected/snast.txt +3 -3
  91. data/golden/inline_rename_scope_leak/expected/nast.txt +3 -3
  92. data/golden/inline_rename_scope_leak/expected/schema_ruby.rb +1 -1
  93. data/golden/input_reference/expected/nast.txt +2 -2
  94. data/golden/input_reference/expected/schema_ruby.rb +1 -1
  95. data/golden/interleaved_fusion/expected/nast.txt +2 -2
  96. data/golden/interleaved_fusion/expected/schema_ruby.rb +1 -1
  97. data/golden/let_inline/expected/nast.txt +4 -4
  98. data/golden/let_inline/expected/schema_ruby.rb +1 -1
  99. data/golden/loop_fusion/expected/nast.txt +1 -1
  100. data/golden/loop_fusion/expected/schema_ruby.rb +1 -1
  101. data/golden/min_reduce_scope/expected/nast.txt +3 -3
  102. data/golden/min_reduce_scope/expected/schema_ruby.rb +1 -1
  103. data/golden/min_reduce_scope/expected/snast.txt +1 -1
  104. data/golden/mixed_dimensions/expected/nast.txt +2 -2
  105. data/golden/mixed_dimensions/expected/schema_ruby.rb +1 -1
  106. data/golden/multirank_hoisting/expected/nast.txt +7 -7
  107. data/golden/multirank_hoisting/expected/schema_ruby.rb +1 -1
  108. data/golden/nested_hash/expected/nast.txt +1 -1
  109. data/golden/nested_hash/expected/schema_ruby.rb +1 -1
  110. data/golden/reduction_broadcast/expected/nast.txt +3 -3
  111. data/golden/reduction_broadcast/expected/schema_ruby.rb +1 -1
  112. data/golden/reduction_broadcast/expected/snast.txt +1 -1
  113. data/golden/roll/expected/schema_ruby.rb +1 -1
  114. data/golden/shift/expected/schema_ruby.rb +1 -1
  115. data/golden/shift_2d/expected/schema_ruby.rb +1 -1
  116. data/golden/simple_math/expected/lir_00_unoptimized.txt +1 -1
  117. data/golden/simple_math/expected/lir_01_hoist_scalar_references.txt +1 -1
  118. data/golden/simple_math/expected/lir_02_inlined.txt +1 -1
  119. data/golden/simple_math/expected/lir_03_cse.txt +1 -1
  120. data/golden/simple_math/expected/lir_04_1_loop_fusion.txt +1 -1
  121. data/golden/simple_math/expected/lir_04_loop_invcm.txt +1 -1
  122. data/golden/simple_math/expected/lir_06_const_prop.txt +1 -1
  123. data/golden/simple_math/expected/nast.txt +5 -5
  124. data/golden/simple_math/expected/schema_ruby.rb +1 -1
  125. data/golden/simple_math/expected/snast.txt +2 -2
  126. data/golden/streaming_basics/expected/nast.txt +8 -8
  127. data/golden/streaming_basics/expected/schema_ruby.rb +1 -1
  128. data/golden/streaming_basics/expected/snast.txt +1 -1
  129. data/golden/tuples/expected/lir_00_unoptimized.txt +5 -5
  130. data/golden/tuples/expected/lir_01_hoist_scalar_references.txt +5 -5
  131. data/golden/tuples/expected/lir_02_inlined.txt +5 -5
  132. data/golden/tuples/expected/lir_03_cse.txt +5 -5
  133. data/golden/tuples/expected/lir_04_1_loop_fusion.txt +5 -5
  134. data/golden/tuples/expected/lir_04_loop_invcm.txt +5 -5
  135. data/golden/tuples/expected/lir_06_const_prop.txt +5 -5
  136. data/golden/tuples/expected/nast.txt +4 -4
  137. data/golden/tuples/expected/schema_ruby.rb +1 -1
  138. data/golden/tuples/expected/snast.txt +6 -6
  139. data/golden/tuples_and_arrays/expected/lir_00_unoptimized.txt +1 -1
  140. data/golden/tuples_and_arrays/expected/lir_01_hoist_scalar_references.txt +1 -1
  141. data/golden/tuples_and_arrays/expected/lir_02_inlined.txt +2 -2
  142. data/golden/tuples_and_arrays/expected/lir_03_cse.txt +2 -2
  143. data/golden/tuples_and_arrays/expected/lir_04_1_loop_fusion.txt +2 -2
  144. data/golden/tuples_and_arrays/expected/lir_04_loop_invcm.txt +2 -2
  145. data/golden/tuples_and_arrays/expected/lir_06_const_prop.txt +2 -2
  146. data/golden/tuples_and_arrays/expected/nast.txt +3 -3
  147. data/golden/tuples_and_arrays/expected/schema_ruby.rb +1 -1
  148. data/golden/tuples_and_arrays/expected/snast.txt +2 -2
  149. data/golden/us_tax_2024/expected/ast.txt +63 -670
  150. data/golden/us_tax_2024/expected/input_plan.txt +8 -45
  151. data/golden/us_tax_2024/expected/lir_00_unoptimized.txt +253 -863
  152. data/golden/us_tax_2024/expected/lir_01_hoist_scalar_references.txt +253 -863
  153. data/golden/us_tax_2024/expected/lir_02_inlined.txt +1215 -5139
  154. data/golden/us_tax_2024/expected/lir_03_cse.txt +587 -2460
  155. data/golden/us_tax_2024/expected/lir_04_1_loop_fusion.txt +632 -2480
  156. data/golden/us_tax_2024/expected/lir_04_loop_invcm.txt +587 -2460
  157. data/golden/us_tax_2024/expected/lir_06_const_prop.txt +587 -2460
  158. data/golden/us_tax_2024/expected/nast.txt +123 -826
  159. data/golden/us_tax_2024/expected/schema_javascript.mjs +127 -581
  160. data/golden/us_tax_2024/expected/schema_ruby.rb +135 -610
  161. data/golden/us_tax_2024/expected/snast.txt +155 -858
  162. data/golden/us_tax_2024/expected.json +120 -1
  163. data/golden/us_tax_2024/input.json +18 -9
  164. data/golden/us_tax_2024/schema.kumi +48 -178
  165. data/golden/with_constants/expected/lir_00_unoptimized.txt +1 -1
  166. data/golden/with_constants/expected/lir_01_hoist_scalar_references.txt +1 -1
  167. data/golden/with_constants/expected/lir_02_inlined.txt +1 -1
  168. data/golden/with_constants/expected/lir_03_cse.txt +1 -1
  169. data/golden/with_constants/expected/lir_04_1_loop_fusion.txt +1 -1
  170. data/golden/with_constants/expected/lir_04_loop_invcm.txt +1 -1
  171. data/golden/with_constants/expected/lir_06_const_prop.txt +1 -1
  172. data/golden/with_constants/expected/nast.txt +2 -2
  173. data/golden/with_constants/expected/schema_ruby.rb +1 -1
  174. data/golden/with_constants/expected/snast.txt +2 -2
  175. data/lib/kumi/analyzer.rb +12 -12
  176. data/lib/kumi/configuration.rb +6 -0
  177. data/lib/kumi/core/analyzer/passes/formal_constraint_propagator.rb +236 -0
  178. data/lib/kumi/core/analyzer/passes/input_collector.rb +22 -4
  179. data/lib/kumi/core/analyzer/passes/nast_dimensional_analyzer_pass.rb +64 -18
  180. data/lib/kumi/core/analyzer/passes/normalize_to_nast_pass.rb +9 -4
  181. data/lib/kumi/core/analyzer/passes/snast_pass.rb +3 -1
  182. data/lib/kumi/core/analyzer/passes/unsat_detector.rb +172 -198
  183. data/lib/kumi/core/error_reporter.rb +36 -1
  184. data/lib/kumi/core/errors.rb +33 -1
  185. data/lib/kumi/core/functions/function_spec.rb +5 -4
  186. data/lib/kumi/core/functions/loader.rb +17 -1
  187. data/lib/kumi/core/functions/overload_resolver.rb +164 -0
  188. data/lib/kumi/core/functions/type_error_reporter.rb +118 -0
  189. data/lib/kumi/core/functions/type_rules.rb +155 -35
  190. data/lib/kumi/core/input/type_matcher.rb +8 -1
  191. data/lib/kumi/core/ruby_parser/input_builder.rb +2 -2
  192. data/lib/kumi/core/types/inference.rb +29 -22
  193. data/lib/kumi/core/types/normalizer.rb +30 -45
  194. data/lib/kumi/core/types/validator.rb +17 -28
  195. data/lib/kumi/core/types/value_objects.rb +116 -0
  196. data/lib/kumi/core/types.rb +45 -37
  197. data/lib/kumi/dev/golden/reporter.rb +9 -0
  198. data/lib/kumi/dev/golden/result.rb +3 -1
  199. data/lib/kumi/dev/golden/runtime_test.rb +25 -0
  200. data/lib/kumi/dev/golden/suite.rb +4 -4
  201. data/lib/kumi/dev/golden/value_normalizer.rb +80 -0
  202. data/lib/kumi/dev/golden.rb +21 -12
  203. data/lib/kumi/doc_generator/formatters/json.rb +39 -0
  204. data/lib/kumi/doc_generator/formatters/markdown.rb +175 -0
  205. data/lib/kumi/doc_generator/loader.rb +37 -0
  206. data/lib/kumi/doc_generator/merger.rb +54 -0
  207. data/lib/kumi/doc_generator.rb +4 -0
  208. data/lib/kumi/registry_v2/loader.rb +90 -0
  209. data/lib/kumi/registry_v2.rb +18 -1
  210. data/lib/kumi/version.rb +1 -1
  211. data/vscode-extension/.gitignore +4 -0
  212. data/vscode-extension/README.md +59 -0
  213. data/vscode-extension/TESTING.md +151 -0
  214. data/vscode-extension/package.json +51 -0
  215. data/vscode-extension/src/extension.ts +295 -0
  216. data/vscode-extension/tsconfig.json +15 -0
  217. metadata +57 -7
  218. data/lib/kumi/core/analyzer/unsat_constant_evaluator.rb +0 -59
  219. data/lib/kumi/core/atom_unsat_solver.rb +0 -396
  220. data/lib/kumi/core/constraint_relationship_solver.rb +0 -641
  221. data/lib/kumi/core/types/builder.rb +0 -23
  222. data/lib/kumi/core/types/compatibility.rb +0 -96
  223. data/lib/kumi/core/types/formatter.rb +0 -26
@@ -1,12 +1,12 @@
1
1
  (NAST
2
2
  (VALUE dept_total
3
- (Call :"agg.sum"
3
+ (Call :sum
4
4
  (InputRef [:depts, :dept, :teams, :team, :headcount])
5
5
  )
6
6
  )
7
7
  (VALUE company_total
8
- (Call :"agg.sum"
9
- (Call :"agg.sum"
8
+ (Call :sum
9
+ (Call :sum
10
10
  (InputRef [:depts, :dept, :teams, :team, :headcount])
11
11
  )
12
12
  )
@@ -1,5 +1,5 @@
1
1
  # Autogenerated by Kumi Codegen
2
- module Kumi::Compiled::KUMI_e5612f974eced7c5db52fb03f8ecfd82174c52d530c1f073b180f04d7d4b5886
2
+ module Kumi::Compiled::KUMI_b74a41d0d85c1aa450f7dce23ed22ccfcaf13c330101f5c7ee3f7bc4f4c8b5f4
3
3
  def self.from(input_data = nil)
4
4
  instance = Object.new
5
5
  instance.extend(self)
@@ -11,7 +11,7 @@
11
11
  ) :: [depts] -> integer
12
12
  ) :: [] -> integer
13
13
  ) :: [] -> integer
14
- (TRAIT big_team
14
+ (VALUE big_team
15
15
  (Call :core.gt
16
16
  (InputRef depts.dept.teams.team.headcount key_chain=[]) :: [depts, teams] -> integer
17
17
  (Const 10) :: [] -> integer
@@ -1,11 +1,11 @@
1
1
  (NAST
2
2
  (VALUE sum_numbers
3
- (Call :"agg.sum"
3
+ (Call :sum
4
4
  (InputRef [:numbers, :num, :value])
5
5
  )
6
6
  )
7
7
  (VALUE matrix_sums
8
- (Call :"agg.sum"
8
+ (Call :sum
9
9
  (InputRef [:matrix, :m, :row, :r, :cell])
10
10
  )
11
11
  )
@@ -1,5 +1,5 @@
1
1
  # Autogenerated by Kumi Codegen
2
- module Kumi::Compiled::KUMI_bbe68fd87d3413dc8dc47548ccbe52c6bf4a9912417fdfc1a4c2fd87cd576fd9
2
+ module Kumi::Compiled::KUMI_a97fe62e81ba9ee34e23cf45b64886d02e7547bbc48b5bebd1869492d71c1aa8
3
3
  def self.from(input_data = nil)
4
4
  instance = Object.new
5
5
  instance.extend(self)
@@ -1,25 +1,25 @@
1
1
  (NAST
2
2
  (VALUE global_offset_plus
3
- (Call :"core.add"
3
+ (Call :add
4
4
  (InputRef [:global_offset])
5
5
  (Const 1.0)
6
6
  )
7
7
  )
8
8
  (VALUE batch_bias
9
- (Call :"core.add"
9
+ (Call :add
10
10
  (InputRef [:batch, :b, :mean])
11
11
  (Ref global_offset_plus)
12
12
  )
13
13
  )
14
14
  (VALUE row_scale2
15
- (Call :"core.mul"
15
+ (Call :multiply
16
16
  (InputRef [:batch, :b, :row, :r, :scale])
17
17
  (Const 2.0)
18
18
  )
19
19
  )
20
20
  (VALUE elem_affine
21
- (Call :"core.add"
22
- (Call :"core.mul"
21
+ (Call :add
22
+ (Call :multiply
23
23
  (InputRef [:batch, :b, :row, :r, :col, :c, :val])
24
24
  (Ref row_scale2)
25
25
  )
@@ -27,12 +27,12 @@
27
27
  )
28
28
  )
29
29
  (VALUE row_sum_affine
30
- (Call :"agg.sum"
30
+ (Call :sum
31
31
  (Ref elem_affine)
32
32
  )
33
33
  )
34
34
  (VALUE batch_total_affine
35
- (Call :"agg.sum"
35
+ (Call :sum
36
36
  (Ref row_sum_affine)
37
37
  )
38
38
  )
@@ -1,5 +1,5 @@
1
1
  # Autogenerated by Kumi Codegen
2
- module Kumi::Compiled::KUMI_7493f45c6a56b6958f928d8337e155ecf85850b56acef5a72dee8f1f697d1aac
2
+ module Kumi::Compiled::KUMI_eb3b4d06e6af40ce1803535148d7d8e97065abfc8e4186fd66437ebb384ab54f
3
3
  def self.from(input_data = nil)
4
4
  instance = Object.new
5
5
  instance.extend(self)
@@ -1,6 +1,6 @@
1
1
  (NAST
2
2
  (VALUE double
3
- (Call :"core.mul"
3
+ (Call :multiply
4
4
  (InputRef [:x, :y, :z])
5
5
  (Const 2)
6
6
  )
@@ -1,5 +1,5 @@
1
1
  # Autogenerated by Kumi Codegen
2
- module Kumi::Compiled::KUMI_06206c81b13d30ba2dfe33471a73d550acd8ceaaed39c3bc060cd965ef719e19
2
+ module Kumi::Compiled::KUMI_ad29cac793fb49736b0ba445da6c4c0761ee9fc79fde4b64eeff0a668781e9a5
3
3
  def self.from(input_data = nil)
4
4
  instance = Object.new
5
5
  instance.extend(self)
@@ -1,16 +1,16 @@
1
1
  (NAST
2
2
  (VALUE dept_headcount
3
- (Call :"agg.sum"
3
+ (Call :sum
4
4
  (InputRef [:departments, :dept, :teams, :team, :headcount])
5
5
  )
6
6
  )
7
7
  (VALUE teams_per_dept
8
- (Call :"agg.count"
8
+ (Call :count
9
9
  (InputRef [:departments, :dept, :teams, :team, :team_name])
10
10
  )
11
11
  )
12
12
  (VALUE avg_headcount_per_dept
13
- (Call :"core.div"
13
+ (Call :divide
14
14
  (Ref dept_headcount)
15
15
  (Ref teams_per_dept)
16
16
  )
@@ -1,5 +1,5 @@
1
1
  # Autogenerated by Kumi Codegen
2
- module Kumi::Compiled::KUMI_798dac22208bafc0f2b7f93d43bef5ae4c1d550f52f4c3773c486db02058561a
2
+ module Kumi::Compiled::KUMI_6acd7e7a86400b5713bb861b265bd71ca0409744e38f91750bf81b1c8cc7b4f7
3
3
  def self.from(input_data = nil)
4
4
  instance = Object.new
5
5
  instance.extend(self)
@@ -15,7 +15,7 @@
15
15
  (Ref teams_per_dept) :: [departments] -> integer
16
16
  ) :: [departments] -> float
17
17
  ) :: [departments] -> float
18
- (TRAIT is_above_average_team
18
+ (VALUE is_above_average_team
19
19
  (Call :core.gt
20
20
  (InputRef departments.dept.teams.team.headcount key_chain=[]) :: [departments, teams] -> integer
21
21
  (Ref avg_headcount_per_dept) :: [departments] -> float
@@ -1,5 +1,5 @@
1
1
  # Autogenerated by Kumi Codegen
2
- module Kumi::Compiled::KUMI_db1001d7afa366cbc106f0cd804e44bfabd8a08bfd109b89c3fd14e89d14266b
2
+ module Kumi::Compiled::KUMI_bf0841514d27c68c3a5223b5c9e5625080c4342efd1141ccce1a07b41457e613
3
3
  def self.from(input_data = nil)
4
4
  instance = Object.new
5
5
  instance.extend(self)
@@ -1,5 +1,5 @@
1
1
  # Autogenerated by Kumi Codegen
2
- module Kumi::Compiled::KUMI_79b1226afef716b18baad35a6809f5d0b953aec078c87883fca2ae4c23029fe4
2
+ module Kumi::Compiled::KUMI_5e5c116e1acd27deccebcb9ab5ef133223c7005d86584465d3160f569d3c6a9b
3
3
  def self.from(input_data = nil)
4
4
  instance = Object.new
5
5
  instance.extend(self)
@@ -1,5 +1,5 @@
1
1
  # Autogenerated by Kumi Codegen
2
- module Kumi::Compiled::KUMI_e33b43acb8aa4e0f0d667f040c07607dbc78bfc52c9993108d5fcfff1f5fb47a
2
+ module Kumi::Compiled::KUMI_949d31a31d5b9027826a4d9e0ac0f4f7cf7ec0cf26a2a52a7da7dc7b6de71a1f
3
3
  def self.from(input_data = nil)
4
4
  instance = Object.new
5
5
  instance.extend(self)
@@ -25,7 +25,7 @@
25
25
  %t14 = load_input "y" :: integer
26
26
  %t15 = const 2 :: integer
27
27
  %t16 = call core.mul(%t14, %t15) :: integer
28
- %t17 = make_tuple(%t10, %t13, %t16) :: tuple<integer>
28
+ %t17 = make_tuple(%t10, %t13, %t16) :: tuple<integer, integer, integer>
29
29
  yield %t17
30
30
  )
31
31
  )
@@ -25,7 +25,7 @@
25
25
  %t14 = load_input "y" :: integer
26
26
  %t15 = const 2 :: integer
27
27
  %t16 = call core.mul(%t14, %t15) :: integer
28
- %t17 = make_tuple(%t10, %t13, %t16) :: tuple<integer>
28
+ %t17 = make_tuple(%t10, %t13, %t16) :: tuple<integer, integer, integer>
29
29
  yield %t17
30
30
  )
31
31
  )
@@ -25,7 +25,7 @@
25
25
  %t14 = load_input "y" :: integer
26
26
  %t15 = const 2 :: integer
27
27
  %t16 = call core.mul(%t14, %t15) :: integer
28
- %t17 = make_tuple(%t10, %t13, %t16) :: tuple<integer>
28
+ %t17 = make_tuple(%t10, %t13, %t16) :: tuple<integer, integer, integer>
29
29
  yield %t17
30
30
  )
31
31
  )
@@ -25,7 +25,7 @@
25
25
  %t14 = load_input "y" :: integer
26
26
  %t15 = const 2 :: integer
27
27
  %t16 = call core.mul(%t14, %t15) :: integer
28
- %t17 = make_tuple(%t10, %t13, %t16) :: tuple<integer>
28
+ %t17 = make_tuple(%t10, %t13, %t16) :: tuple<integer, integer, integer>
29
29
  yield %t17
30
30
  )
31
31
  )
@@ -25,7 +25,7 @@
25
25
  %t14 = load_input "y" :: integer
26
26
  %t15 = const 2 :: integer
27
27
  %t16 = call core.mul(%t14, %t15) :: integer
28
- %t17 = make_tuple(%t10, %t13, %t16) :: tuple<integer>
28
+ %t17 = make_tuple(%t10, %t13, %t16) :: tuple<integer, integer, integer>
29
29
  yield %t17
30
30
  )
31
31
  )
@@ -25,7 +25,7 @@
25
25
  %t14 = load_input "y" :: integer
26
26
  %t15 = const 2 :: integer
27
27
  %t16 = call core.mul(%t14, %t15) :: integer
28
- %t17 = make_tuple(%t10, %t13, %t16) :: tuple<integer>
28
+ %t17 = make_tuple(%t10, %t13, %t16) :: tuple<integer, integer, integer>
29
29
  yield %t17
30
30
  )
31
31
  )
@@ -25,7 +25,7 @@
25
25
  %t14 = load_input "y" :: integer
26
26
  %t15 = const 2 :: integer
27
27
  %t16 = call core.mul(%t14, %t15) :: integer
28
- %t17 = make_tuple(%t10, %t13, %t16) :: tuple<integer>
28
+ %t17 = make_tuple(%t10, %t13, %t16) :: tuple<integer, integer, integer>
29
29
  yield %t17
30
30
  )
31
31
  )
@@ -1,18 +1,18 @@
1
1
  (NAST
2
2
  (VALUE sum
3
- (Call :"core.add"
3
+ (Call :add
4
4
  (InputRef [:x])
5
5
  (InputRef [:y])
6
6
  )
7
7
  )
8
8
  (VALUE product
9
- (Call :"core.mul"
9
+ (Call :multiply
10
10
  (InputRef [:x])
11
11
  (InputRef [:y])
12
12
  )
13
13
  )
14
14
  (VALUE difference
15
- (Call :"core.sub"
15
+ (Call :subtract
16
16
  (InputRef [:x])
17
17
  (InputRef [:y])
18
18
  )
@@ -20,11 +20,11 @@
20
20
  (VALUE results_array
21
21
  (Tuple
22
22
  (Const 1)
23
- (Call :"core.add"
23
+ (Call :add
24
24
  (InputRef [:x])
25
25
  (Const 10)
26
26
  )
27
- (Call :"core.mul"
27
+ (Call :multiply
28
28
  (InputRef [:y])
29
29
  (Const 2)
30
30
  )
@@ -1,5 +1,5 @@
1
1
  # Autogenerated by Kumi Codegen
2
- module Kumi::Compiled::KUMI_02882cbdd43383967e13d4c1a8f79cc5045859736335a160b1210f35f11b9f0f
2
+ module Kumi::Compiled::KUMI_01c25ad1ae3550b0c23581f73407635ef18b1b5947933fe2edfdcbcef3253d37
3
3
  def self.from(input_data = nil)
4
4
  instance = Object.new
5
5
  instance.extend(self)
@@ -28,6 +28,6 @@
28
28
  (InputRef y key_chain=[]) :: [] -> integer
29
29
  (Const 2) :: [] -> integer
30
30
  ) :: [] -> integer
31
- ) :: [] -> tuple<integer>
32
- ) :: [] -> tuple<integer>
31
+ ) :: [] -> tuple<integer, integer, integer>
32
+ ) :: [] -> tuple<integer, integer, integer>
33
33
  )
@@ -1,14 +1,14 @@
1
1
  (NAST
2
2
  (VALUE items_subtotal
3
- (Call :"core.mul"
3
+ (Call :multiply
4
4
  (InputRef [:items, :item, :price])
5
5
  (InputRef [:items, :item, :qty])
6
6
  )
7
7
  )
8
8
  (VALUE items_discounted
9
- (Call :"core.mul"
9
+ (Call :multiply
10
10
  (InputRef [:items, :item, :price])
11
- (Call :"core.sub"
11
+ (Call :subtract
12
12
  (Const 1.0)
13
13
  (InputRef [:discount])
14
14
  )
@@ -21,9 +21,9 @@
21
21
  )
22
22
  )
23
23
  (VALUE items_effective
24
- (Call :__select__
24
+ (Call :select
25
25
  (Ref items_is_big)
26
- (Call :"core.mul"
26
+ (Call :multiply
27
27
  (Ref items_subtotal)
28
28
  (Const 0.9)
29
29
  )
@@ -31,17 +31,17 @@
31
31
  )
32
32
  )
33
33
  (VALUE total_qty
34
- (Call :"agg.sum"
34
+ (Call :sum
35
35
  (InputRef [:items, :item, :qty])
36
36
  )
37
37
  )
38
38
  (VALUE cart_total
39
- (Call :"agg.sum"
39
+ (Call :sum
40
40
  (Ref items_subtotal)
41
41
  )
42
42
  )
43
43
  (VALUE cart_total_effective
44
- (Call :"agg.sum"
44
+ (Call :sum
45
45
  (Ref items_effective)
46
46
  )
47
47
  )
@@ -1,5 +1,5 @@
1
1
  # Autogenerated by Kumi Codegen
2
- module Kumi::Compiled::KUMI_e64045903bee1b6a265ef34019b7aa91333ec110e041bb47e8350de13c0fa435
2
+ module Kumi::Compiled::KUMI_e1cf5a39d9cce72668a167abe6fc8f84c427d0b38cc7759c0447e7822c722a43
3
3
  def self.from(input_data = nil)
4
4
  instance = Object.new
5
5
  instance.extend(self)
@@ -14,7 +14,7 @@
14
14
  ) :: [] -> float
15
15
  ) :: [items] -> float
16
16
  ) :: [items] -> float
17
- (TRAIT items_is_big
17
+ (VALUE items_is_big
18
18
  (Call :core.gt
19
19
  (InputRef items.item.price key_chain=[]) :: [items] -> float
20
20
  (Const 100.0) :: [] -> float
@@ -4,11 +4,11 @@
4
4
  %t2 = const 2 :: integer
5
5
  %t3 = const 3 :: integer
6
6
  %t4 = load_input "x" :: integer
7
- %t5 = make_tuple(%t1, %t2, %t3, %t4) :: tuple<integer>
7
+ %t5 = make_tuple(%t1, %t2, %t3, %t4) :: tuple<integer, integer, integer, integer>
8
8
  yield %t5
9
9
  )
10
10
  (Declaration max_1
11
- %t6 = load_decl tuple :: tuple<integer>
11
+ %t6 = load_decl tuple :: tuple<integer, integer, integer, integer>
12
12
  %t7 = fold %t6 fn="agg.max" :: integer
13
13
  yield %t7
14
14
  )
@@ -18,12 +18,12 @@
18
18
  %t10 = const 3 :: integer
19
19
  %t11 = load_input "x" :: integer
20
20
  %t12 = const 1000 :: integer
21
- %t13 = make_tuple(%t8, %t9, %t10, %t11, %t12) :: tuple<integer>
21
+ %t13 = make_tuple(%t8, %t9, %t10, %t11, %t12) :: tuple<integer, integer, integer, integer, integer>
22
22
  %t14 = fold %t13 fn="agg.max" :: integer
23
23
  yield %t14
24
24
  )
25
25
  (Declaration min_1
26
- %t15 = load_decl tuple :: tuple<integer>
26
+ %t15 = load_decl tuple :: tuple<integer, integer, integer, integer>
27
27
  %t16 = fold %t15 fn="agg.min" :: integer
28
28
  yield %t16
29
29
  )
@@ -33,7 +33,7 @@
33
33
  %t19 = const 3 :: integer
34
34
  %t20 = load_input "x" :: integer
35
35
  %t21 = const -100 :: integer
36
- %t22 = make_tuple(%t17, %t18, %t19, %t20, %t21) :: tuple<integer>
36
+ %t22 = make_tuple(%t17, %t18, %t19, %t20, %t21) :: tuple<integer, integer, integer, integer, integer>
37
37
  %t23 = fold %t22 fn="agg.min" :: integer
38
38
  yield %t23
39
39
  )
@@ -4,11 +4,11 @@
4
4
  %t2 = const 2 :: integer
5
5
  %t3 = const 3 :: integer
6
6
  %t4 = load_input "x" :: integer
7
- %t5 = make_tuple(%t1, %t2, %t3, %t4) :: tuple<integer>
7
+ %t5 = make_tuple(%t1, %t2, %t3, %t4) :: tuple<integer, integer, integer, integer>
8
8
  yield %t5
9
9
  )
10
10
  (Declaration max_1
11
- %t6 = load_decl tuple :: tuple<integer>
11
+ %t6 = load_decl tuple :: tuple<integer, integer, integer, integer>
12
12
  %t7 = fold %t6 fn="agg.max" :: integer
13
13
  yield %t7
14
14
  )
@@ -18,12 +18,12 @@
18
18
  %t10 = const 3 :: integer
19
19
  %t11 = load_input "x" :: integer
20
20
  %t12 = const 1000 :: integer
21
- %t13 = make_tuple(%t8, %t9, %t10, %t11, %t12) :: tuple<integer>
21
+ %t13 = make_tuple(%t8, %t9, %t10, %t11, %t12) :: tuple<integer, integer, integer, integer, integer>
22
22
  %t14 = fold %t13 fn="agg.max" :: integer
23
23
  yield %t14
24
24
  )
25
25
  (Declaration min_1
26
- %t15 = load_decl tuple :: tuple<integer>
26
+ %t15 = load_decl tuple :: tuple<integer, integer, integer, integer>
27
27
  %t16 = fold %t15 fn="agg.min" :: integer
28
28
  yield %t16
29
29
  )
@@ -33,7 +33,7 @@
33
33
  %t19 = const 3 :: integer
34
34
  %t20 = load_input "x" :: integer
35
35
  %t21 = const -100 :: integer
36
- %t22 = make_tuple(%t17, %t18, %t19, %t20, %t21) :: tuple<integer>
36
+ %t22 = make_tuple(%t17, %t18, %t19, %t20, %t21) :: tuple<integer, integer, integer, integer, integer>
37
37
  %t23 = fold %t22 fn="agg.min" :: integer
38
38
  yield %t23
39
39
  )
@@ -4,7 +4,7 @@
4
4
  %t2 = const 2 :: integer
5
5
  %t3 = const 3 :: integer
6
6
  %t4 = load_input "x" :: integer
7
- %t5 = make_tuple(%t1, %t2, %t3, %t4) :: tuple<integer>
7
+ %t5 = make_tuple(%t1, %t2, %t3, %t4) :: tuple<integer, integer, integer, integer>
8
8
  yield %t5
9
9
  )
10
10
  (Declaration max_1
@@ -12,7 +12,7 @@
12
12
  %t25 = const 2 :: integer
13
13
  %t26 = const 3 :: integer
14
14
  %t27 = load_input "x" :: integer
15
- %t28 = make_tuple(%t24, %t25, %t26, %t27) :: tuple<integer>
15
+ %t28 = make_tuple(%t24, %t25, %t26, %t27) :: tuple<integer, integer, integer, integer>
16
16
  %t7 = fold %t28 fn="agg.max" :: integer
17
17
  yield %t7
18
18
  )
@@ -22,7 +22,7 @@
22
22
  %t10 = const 3 :: integer
23
23
  %t11 = load_input "x" :: integer
24
24
  %t12 = const 1000 :: integer
25
- %t13 = make_tuple(%t8, %t9, %t10, %t11, %t12) :: tuple<integer>
25
+ %t13 = make_tuple(%t8, %t9, %t10, %t11, %t12) :: tuple<integer, integer, integer, integer, integer>
26
26
  %t14 = fold %t13 fn="agg.max" :: integer
27
27
  yield %t14
28
28
  )
@@ -31,7 +31,7 @@
31
31
  %t30 = const 2 :: integer
32
32
  %t31 = const 3 :: integer
33
33
  %t32 = load_input "x" :: integer
34
- %t33 = make_tuple(%t29, %t30, %t31, %t32) :: tuple<integer>
34
+ %t33 = make_tuple(%t29, %t30, %t31, %t32) :: tuple<integer, integer, integer, integer>
35
35
  %t16 = fold %t33 fn="agg.min" :: integer
36
36
  yield %t16
37
37
  )
@@ -41,7 +41,7 @@
41
41
  %t19 = const 3 :: integer
42
42
  %t20 = load_input "x" :: integer
43
43
  %t21 = const -100 :: integer
44
- %t22 = make_tuple(%t17, %t18, %t19, %t20, %t21) :: tuple<integer>
44
+ %t22 = make_tuple(%t17, %t18, %t19, %t20, %t21) :: tuple<integer, integer, integer, integer, integer>
45
45
  %t23 = fold %t22 fn="agg.min" :: integer
46
46
  yield %t23
47
47
  )
@@ -4,7 +4,7 @@
4
4
  %t2 = const 2 :: integer
5
5
  %t3 = const 3 :: integer
6
6
  %t4 = load_input "x" :: integer
7
- %t5 = make_tuple(%t1, %t2, %t3, %t4) :: tuple<integer>
7
+ %t5 = make_tuple(%t1, %t2, %t3, %t4) :: tuple<integer, integer, integer, integer>
8
8
  yield %t5
9
9
  )
10
10
  (Declaration max_1
@@ -12,7 +12,7 @@
12
12
  %t25 = const 2 :: integer
13
13
  %t26 = const 3 :: integer
14
14
  %t27 = load_input "x" :: integer
15
- %t28 = make_tuple(%t24, %t25, %t26, %t27) :: tuple<integer>
15
+ %t28 = make_tuple(%t24, %t25, %t26, %t27) :: tuple<integer, integer, integer, integer>
16
16
  %t7 = fold %t28 fn="agg.max" :: integer
17
17
  yield %t7
18
18
  )
@@ -22,7 +22,7 @@
22
22
  %t10 = const 3 :: integer
23
23
  %t11 = load_input "x" :: integer
24
24
  %t12 = const 1000 :: integer
25
- %t13 = make_tuple(%t8, %t9, %t10, %t11, %t12) :: tuple<integer>
25
+ %t13 = make_tuple(%t8, %t9, %t10, %t11, %t12) :: tuple<integer, integer, integer, integer, integer>
26
26
  %t14 = fold %t13 fn="agg.max" :: integer
27
27
  yield %t14
28
28
  )
@@ -31,7 +31,7 @@
31
31
  %t30 = const 2 :: integer
32
32
  %t31 = const 3 :: integer
33
33
  %t32 = load_input "x" :: integer
34
- %t33 = make_tuple(%t29, %t30, %t31, %t32) :: tuple<integer>
34
+ %t33 = make_tuple(%t29, %t30, %t31, %t32) :: tuple<integer, integer, integer, integer>
35
35
  %t16 = fold %t33 fn="agg.min" :: integer
36
36
  yield %t16
37
37
  )
@@ -41,7 +41,7 @@
41
41
  %t19 = const 3 :: integer
42
42
  %t20 = load_input "x" :: integer
43
43
  %t21 = const -100 :: integer
44
- %t22 = make_tuple(%t17, %t18, %t19, %t20, %t21) :: tuple<integer>
44
+ %t22 = make_tuple(%t17, %t18, %t19, %t20, %t21) :: tuple<integer, integer, integer, integer, integer>
45
45
  %t23 = fold %t22 fn="agg.min" :: integer
46
46
  yield %t23
47
47
  )
@@ -4,7 +4,7 @@
4
4
  %t2 = const 2 :: integer
5
5
  %t3 = const 3 :: integer
6
6
  %t4 = load_input "x" :: integer
7
- %t5 = make_tuple(%t1, %t2, %t3, %t4) :: tuple<integer>
7
+ %t5 = make_tuple(%t1, %t2, %t3, %t4) :: tuple<integer, integer, integer, integer>
8
8
  yield %t5
9
9
  )
10
10
  (Declaration max_1
@@ -12,7 +12,7 @@
12
12
  %t25 = const 2 :: integer
13
13
  %t26 = const 3 :: integer
14
14
  %t27 = load_input "x" :: integer
15
- %t28 = make_tuple(%t24, %t25, %t26, %t27) :: tuple<integer>
15
+ %t28 = make_tuple(%t24, %t25, %t26, %t27) :: tuple<integer, integer, integer, integer>
16
16
  %t7 = fold %t28 fn="agg.max" :: integer
17
17
  yield %t7
18
18
  )
@@ -22,7 +22,7 @@
22
22
  %t10 = const 3 :: integer
23
23
  %t11 = load_input "x" :: integer
24
24
  %t12 = const 1000 :: integer
25
- %t13 = make_tuple(%t8, %t9, %t10, %t11, %t12) :: tuple<integer>
25
+ %t13 = make_tuple(%t8, %t9, %t10, %t11, %t12) :: tuple<integer, integer, integer, integer, integer>
26
26
  %t14 = fold %t13 fn="agg.max" :: integer
27
27
  yield %t14
28
28
  )
@@ -31,7 +31,7 @@
31
31
  %t30 = const 2 :: integer
32
32
  %t31 = const 3 :: integer
33
33
  %t32 = load_input "x" :: integer
34
- %t33 = make_tuple(%t29, %t30, %t31, %t32) :: tuple<integer>
34
+ %t33 = make_tuple(%t29, %t30, %t31, %t32) :: tuple<integer, integer, integer, integer>
35
35
  %t16 = fold %t33 fn="agg.min" :: integer
36
36
  yield %t16
37
37
  )
@@ -41,7 +41,7 @@
41
41
  %t19 = const 3 :: integer
42
42
  %t20 = load_input "x" :: integer
43
43
  %t21 = const -100 :: integer
44
- %t22 = make_tuple(%t17, %t18, %t19, %t20, %t21) :: tuple<integer>
44
+ %t22 = make_tuple(%t17, %t18, %t19, %t20, %t21) :: tuple<integer, integer, integer, integer, integer>
45
45
  %t23 = fold %t22 fn="agg.min" :: integer
46
46
  yield %t23
47
47
  )
@@ -4,7 +4,7 @@
4
4
  %t2 = const 2 :: integer
5
5
  %t3 = const 3 :: integer
6
6
  %t4 = load_input "x" :: integer
7
- %t5 = make_tuple(%t1, %t2, %t3, %t4) :: tuple<integer>
7
+ %t5 = make_tuple(%t1, %t2, %t3, %t4) :: tuple<integer, integer, integer, integer>
8
8
  yield %t5
9
9
  )
10
10
  (Declaration max_1
@@ -12,7 +12,7 @@
12
12
  %t25 = const 2 :: integer
13
13
  %t26 = const 3 :: integer
14
14
  %t27 = load_input "x" :: integer
15
- %t28 = make_tuple(%t24, %t25, %t26, %t27) :: tuple<integer>
15
+ %t28 = make_tuple(%t24, %t25, %t26, %t27) :: tuple<integer, integer, integer, integer>
16
16
  %t7 = fold %t28 fn="agg.max" :: integer
17
17
  yield %t7
18
18
  )
@@ -22,7 +22,7 @@
22
22
  %t10 = const 3 :: integer
23
23
  %t11 = load_input "x" :: integer
24
24
  %t12 = const 1000 :: integer
25
- %t13 = make_tuple(%t8, %t9, %t10, %t11, %t12) :: tuple<integer>
25
+ %t13 = make_tuple(%t8, %t9, %t10, %t11, %t12) :: tuple<integer, integer, integer, integer, integer>
26
26
  %t14 = fold %t13 fn="agg.max" :: integer
27
27
  yield %t14
28
28
  )
@@ -31,7 +31,7 @@
31
31
  %t30 = const 2 :: integer
32
32
  %t31 = const 3 :: integer
33
33
  %t32 = load_input "x" :: integer
34
- %t33 = make_tuple(%t29, %t30, %t31, %t32) :: tuple<integer>
34
+ %t33 = make_tuple(%t29, %t30, %t31, %t32) :: tuple<integer, integer, integer, integer>
35
35
  %t16 = fold %t33 fn="agg.min" :: integer
36
36
  yield %t16
37
37
  )
@@ -41,7 +41,7 @@
41
41
  %t19 = const 3 :: integer
42
42
  %t20 = load_input "x" :: integer
43
43
  %t21 = const -100 :: integer
44
- %t22 = make_tuple(%t17, %t18, %t19, %t20, %t21) :: tuple<integer>
44
+ %t22 = make_tuple(%t17, %t18, %t19, %t20, %t21) :: tuple<integer, integer, integer, integer, integer>
45
45
  %t23 = fold %t22 fn="agg.min" :: integer
46
46
  yield %t23
47
47
  )