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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +16 -0
- data/CLAUDE.md +4 -0
- data/README.md +86 -78
- data/data/functions/agg/boolean.yaml +6 -2
- data/data/functions/agg/numeric.yaml +32 -16
- data/data/functions/agg/string.yaml +4 -3
- data/data/functions/core/arithmetic.yaml +62 -14
- data/data/functions/core/boolean.yaml +12 -6
- data/data/functions/core/comparison.yaml +25 -13
- data/data/functions/core/constructor.yaml +16 -8
- data/data/functions/core/conversion.yaml +32 -0
- data/data/functions/core/select.yaml +3 -1
- data/data/functions/core/stencil.yaml +14 -5
- data/data/functions/core/string.yaml +9 -4
- data/data/kernels/javascript/core/coercion.yaml +20 -0
- data/data/kernels/ruby/agg/numeric.yaml +1 -1
- data/data/kernels/ruby/core/coercion.yaml +20 -0
- data/docs/ARCHITECTURE.md +277 -0
- data/docs/DEVELOPMENT.md +62 -0
- data/docs/FUNCTIONS.md +955 -0
- data/docs/SYNTAX.md +8 -0
- data/docs/UNSAT_DETECTION.md +83 -0
- data/docs/VSCODE_EXTENSION.md +114 -0
- data/docs/functions-reference.json +1821 -0
- data/golden/array_element/expected/nast.txt +1 -1
- data/golden/array_element/expected/schema_ruby.rb +1 -1
- data/golden/array_index/expected/nast.txt +7 -7
- data/golden/array_index/expected/schema_ruby.rb +1 -1
- data/golden/array_operations/expected/nast.txt +2 -2
- data/golden/array_operations/expected/schema_ruby.rb +1 -1
- data/golden/array_operations/expected/snast.txt +3 -3
- data/golden/cascade_logic/expected/schema_ruby.rb +1 -1
- data/golden/cascade_logic/expected/snast.txt +2 -2
- data/golden/chained_fusion/expected/nast.txt +2 -2
- data/golden/chained_fusion/expected/schema_ruby.rb +1 -1
- data/golden/decimal_explicit/expected/ast.txt +38 -0
- data/golden/decimal_explicit/expected/input_plan.txt +3 -0
- data/golden/decimal_explicit/expected/lir_00_unoptimized.txt +30 -0
- data/golden/decimal_explicit/expected/lir_01_hoist_scalar_references.txt +30 -0
- data/golden/decimal_explicit/expected/lir_02_inlined.txt +44 -0
- data/golden/decimal_explicit/expected/lir_03_cse.txt +40 -0
- data/golden/decimal_explicit/expected/lir_04_1_loop_fusion.txt +40 -0
- data/golden/decimal_explicit/expected/lir_04_loop_invcm.txt +40 -0
- data/golden/decimal_explicit/expected/lir_06_const_prop.txt +40 -0
- data/golden/decimal_explicit/expected/nast.txt +30 -0
- data/golden/decimal_explicit/expected/schema_javascript.mjs +31 -0
- data/golden/decimal_explicit/expected/schema_ruby.rb +57 -0
- data/golden/decimal_explicit/expected/snast.txt +30 -0
- data/golden/decimal_explicit/expected.json +1 -0
- data/golden/decimal_explicit/input.json +5 -0
- data/golden/decimal_explicit/schema.kumi +14 -0
- data/golden/element_arrays/expected/nast.txt +2 -2
- data/golden/element_arrays/expected/schema_ruby.rb +1 -1
- data/golden/element_arrays/expected/snast.txt +1 -1
- data/golden/empty_and_null_inputs/expected/nast.txt +3 -3
- data/golden/empty_and_null_inputs/expected/schema_ruby.rb +1 -1
- data/golden/function_overload/expected/ast.txt +29 -0
- data/golden/function_overload/expected/input_plan.txt +4 -0
- data/golden/function_overload/expected/lir_00_unoptimized.txt +18 -0
- data/golden/function_overload/expected/lir_01_hoist_scalar_references.txt +18 -0
- data/golden/function_overload/expected/lir_02_inlined.txt +20 -0
- data/golden/function_overload/expected/lir_03_cse.txt +20 -0
- data/golden/function_overload/expected/lir_04_1_loop_fusion.txt +20 -0
- data/golden/function_overload/expected/lir_04_loop_invcm.txt +20 -0
- data/golden/function_overload/expected/lir_06_const_prop.txt +20 -0
- data/golden/function_overload/expected/nast.txt +22 -0
- data/golden/function_overload/expected/schema_javascript.mjs +12 -0
- data/golden/function_overload/expected/schema_ruby.rb +39 -0
- data/golden/function_overload/expected/snast.txt +22 -0
- data/golden/function_overload/input.json +8 -0
- data/golden/function_overload/schema.kumi +19 -0
- data/golden/game_of_life/expected/lir_00_unoptimized.txt +4 -4
- data/golden/game_of_life/expected/lir_01_hoist_scalar_references.txt +4 -4
- data/golden/game_of_life/expected/lir_02_inlined.txt +16 -16
- data/golden/game_of_life/expected/lir_03_cse.txt +20 -16
- data/golden/game_of_life/expected/lir_04_1_loop_fusion.txt +20 -16
- data/golden/game_of_life/expected/lir_04_loop_invcm.txt +20 -16
- data/golden/game_of_life/expected/lir_06_const_prop.txt +20 -16
- data/golden/game_of_life/expected/nast.txt +4 -4
- data/golden/game_of_life/expected/schema_javascript.mjs +4 -2
- data/golden/game_of_life/expected/schema_ruby.rb +5 -3
- data/golden/game_of_life/expected/snast.txt +10 -10
- data/golden/hash_keys/expected/schema_ruby.rb +1 -1
- data/golden/hash_value/expected/nast.txt +1 -1
- data/golden/hash_value/expected/schema_ruby.rb +1 -1
- data/golden/hash_value/expected/snast.txt +1 -1
- data/golden/hierarchical_complex/expected/nast.txt +3 -3
- data/golden/hierarchical_complex/expected/schema_ruby.rb +1 -1
- data/golden/hierarchical_complex/expected/snast.txt +3 -3
- data/golden/inline_rename_scope_leak/expected/nast.txt +3 -3
- data/golden/inline_rename_scope_leak/expected/schema_ruby.rb +1 -1
- data/golden/input_reference/expected/nast.txt +2 -2
- data/golden/input_reference/expected/schema_ruby.rb +1 -1
- data/golden/interleaved_fusion/expected/nast.txt +2 -2
- data/golden/interleaved_fusion/expected/schema_ruby.rb +1 -1
- data/golden/let_inline/expected/nast.txt +4 -4
- data/golden/let_inline/expected/schema_ruby.rb +1 -1
- data/golden/loop_fusion/expected/nast.txt +1 -1
- data/golden/loop_fusion/expected/schema_ruby.rb +1 -1
- data/golden/min_reduce_scope/expected/nast.txt +3 -3
- data/golden/min_reduce_scope/expected/schema_ruby.rb +1 -1
- data/golden/min_reduce_scope/expected/snast.txt +1 -1
- data/golden/mixed_dimensions/expected/nast.txt +2 -2
- data/golden/mixed_dimensions/expected/schema_ruby.rb +1 -1
- data/golden/multirank_hoisting/expected/nast.txt +7 -7
- data/golden/multirank_hoisting/expected/schema_ruby.rb +1 -1
- data/golden/nested_hash/expected/nast.txt +1 -1
- data/golden/nested_hash/expected/schema_ruby.rb +1 -1
- data/golden/reduction_broadcast/expected/nast.txt +3 -3
- data/golden/reduction_broadcast/expected/schema_ruby.rb +1 -1
- data/golden/reduction_broadcast/expected/snast.txt +1 -1
- data/golden/roll/expected/schema_ruby.rb +1 -1
- data/golden/shift/expected/schema_ruby.rb +1 -1
- data/golden/shift_2d/expected/schema_ruby.rb +1 -1
- data/golden/simple_math/expected/lir_00_unoptimized.txt +1 -1
- data/golden/simple_math/expected/lir_01_hoist_scalar_references.txt +1 -1
- data/golden/simple_math/expected/lir_02_inlined.txt +1 -1
- data/golden/simple_math/expected/lir_03_cse.txt +1 -1
- data/golden/simple_math/expected/lir_04_1_loop_fusion.txt +1 -1
- data/golden/simple_math/expected/lir_04_loop_invcm.txt +1 -1
- data/golden/simple_math/expected/lir_06_const_prop.txt +1 -1
- data/golden/simple_math/expected/nast.txt +5 -5
- data/golden/simple_math/expected/schema_ruby.rb +1 -1
- data/golden/simple_math/expected/snast.txt +2 -2
- data/golden/streaming_basics/expected/nast.txt +8 -8
- data/golden/streaming_basics/expected/schema_ruby.rb +1 -1
- data/golden/streaming_basics/expected/snast.txt +1 -1
- data/golden/tuples/expected/lir_00_unoptimized.txt +5 -5
- data/golden/tuples/expected/lir_01_hoist_scalar_references.txt +5 -5
- data/golden/tuples/expected/lir_02_inlined.txt +5 -5
- data/golden/tuples/expected/lir_03_cse.txt +5 -5
- data/golden/tuples/expected/lir_04_1_loop_fusion.txt +5 -5
- data/golden/tuples/expected/lir_04_loop_invcm.txt +5 -5
- data/golden/tuples/expected/lir_06_const_prop.txt +5 -5
- data/golden/tuples/expected/nast.txt +4 -4
- data/golden/tuples/expected/schema_ruby.rb +1 -1
- data/golden/tuples/expected/snast.txt +6 -6
- data/golden/tuples_and_arrays/expected/lir_00_unoptimized.txt +1 -1
- data/golden/tuples_and_arrays/expected/lir_01_hoist_scalar_references.txt +1 -1
- data/golden/tuples_and_arrays/expected/lir_02_inlined.txt +2 -2
- data/golden/tuples_and_arrays/expected/lir_03_cse.txt +2 -2
- data/golden/tuples_and_arrays/expected/lir_04_1_loop_fusion.txt +2 -2
- data/golden/tuples_and_arrays/expected/lir_04_loop_invcm.txt +2 -2
- data/golden/tuples_and_arrays/expected/lir_06_const_prop.txt +2 -2
- data/golden/tuples_and_arrays/expected/nast.txt +3 -3
- data/golden/tuples_and_arrays/expected/schema_ruby.rb +1 -1
- data/golden/tuples_and_arrays/expected/snast.txt +2 -2
- data/golden/us_tax_2024/expected/ast.txt +63 -670
- data/golden/us_tax_2024/expected/input_plan.txt +8 -45
- data/golden/us_tax_2024/expected/lir_00_unoptimized.txt +253 -863
- data/golden/us_tax_2024/expected/lir_01_hoist_scalar_references.txt +253 -863
- data/golden/us_tax_2024/expected/lir_02_inlined.txt +1215 -5139
- data/golden/us_tax_2024/expected/lir_03_cse.txt +587 -2460
- data/golden/us_tax_2024/expected/lir_04_1_loop_fusion.txt +632 -2480
- data/golden/us_tax_2024/expected/lir_04_loop_invcm.txt +587 -2460
- data/golden/us_tax_2024/expected/lir_06_const_prop.txt +587 -2460
- data/golden/us_tax_2024/expected/nast.txt +123 -826
- data/golden/us_tax_2024/expected/schema_javascript.mjs +127 -581
- data/golden/us_tax_2024/expected/schema_ruby.rb +135 -610
- data/golden/us_tax_2024/expected/snast.txt +155 -858
- data/golden/us_tax_2024/expected.json +120 -1
- data/golden/us_tax_2024/input.json +18 -9
- data/golden/us_tax_2024/schema.kumi +48 -178
- data/golden/with_constants/expected/lir_00_unoptimized.txt +1 -1
- data/golden/with_constants/expected/lir_01_hoist_scalar_references.txt +1 -1
- data/golden/with_constants/expected/lir_02_inlined.txt +1 -1
- data/golden/with_constants/expected/lir_03_cse.txt +1 -1
- data/golden/with_constants/expected/lir_04_1_loop_fusion.txt +1 -1
- data/golden/with_constants/expected/lir_04_loop_invcm.txt +1 -1
- data/golden/with_constants/expected/lir_06_const_prop.txt +1 -1
- data/golden/with_constants/expected/nast.txt +2 -2
- data/golden/with_constants/expected/schema_ruby.rb +1 -1
- data/golden/with_constants/expected/snast.txt +2 -2
- data/lib/kumi/analyzer.rb +12 -12
- data/lib/kumi/configuration.rb +6 -0
- data/lib/kumi/core/analyzer/passes/formal_constraint_propagator.rb +236 -0
- data/lib/kumi/core/analyzer/passes/input_collector.rb +22 -4
- data/lib/kumi/core/analyzer/passes/nast_dimensional_analyzer_pass.rb +64 -18
- data/lib/kumi/core/analyzer/passes/normalize_to_nast_pass.rb +9 -4
- data/lib/kumi/core/analyzer/passes/snast_pass.rb +3 -1
- data/lib/kumi/core/analyzer/passes/unsat_detector.rb +172 -198
- data/lib/kumi/core/error_reporter.rb +36 -1
- data/lib/kumi/core/errors.rb +33 -1
- data/lib/kumi/core/functions/function_spec.rb +5 -4
- data/lib/kumi/core/functions/loader.rb +17 -1
- data/lib/kumi/core/functions/overload_resolver.rb +164 -0
- data/lib/kumi/core/functions/type_error_reporter.rb +118 -0
- data/lib/kumi/core/functions/type_rules.rb +155 -35
- data/lib/kumi/core/input/type_matcher.rb +8 -1
- data/lib/kumi/core/ruby_parser/input_builder.rb +2 -2
- data/lib/kumi/core/types/inference.rb +29 -22
- data/lib/kumi/core/types/normalizer.rb +30 -45
- data/lib/kumi/core/types/validator.rb +17 -28
- data/lib/kumi/core/types/value_objects.rb +116 -0
- data/lib/kumi/core/types.rb +45 -37
- data/lib/kumi/dev/golden/reporter.rb +9 -0
- data/lib/kumi/dev/golden/result.rb +3 -1
- data/lib/kumi/dev/golden/runtime_test.rb +25 -0
- data/lib/kumi/dev/golden/suite.rb +4 -4
- data/lib/kumi/dev/golden/value_normalizer.rb +80 -0
- data/lib/kumi/dev/golden.rb +21 -12
- data/lib/kumi/doc_generator/formatters/json.rb +39 -0
- data/lib/kumi/doc_generator/formatters/markdown.rb +175 -0
- data/lib/kumi/doc_generator/loader.rb +37 -0
- data/lib/kumi/doc_generator/merger.rb +54 -0
- data/lib/kumi/doc_generator.rb +4 -0
- data/lib/kumi/registry_v2/loader.rb +90 -0
- data/lib/kumi/registry_v2.rb +18 -1
- data/lib/kumi/version.rb +1 -1
- data/vscode-extension/.gitignore +4 -0
- data/vscode-extension/README.md +59 -0
- data/vscode-extension/TESTING.md +151 -0
- data/vscode-extension/package.json +51 -0
- data/vscode-extension/src/extension.ts +295 -0
- data/vscode-extension/tsconfig.json +15 -0
- metadata +57 -7
- data/lib/kumi/core/analyzer/unsat_constant_evaluator.rb +0 -59
- data/lib/kumi/core/atom_unsat_solver.rb +0 -396
- data/lib/kumi/core/constraint_relationship_solver.rb +0 -641
- data/lib/kumi/core/types/builder.rb +0 -23
- data/lib/kumi/core/types/compatibility.rb +0 -96
- data/lib/kumi/core/types/formatter.rb +0 -26
@@ -1,12 +1,12 @@
|
|
1
1
|
(NAST
|
2
2
|
(VALUE dept_total
|
3
|
-
(Call :
|
3
|
+
(Call :sum
|
4
4
|
(InputRef [:depts, :dept, :teams, :team, :headcount])
|
5
5
|
)
|
6
6
|
)
|
7
7
|
(VALUE company_total
|
8
|
-
(Call :
|
9
|
-
(Call :
|
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::
|
2
|
+
module Kumi::Compiled::KUMI_b74a41d0d85c1aa450f7dce23ed22ccfcaf13c330101f5c7ee3f7bc4f4c8b5f4
|
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::
|
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 :
|
3
|
+
(Call :add
|
4
4
|
(InputRef [:global_offset])
|
5
5
|
(Const 1.0)
|
6
6
|
)
|
7
7
|
)
|
8
8
|
(VALUE batch_bias
|
9
|
-
(Call :
|
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 :
|
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 :
|
22
|
-
(Call :
|
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 :
|
30
|
+
(Call :sum
|
31
31
|
(Ref elem_affine)
|
32
32
|
)
|
33
33
|
)
|
34
34
|
(VALUE batch_total_affine
|
35
|
-
(Call :
|
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::
|
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,5 +1,5 @@
|
|
1
1
|
# Autogenerated by Kumi Codegen
|
2
|
-
module Kumi::Compiled::
|
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 :
|
3
|
+
(Call :sum
|
4
4
|
(InputRef [:departments, :dept, :teams, :team, :headcount])
|
5
5
|
)
|
6
6
|
)
|
7
7
|
(VALUE teams_per_dept
|
8
|
-
(Call :
|
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 :
|
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::
|
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
|
-
(
|
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::
|
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::
|
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::
|
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 :
|
3
|
+
(Call :add
|
4
4
|
(InputRef [:x])
|
5
5
|
(InputRef [:y])
|
6
6
|
)
|
7
7
|
)
|
8
8
|
(VALUE product
|
9
|
-
(Call :
|
9
|
+
(Call :multiply
|
10
10
|
(InputRef [:x])
|
11
11
|
(InputRef [:y])
|
12
12
|
)
|
13
13
|
)
|
14
14
|
(VALUE difference
|
15
|
-
(Call :
|
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 :
|
23
|
+
(Call :add
|
24
24
|
(InputRef [:x])
|
25
25
|
(Const 10)
|
26
26
|
)
|
27
|
-
(Call :
|
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::
|
2
|
+
module Kumi::Compiled::KUMI_01c25ad1ae3550b0c23581f73407635ef18b1b5947933fe2edfdcbcef3253d37
|
3
3
|
def self.from(input_data = nil)
|
4
4
|
instance = Object.new
|
5
5
|
instance.extend(self)
|
@@ -1,14 +1,14 @@
|
|
1
1
|
(NAST
|
2
2
|
(VALUE items_subtotal
|
3
|
-
(Call :
|
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 :
|
9
|
+
(Call :multiply
|
10
10
|
(InputRef [:items, :item, :price])
|
11
|
-
(Call :
|
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 :
|
24
|
+
(Call :select
|
25
25
|
(Ref items_is_big)
|
26
|
-
(Call :
|
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 :
|
34
|
+
(Call :sum
|
35
35
|
(InputRef [:items, :item, :qty])
|
36
36
|
)
|
37
37
|
)
|
38
38
|
(VALUE cart_total
|
39
|
-
(Call :
|
39
|
+
(Call :sum
|
40
40
|
(Ref items_subtotal)
|
41
41
|
)
|
42
42
|
)
|
43
43
|
(VALUE cart_total_effective
|
44
|
-
(Call :
|
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::
|
2
|
+
module Kumi::Compiled::KUMI_e1cf5a39d9cce72668a167abe6fc8f84c427d0b38cc7759c0447e7822c722a43
|
3
3
|
def self.from(input_data = nil)
|
4
4
|
instance = Object.new
|
5
5
|
instance.extend(self)
|
@@ -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
|
)
|