kumi 0.0.25 → 0.0.26
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 +9 -0
- data/README.md +70 -71
- 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/select.yaml +3 -1
- data/data/functions/core/stencil.yaml +14 -5
- data/data/functions/core/string.yaml +9 -4
- data/data/kernels/ruby/agg/numeric.yaml +1 -1
- data/docs/UNSAT_DETECTION.md +83 -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/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/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/types/inference.rb +29 -22
- data/lib/kumi/core/types/normalizer.rb +29 -45
- data/lib/kumi/core/types/validator.rb +16 -27
- data/lib/kumi/core/types/value_objects.rb +116 -0
- data/lib/kumi/core/types.rb +45 -37
- data/lib/kumi/registry_v2/loader.rb +90 -0
- data/lib/kumi/registry_v2.rb +18 -1
- data/lib/kumi/version.rb +1 -1
- metadata +21 -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,5 +1,5 @@
|
|
1
1
|
# Autogenerated by Kumi Codegen
|
2
|
-
module Kumi::Compiled::
|
2
|
+
module Kumi::Compiled::KUMI_0f694be63aa892525e8879fe071b4a4a2ad55567b0480c5fca002f748a54818d
|
3
3
|
def self.from(input_data = nil)
|
4
4
|
instance = Object.new
|
5
5
|
instance.extend(self)
|
@@ -26,7 +26,7 @@
|
|
26
26
|
(Ref top_team)
|
27
27
|
)
|
28
28
|
)
|
29
|
-
(Call :
|
29
|
+
(Call :multiply
|
30
30
|
(InputRef [:regions, :region, :offices, :office, :teams, :team, :employees, :employee, :salary])
|
31
31
|
(Const 0.3)
|
32
32
|
)
|
@@ -35,11 +35,11 @@
|
|
35
35
|
(Ref high_performer)
|
36
36
|
(Ref top_team)
|
37
37
|
)
|
38
|
-
(Call :
|
38
|
+
(Call :multiply
|
39
39
|
(InputRef [:regions, :region, :offices, :office, :teams, :team, :employees, :employee, :salary])
|
40
40
|
(Const 0.2)
|
41
41
|
)
|
42
|
-
(Call :
|
42
|
+
(Call :multiply
|
43
43
|
(InputRef [:regions, :region, :offices, :office, :teams, :team, :employees, :employee, :salary])
|
44
44
|
(Const 0.05)
|
45
45
|
)
|
@@ -1,5 +1,5 @@
|
|
1
1
|
# Autogenerated by Kumi Codegen
|
2
|
-
module Kumi::Compiled::
|
2
|
+
module Kumi::Compiled::KUMI_1a4593b5476e9c7cc85dedf77f0d089845a959e9f9031f5838efaf26e3bc5486
|
3
3
|
def self.from(input_data = nil)
|
4
4
|
instance = Object.new
|
5
5
|
instance.extend(self)
|
@@ -1,17 +1,17 @@
|
|
1
1
|
(SNAST
|
2
|
-
(
|
2
|
+
(VALUE high_performer
|
3
3
|
(Call :core.gte
|
4
4
|
(InputRef regions.region.offices.office.teams.team.employees.employee.rating key_chain=[]) :: [regions, offices, teams, employees] -> float
|
5
5
|
(Const 4.5) :: [] -> float
|
6
6
|
) :: [regions, offices, teams, employees] -> boolean
|
7
7
|
) :: [regions, offices, teams, employees] -> boolean
|
8
|
-
(
|
8
|
+
(VALUE senior_level
|
9
9
|
(Call :core.eq
|
10
10
|
(InputRef regions.region.offices.office.teams.team.employees.employee.level key_chain=[]) :: [regions, offices, teams, employees] -> string
|
11
11
|
(Const "senior") :: [] -> string
|
12
12
|
) :: [regions, offices, teams, employees] -> boolean
|
13
13
|
) :: [regions, offices, teams, employees] -> boolean
|
14
|
-
(
|
14
|
+
(VALUE top_team
|
15
15
|
(Call :core.gte
|
16
16
|
(InputRef regions.region.offices.office.teams.team.performance_score key_chain=[]) :: [regions, offices, teams] -> float
|
17
17
|
(Const 0.9) :: [] -> float
|
@@ -1,16 +1,16 @@
|
|
1
1
|
(NAST
|
2
2
|
(VALUE sum_x
|
3
|
-
(Call :
|
3
|
+
(Call :sum
|
4
4
|
(InputRef [:xs, :el, :v])
|
5
5
|
)
|
6
6
|
)
|
7
7
|
(VALUE sum_y
|
8
|
-
(Call :
|
8
|
+
(Call :sum
|
9
9
|
(InputRef [:ys, :el, :v])
|
10
10
|
)
|
11
11
|
)
|
12
12
|
(VALUE tail
|
13
|
-
(Call :
|
13
|
+
(Call :add
|
14
14
|
(Const 7.0)
|
15
15
|
(Const 5.0)
|
16
16
|
)
|
@@ -1,5 +1,5 @@
|
|
1
1
|
# Autogenerated by Kumi Codegen
|
2
|
-
module Kumi::Compiled::
|
2
|
+
module Kumi::Compiled::KUMI_148f63c5601013e142e410da768bff3a0570a673ed771762348612e71bedced6
|
3
3
|
def self.from(input_data = nil)
|
4
4
|
instance = Object.new
|
5
5
|
instance.extend(self)
|
@@ -9,12 +9,12 @@
|
|
9
9
|
(InputRef [:config, :servers, :server, :hostname])
|
10
10
|
)
|
11
11
|
(VALUE server_count
|
12
|
-
(Call :
|
12
|
+
(Call :array_size
|
13
13
|
(InputRef [:config, :servers])
|
14
14
|
)
|
15
15
|
)
|
16
16
|
(VALUE total_ports
|
17
|
-
(Call :
|
17
|
+
(Call :sum
|
18
18
|
(InputRef [:config, :servers, :server, :port])
|
19
19
|
)
|
20
20
|
)
|
@@ -1,5 +1,5 @@
|
|
1
1
|
# Autogenerated by Kumi Codegen
|
2
|
-
module Kumi::Compiled::
|
2
|
+
module Kumi::Compiled::KUMI_fed43480c1728be2102a0f4594e980fcf8558d62874f4f96c32d502b00ea16ae
|
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_87ffe0a010684a3e05fc7ee0390ec80c776ceea5e0f6e32d7438702ccd542084
|
3
3
|
def self.from(input_data = nil)
|
4
4
|
instance = Object.new
|
5
5
|
instance.extend(self)
|
@@ -1,24 +1,24 @@
|
|
1
1
|
(NAST
|
2
2
|
(VALUE x_sq
|
3
|
-
(Call :
|
3
|
+
(Call :multiply
|
4
4
|
(InputRef [:x])
|
5
5
|
(InputRef [:x])
|
6
6
|
)
|
7
7
|
)
|
8
8
|
(VALUE y_sq
|
9
|
-
(Call :
|
9
|
+
(Call :multiply
|
10
10
|
(InputRef [:y])
|
11
11
|
(InputRef [:y])
|
12
12
|
)
|
13
13
|
)
|
14
14
|
(VALUE distance_sq
|
15
|
-
(Call :
|
15
|
+
(Call :add
|
16
16
|
(Ref x_sq)
|
17
17
|
(Ref y_sq)
|
18
18
|
)
|
19
19
|
)
|
20
20
|
(VALUE distance
|
21
|
-
(Call :
|
21
|
+
(Call :power
|
22
22
|
(Ref distance_sq)
|
23
23
|
(Const 0.5)
|
24
24
|
)
|
@@ -1,5 +1,5 @@
|
|
1
1
|
# Autogenerated by Kumi Codegen
|
2
|
-
module Kumi::Compiled::
|
2
|
+
module Kumi::Compiled::KUMI_85aba5f3d4113870359ea38cf7c574c50d05d66e700b059e3ca9c29e9d07d912
|
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_98bd6dd93ae6e80222b0a6d353bac6cc887e2b20924bf5e5cfc392e9aa0b705a
|
3
3
|
def self.from(input_data = nil)
|
4
4
|
instance = Object.new
|
5
5
|
instance.extend(self)
|
@@ -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_4d50da3cac1cc57f195f70b5a33c49b41a4b90846c1536c3d767df15b5c72b7a
|
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_1563f579d65b5974c509af83b7aa99b8e340adf9ec2406de43d1f6278a76a50e
|
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_c68c448fb7a73dbfec6780905fc3ddcdea1f22e8eacda707f2f8432d4ad79ae0
|
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_95f5c5f162bc538a1971324256c0923c4c25ac329f47b44140ea989ce767e3f2
|
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_d4065d9b2c1fa95582e236ac4c79f6623745ec731b5961da26df7c2f9e2a9cb6
|
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_ee08a4690485a37a0f18de249ead6563ffb9cf9625312459a6000d00cad9f29c
|
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_c72cd3609d08e6946eb6c74183f400d8c0678040a863711e4b82a63da1b63319
|
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_1049f6474f9d41f05da4c2b6445c374c1eab40b0ff3089ecb80195a4550bceb8
|
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_52c858dd08717cf97edaff33a54004b4af6c064f32453eb33012e14cd18d48c2
|
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_1d3b2fb0b1b00e7730f48d49c8c33acdea2ee603018ffacfc1349df73a8dd4ee
|
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
|
)
|