about summary refs log tree commit diff stats
path: root/js/scripting-lang/scratch_tests
diff options
context:
space:
mode:
Diffstat (limited to 'js/scripting-lang/scratch_tests')
-rw-r--r--js/scripting-lang/scratch_tests/dev_01_simple_test.txt9
-rw-r--r--js/scripting-lang/scratch_tests/dev_02_test_parser_changes.txt35
-rw-r--r--js/scripting-lang/scratch_tests/fac.txt8
-rw-r--r--js/scripting-lang/scratch_tests/fizzbuzz_explorations.txt7
-rw-r--r--js/scripting-lang/scratch_tests/flatten_scrap.txt25
-rw-r--r--js/scripting-lang/scratch_tests/test_abs.txt10
-rw-r--r--js/scripting-lang/scratch_tests/test_abs_fixed.txt19
-rw-r--r--js/scripting-lang/scratch_tests/test_alternative_syntax.txt18
-rw-r--r--js/scripting-lang/scratch_tests/test_alternatives_only.txt14
-rw-r--r--js/scripting-lang/scratch_tests/test_and_negative.txt6
-rw-r--r--js/scripting-lang/scratch_tests/test_and_negative_fixed.txt14
-rw-r--r--js/scripting-lang/scratch_tests/test_and_operator.txt13
-rw-r--r--js/scripting-lang/scratch_tests/test_and_operator_simple.txt26
-rw-r--r--js/scripting-lang/scratch_tests/test_and_parentheses.txt13
-rw-r--r--js/scripting-lang/scratch_tests/test_and_simple.txt8
-rw-r--r--js/scripting-lang/scratch_tests/test_ast_debug.txt11
-rw-r--r--js/scripting-lang/scratch_tests/test_at_operator.txt21
-rw-r--r--js/scripting-lang/scratch_tests/test_available_functions.txt26
-rw-r--r--js/scripting-lang/scratch_tests/test_backward_compatibility.txt21
-rw-r--r--js/scripting-lang/scratch_tests/test_bool_debug.txt15
-rw-r--r--js/scripting-lang/scratch_tests/test_boolean_keys.txt7
-rw-r--r--js/scripting-lang/scratch_tests/test_case_debug.txt9
-rw-r--r--js/scripting-lang/scratch_tests/test_combinator_solution.txt22
-rw-r--r--js/scripting-lang/scratch_tests/test_comparison_debug.txt10
-rw-r--r--js/scripting-lang/scratch_tests/test_comparison_functions.txt17
-rw-r--r--js/scripting-lang/scratch_tests/test_complex_expr_debug.txt16
-rw-r--r--js/scripting-lang/scratch_tests/test_complex_func_debug.txt13
-rw-r--r--js/scripting-lang/scratch_tests/test_complex_negate.txt28
-rw-r--r--js/scripting-lang/scratch_tests/test_complex_validation_debug.txt21
-rw-r--r--js/scripting-lang/scratch_tests/test_complex_validation_only.txt14
-rw-r--r--js/scripting-lang/scratch_tests/test_compose_debug.txt15
-rw-r--r--js/scripting-lang/scratch_tests/test_compose_debug_detailed.txt22
-rw-r--r--js/scripting-lang/scratch_tests/test_compose_direct.txt9
-rw-r--r--js/scripting-lang/scratch_tests/test_compose_order.txt12
-rw-r--r--js/scripting-lang/scratch_tests/test_composition.txt4
-rw-r--r--js/scripting-lang/scratch_tests/test_composition_debug.txt16
-rw-r--r--js/scripting-lang/scratch_tests/test_composition_implementation.txt34
-rw-r--r--js/scripting-lang/scratch_tests/test_composition_working.txt33
-rw-r--r--js/scripting-lang/scratch_tests/test_control_only.txt25
-rw-r--r--js/scripting-lang/scratch_tests/test_coord_debug.txt13
-rw-r--r--js/scripting-lang/scratch_tests/test_coord_only.txt13
-rw-r--r--js/scripting-lang/scratch_tests/test_current_tables.txt33
-rw-r--r--js/scripting-lang/scratch_tests/test_curry.txt5
-rw-r--r--js/scripting-lang/scratch_tests/test_debug_arrow.txt26
-rw-r--r--js/scripting-lang/scratch_tests/test_debug_composition.txt7
-rw-r--r--js/scripting-lang/scratch_tests/test_debug_enhanced_case.txt19
-rw-r--r--js/scripting-lang/scratch_tests/test_debug_equals.txt26
-rw-r--r--js/scripting-lang/scratch_tests/test_debug_func_call.txt13
-rw-r--r--js/scripting-lang/scratch_tests/test_debug_func_call_when.txt17
-rw-r--r--js/scripting-lang/scratch_tests/test_debug_map.txt27
-rw-r--r--js/scripting-lang/scratch_tests/test_debug_t_map.txt21
-rw-r--r--js/scripting-lang/scratch_tests/test_debug_table.txt11
-rw-r--r--js/scripting-lang/scratch_tests/test_direct_verification.txt63
-rw-r--r--js/scripting-lang/scratch_tests/test_dot_notation.txt12
-rw-r--r--js/scripting-lang/scratch_tests/test_each_combinator.txt59
-rw-r--r--js/scripting-lang/scratch_tests/test_each_comprehensive.txt43
-rw-r--r--js/scripting-lang/scratch_tests/test_each_parsing.txt27
-rw-r--r--js/scripting-lang/scratch_tests/test_each_simple.txt22
-rw-r--r--js/scripting-lang/scratch_tests/test_each_simple_call.txt20
-rw-r--r--js/scripting-lang/scratch_tests/test_each_solution.txt27
-rw-r--r--js/scripting-lang/scratch_tests/test_each_step_by_step.txt26
-rw-r--r--js/scripting-lang/scratch_tests/test_embedded_functions.txt84
-rw-r--r--js/scripting-lang/scratch_tests/test_embedded_functions_comprehensive.txt162
-rw-r--r--js/scripting-lang/scratch_tests/test_embedded_functions_gradual.txt59
-rw-r--r--js/scripting-lang/scratch_tests/test_embedded_functions_minimal.txt40
-rw-r--r--js/scripting-lang/scratch_tests/test_embedded_functions_partial.txt50
-rw-r--r--js/scripting-lang/scratch_tests/test_embedded_functions_simple.txt29
-rw-r--r--js/scripting-lang/scratch_tests/test_enhanced_case_final.txt62
-rw-r--r--js/scripting-lang/scratch_tests/test_enhanced_case_verification.txt229
-rw-r--r--js/scripting-lang/scratch_tests/test_enhanced_compose.txt9
-rw-r--r--js/scripting-lang/scratch_tests/test_enhanced_debug.txt13
-rw-r--r--js/scripting-lang/scratch_tests/test_equals_function.txt17
-rw-r--r--js/scripting-lang/scratch_tests/test_exact_expr_debug.txt13
-rw-r--r--js/scripting-lang/scratch_tests/test_expression_function.txt9
-rw-r--r--js/scripting-lang/scratch_tests/test_factorial.txt8
-rw-r--r--js/scripting-lang/scratch_tests/test_factorial_fixed.txt8
-rw-r--r--js/scripting-lang/scratch_tests/test_filter_debug.txt3
-rw-r--r--js/scripting-lang/scratch_tests/test_filter_issue.txt11
-rw-r--r--js/scripting-lang/scratch_tests/test_first_part.txt48
-rw-r--r--js/scripting-lang/scratch_tests/test_fizzbuzz.txt16
-rw-r--r--js/scripting-lang/scratch_tests/test_fizzbuzz_only.txt13
-rw-r--r--js/scripting-lang/scratch_tests/test_func_call_debug.txt22
-rw-r--r--js/scripting-lang/scratch_tests/test_func_call_debug2.txt11
-rw-r--r--js/scripting-lang/scratch_tests/test_func_call_only.txt10
-rw-r--r--js/scripting-lang/scratch_tests/test_func_call_original.txt10
-rw-r--r--js/scripting-lang/scratch_tests/test_func_call_value.txt12
-rw-r--r--js/scripting-lang/scratch_tests/test_func_call_when.txt10
-rw-r--r--js/scripting-lang/scratch_tests/test_func_calls_debug.txt17
-rw-r--r--js/scripting-lang/scratch_tests/test_func_calls_only.txt17
-rw-r--r--js/scripting-lang/scratch_tests/test_func_debug_detailed.txt24
-rw-r--r--js/scripting-lang/scratch_tests/test_func_eval.txt9
-rw-r--r--js/scripting-lang/scratch_tests/test_func_no_match.txt11
-rw-r--r--js/scripting-lang/scratch_tests/test_func_pattern.txt11
-rw-r--r--js/scripting-lang/scratch_tests/test_func_return.txt9
-rw-r--r--js/scripting-lang/scratch_tests/test_function_arg_syntax.txt3
-rw-r--r--js/scripting-lang/scratch_tests/test_function_body.txt15
-rw-r--r--js/scripting-lang/scratch_tests/test_function_calls_in_tables.txt28
-rw-r--r--js/scripting-lang/scratch_tests/test_function_declaration.txt37
-rw-r--r--js/scripting-lang/scratch_tests/test_function_issue.txt3
-rw-r--r--js/scripting-lang/scratch_tests/test_function_precedence.txt32
-rw-r--r--js/scripting-lang/scratch_tests/test_function_reference.txt8
-rw-r--r--js/scripting-lang/scratch_tests/test_functions.txt15
-rw-r--r--js/scripting-lang/scratch_tests/test_grade.txt15
-rw-r--r--js/scripting-lang/scratch_tests/test_grade_comparison.txt15
-rw-r--r--js/scripting-lang/scratch_tests/test_gradual_build.txt24
-rw-r--r--js/scripting-lang/scratch_tests/test_listen_emit_basic.txt16
-rw-r--r--js/scripting-lang/scratch_tests/test_listen_emit_comprehensive.txt48
-rw-r--r--js/scripting-lang/scratch_tests/test_listen_emit_final.txt44
-rw-r--r--js/scripting-lang/scratch_tests/test_listen_emit_simple.txt16
-rw-r--r--js/scripting-lang/scratch_tests/test_logical_and_debug.txt26
-rw-r--r--js/scripting-lang/scratch_tests/test_map_comparison.txt14
-rw-r--r--js/scripting-lang/scratch_tests/test_minimal_enhanced.txt32
-rw-r--r--js/scripting-lang/scratch_tests/test_minimal_enhanced_case.txt11
-rw-r--r--js/scripting-lang/scratch_tests/test_minimal_when.txt9
-rw-r--r--js/scripting-lang/scratch_tests/test_minus_debug.txt12
-rw-r--r--js/scripting-lang/scratch_tests/test_modulo_in_when.txt30
-rw-r--r--js/scripting-lang/scratch_tests/test_multi_param_when.txt9
-rw-r--r--js/scripting-lang/scratch_tests/test_multi_validation_debug.txt13
-rw-r--r--js/scripting-lang/scratch_tests/test_multi_validation_only.txt13
-rw-r--r--js/scripting-lang/scratch_tests/test_multi_validation_simple.txt13
-rw-r--r--js/scripting-lang/scratch_tests/test_multi_value_expr.txt10
-rw-r--r--js/scripting-lang/scratch_tests/test_multiple_values_parens.txt29
-rw-r--r--js/scripting-lang/scratch_tests/test_nested_debug.txt8
-rw-r--r--js/scripting-lang/scratch_tests/test_nested_functions.txt28
-rw-r--r--js/scripting-lang/scratch_tests/test_nested_only.txt15
-rw-r--r--js/scripting-lang/scratch_tests/test_nested_table.txt10
-rw-r--r--js/scripting-lang/scratch_tests/test_nested_when.txt11
-rw-r--r--js/scripting-lang/scratch_tests/test_original_problem.txt6
-rw-r--r--js/scripting-lang/scratch_tests/test_parens_disambiguation.txt29
-rw-r--r--js/scripting-lang/scratch_tests/test_parens_in_when.txt22
-rw-r--r--js/scripting-lang/scratch_tests/test_parens_multiple.txt37
-rw-r--r--js/scripting-lang/scratch_tests/test_parenthesized_only.txt5
-rw-r--r--js/scripting-lang/scratch_tests/test_pattern_debug.txt14
-rw-r--r--js/scripting-lang/scratch_tests/test_pattern_part1.txt12
-rw-r--r--js/scripting-lang/scratch_tests/test_pattern_part2.txt24
-rw-r--r--js/scripting-lang/scratch_tests/test_pattern_part3.txt28
-rw-r--r--js/scripting-lang/scratch_tests/test_pipe_debug.txt14
-rw-r--r--js/scripting-lang/scratch_tests/test_pipe_function.txt8
-rw-r--r--js/scripting-lang/scratch_tests/test_pipe_nested.txt9
-rw-r--r--js/scripting-lang/scratch_tests/test_pipe_simple.txt11
-rw-r--r--js/scripting-lang/scratch_tests/test_plus_debug.txt3
-rw-r--r--js/scripting-lang/scratch_tests/test_precedence_comprehensive.txt129
-rw-r--r--js/scripting-lang/scratch_tests/test_precedence_fix.txt10
-rw-r--r--js/scripting-lang/scratch_tests/test_precedence_simple.txt21
-rw-r--r--js/scripting-lang/scratch_tests/test_precedence_variations.txt16
-rw-r--r--js/scripting-lang/scratch_tests/test_predicate_functions.txt35
-rw-r--r--js/scripting-lang/scratch_tests/test_reduce_debug.txt3
-rw-r--r--js/scripting-lang/scratch_tests/test_reduce_simple.txt1
-rw-r--r--js/scripting-lang/scratch_tests/test_run_function.js24
-rw-r--r--js/scripting-lang/scratch_tests/test_simple.txt5
-rw-r--r--js/scripting-lang/scratch_tests/test_simple_and.txt14
-rw-r--r--js/scripting-lang/scratch_tests/test_simple_bracket.txt9
-rw-r--r--js/scripting-lang/scratch_tests/test_simple_composition.txt8
-rw-r--r--js/scripting-lang/scratch_tests/test_simple_fizzbuzz.txt43
-rw-r--r--js/scripting-lang/scratch_tests/test_simple_func_call.txt10
-rw-r--r--js/scripting-lang/scratch_tests/test_simple_function.txt9
-rw-r--r--js/scripting-lang/scratch_tests/test_simple_harness.txt7
-rw-r--r--js/scripting-lang/scratch_tests/test_simple_minus.txt4
-rw-r--r--js/scripting-lang/scratch_tests/test_simple_multiple.txt8
-rw-r--r--js/scripting-lang/scratch_tests/test_simple_plus.txt3
-rw-r--r--js/scripting-lang/scratch_tests/test_simple_unary_minus.txt3
-rw-r--r--js/scripting-lang/scratch_tests/test_simple_verification.txt51
-rw-r--r--js/scripting-lang/scratch_tests/test_simple_when.txt9
-rw-r--r--js/scripting-lang/scratch_tests/test_simple_when_equals.txt17
-rw-r--r--js/scripting-lang/scratch_tests/test_t_access_simple.txt13
-rw-r--r--js/scripting-lang/scratch_tests/test_t_function_call.txt15
-rw-r--r--js/scripting-lang/scratch_tests/test_t_namespace.txt11
-rw-r--r--js/scripting-lang/scratch_tests/test_table_access_debug.txt15
-rw-r--r--js/scripting-lang/scratch_tests/test_table_access_in_functions.txt22
-rw-r--r--js/scripting-lang/scratch_tests/test_table_access_only.txt15
-rw-r--r--js/scripting-lang/scratch_tests/test_table_access_when.txt11
-rw-r--r--js/scripting-lang/scratch_tests/test_table_enhancements.txt747
-rw-r--r--js/scripting-lang/scratch_tests/test_table_enhancements_comprehensive.txt90
-rw-r--r--js/scripting-lang/scratch_tests/test_table_enhancements_final.txt84
-rw-r--r--js/scripting-lang/scratch_tests/test_table_enhancements_minimal.txt18
-rw-r--r--js/scripting-lang/scratch_tests/test_table_enhancements_working.txt102
-rw-r--r--js/scripting-lang/scratch_tests/test_table_function.txt11
-rw-r--r--js/scripting-lang/scratch_tests/test_table_structure.txt16
-rw-r--r--js/scripting-lang/scratch_tests/test_unary_minus.txt8
-rw-r--r--js/scripting-lang/scratch_tests/test_unary_plus.txt3
-rw-r--r--js/scripting-lang/scratch_tests/test_when_debug.txt11
-rw-r--r--js/scripting-lang/scratch_tests/test_when_in_table.txt13
-rw-r--r--js/scripting-lang/scratch_tests/test_when_in_table_simple.txt13
-rw-r--r--js/scripting-lang/scratch_tests/test_when_pattern_matching.txt25
-rw-r--r--js/scripting-lang/scratch_tests/test_when_simple.txt7
-rw-r--r--js/scripting-lang/scratch_tests/test_when_string_debug.txt12
-rw-r--r--js/scripting-lang/scratch_tests/test_working_cases.txt11
-rw-r--r--js/scripting-lang/scratch_tests/test_working_multiple.txt18
-rw-r--r--js/scripting-lang/scratch_tests/validate_table_scrap.txt21
189 files changed, 0 insertions, 4817 deletions
diff --git a/js/scripting-lang/scratch_tests/dev_01_simple_test.txt b/js/scripting-lang/scratch_tests/dev_01_simple_test.txt
deleted file mode 100644
index 74edad2..0000000
--- a/js/scripting-lang/scratch_tests/dev_01_simple_test.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-/* Simple test for function call parsing */
-
-factorial : n ->
-  when n is
-    0 then 1
-    _ then n * (factorial (n - 1));
-
-result : factorial 5;
-..out result;
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/dev_02_test_parser_changes.txt b/js/scripting-lang/scratch_tests/dev_02_test_parser_changes.txt
deleted file mode 100644
index a4af8bb..0000000
--- a/js/scripting-lang/scratch_tests/dev_02_test_parser_changes.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-/* Test: Parser Changes */
-/* Tests: Operator expressions are now translated to combinator calls */
-
-/* Test arithmetic operations */
-result1 : 3 + 4;
-result2 : 10 - 3;
-result3 : 5 * 6;
-result4 : 20 / 4;
-result5 : -7;
-
-..out result1;
-..out result2;
-..out result3;
-..out result4;
-..out result5;
-
-/* Test comparison operations */
-test1 : 5 = 5;
-test2 : 3 != 7;
-test3 : 2 < 8;
-test4 : 10 > 3;
-
-..out test1;
-..out test2;
-..out test3;
-..out test4;
-
-/* Test logical operations */
-logic1 : true and true;
-logic2 : false or true;
-logic3 : not false;
-
-..out logic1;
-..out logic2;
-..out logic3; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/fac.txt b/js/scripting-lang/scratch_tests/fac.txt
deleted file mode 100644
index a94f8e1..0000000
--- a/js/scripting-lang/scratch_tests/fac.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-factorial : n -> 
-  when n is
-    0 then 1
-    _ then n * (factorial (n - 1));
-
-/* Using factorial */
-..out factorial 5;  /* Output: 120 */
-..out factorial 0;  /* Output: 1 */
diff --git a/js/scripting-lang/scratch_tests/fizzbuzz_explorations.txt b/js/scripting-lang/scratch_tests/fizzbuzz_explorations.txt
deleted file mode 100644
index fc6c7d1..0000000
--- a/js/scripting-lang/scratch_tests/fizzbuzz_explorations.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-predicates : n -> apply @logicalAnd (equals (n % 3) 0) (equals (n % 5) 0);
-fizzbuzz : n ->
-  when predicates n is
-    true then "FizzBuzz"
-    _ then n;
-
-..out fizzbuzz 100;
diff --git a/js/scripting-lang/scratch_tests/flatten_scrap.txt b/js/scripting-lang/scratch_tests/flatten_scrap.txt
deleted file mode 100644
index e5d5c96..0000000
--- a/js/scripting-lang/scratch_tests/flatten_scrap.txt
+++ /dev/null
@@ -1,25 +0,0 @@
-/* Problem: Flatten nested tables */
-nested : {
-  level1: {
-    a: {value: 1},
-    b: {value: 2}
-  },
-  level2: {
-    c: {value: 3}
-  }
-};
-
-/* Recursive flattening function */
-flatten : table -> 
-  when (t.has table "value") is
-    true then table
-    _ then reduce @t.merge {} (map @flatten_entry table);
-
-flatten_entry : entry -> 
-  when (t.has entry "value") is
-    true then entry
-    _ then flatten entry;
-
-/* Apply flattening */
-flat : flatten nested;
-/* Result: {a: {value: 1}, b: {value: 2}, c: {value: 3}} */
diff --git a/js/scripting-lang/scratch_tests/test_abs.txt b/js/scripting-lang/scratch_tests/test_abs.txt
deleted file mode 100644
index c83d644..0000000
--- a/js/scripting-lang/scratch_tests/test_abs.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-/* Test abs function */
-abs : x -> when x is
-    x < 0 then -x
-    _ then x;
-
-result1 : abs -5;
-result2 : abs 5;
-
-..out result1;
-..out result2; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_abs_fixed.txt b/js/scripting-lang/scratch_tests/test_abs_fixed.txt
deleted file mode 100644
index 57e226d..0000000
--- a/js/scripting-lang/scratch_tests/test_abs_fixed.txt
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Test that abs -5 now works correctly */
-/* This was the original issue from PARSER_BUG_ANALYSIS.md */
-
-x : 5;
-abs : x -> when x is
-    x < 0 then -x
-    _ then x;
-
-/* Test 1: Function call with negative literal - THIS SHOULD WORK NOW */
-result1 : abs -5;  /* Should be apply(abs, negate(5)) = 5 */
-
-/* Test 2: Function call with negative variable - THIS SHOULD WORK NOW */
-result2 : abs -x;  /* Should be apply(abs, negate(x)) = 5 */
-
-/* Test 3: Function call with parenthesized negative expression - THIS SHOULD WORK NOW */
-result3 : abs (-x);  /* Should be apply(abs, negate(x)) = 5 */
-
-/* Test 4: Complex expression with negative argument - THIS SHOULD WORK NOW */
-result4 : abs -5 + 10;  /* Should be add(apply(abs, negate(5)), 10) = 15 */ 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_alternative_syntax.txt b/js/scripting-lang/scratch_tests/test_alternative_syntax.txt
deleted file mode 100644
index 94b25cf..0000000
--- a/js/scripting-lang/scratch_tests/test_alternative_syntax.txt
+++ /dev/null
@@ -1,18 +0,0 @@
-/* Test alternative syntax for -5 + 3 */
-
-/* Original (failing) */
-test1 : -5 + 3;
-
-/* Alternative 1: Parenthesized */
-test2 : (-5) + 3;
-
-/* Alternative 2: Using negate function */
-test3 : negate 5 + 3;
-
-/* Alternative 3: Using subtract */
-test4 : 0 - 5 + 3;
-
-..out test1;
-..out test2;
-..out test3;
-..out test4; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_alternatives_only.txt b/js/scripting-lang/scratch_tests/test_alternatives_only.txt
deleted file mode 100644
index 17406ad..0000000
--- a/js/scripting-lang/scratch_tests/test_alternatives_only.txt
+++ /dev/null
@@ -1,14 +0,0 @@
-/* Test alternative syntaxes only */
-
-/* Alternative 1: Parenthesized */
-test2 : (-5) + 3;
-
-/* Alternative 2: Using negate function */
-test3 : negate 5 + 3;
-
-/* Alternative 3: Using subtract */
-test4 : 0 - 5 + 3;
-
-..out test2;
-..out test3;
-..out test4; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_and_negative.txt b/js/scripting-lang/scratch_tests/test_and_negative.txt
deleted file mode 100644
index 7aafd24..0000000
--- a/js/scripting-lang/scratch_tests/test_and_negative.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-/* Test and operator with negative numbers */
-
-/* Test the problematic expression */
-result1 : (-5 >= 0) and (-5 <= 120);
-
-..out result1; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_and_negative_fixed.txt b/js/scripting-lang/scratch_tests/test_and_negative_fixed.txt
deleted file mode 100644
index f10bd9b..0000000
--- a/js/scripting-lang/scratch_tests/test_and_negative_fixed.txt
+++ /dev/null
@@ -1,14 +0,0 @@
-/* Test and operator with negative numbers - fixed syntax */
-
-/* Test with proper parentheses */
-result1 : ((-5) >= 0) and ((-5) <= 120);
-
-/* Test step by step */
-step1 : (-5) >= 0;
-step2 : (-5) <= 120;
-result2 : step1 and step2;
-
-..out result1;
-..out step1;
-..out step2;
-..out result2; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_and_operator.txt b/js/scripting-lang/scratch_tests/test_and_operator.txt
deleted file mode 100644
index b4624ff..0000000
--- a/js/scripting-lang/scratch_tests/test_and_operator.txt
+++ /dev/null
@@ -1,13 +0,0 @@
-/* Test the and operator in complex expressions */
-
-/* Test the complex expression directly */
-test_expr : age -> age >= 0 and age <= 120;
-
-/* Test with different values */
-result1 : test_expr 30;  /* Should be true */
-result2 : test_expr 150; /* Should be false */
-result3 : test_expr -5;  /* Should be false */
-
-..out result1;
-..out result2;
-..out result3; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_and_operator_simple.txt b/js/scripting-lang/scratch_tests/test_and_operator_simple.txt
deleted file mode 100644
index 7d12e77..0000000
--- a/js/scripting-lang/scratch_tests/test_and_operator_simple.txt
+++ /dev/null
@@ -1,26 +0,0 @@
-/* Test and operator as infix operator */
-
-/* Simple boolean values */
-true_val : true;
-false_val : false;
-
-/* Test and operator with simple values */
-result1 : true_val and false_val;
-result2 : false_val and true_val;
-result3 : true_val and true_val;
-
-/* Test with comparisons */
-comp1 : (-5) >= 0;  /* false */
-comp2 : (-5) <= 120; /* true */
-result4 : comp1 and comp2;  /* false and true = false */
-
-/* Test the original problematic expression */
-original : (-5 >= 0) and (-5 <= 120);
-
-..out result1;
-..out result2;
-..out result3;
-..out comp1;
-..out comp2;
-..out result4;
-..out original; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_and_parentheses.txt b/js/scripting-lang/scratch_tests/test_and_parentheses.txt
deleted file mode 100644
index f799e63..0000000
--- a/js/scripting-lang/scratch_tests/test_and_parentheses.txt
+++ /dev/null
@@ -1,13 +0,0 @@
-/* Test if parentheses can solve the and operator issue */
-
-/* Test the complex expression with parentheses */
-test_expr_parens : age -> (age >= 0) and (age <= 120);
-
-/* Test with different values */
-result1 : test_expr_parens 30;   /* Should be true */
-result2 : test_expr_parens 150;  /* Should be false */
-result3 : test_expr_parens -5;   /* Should be false */
-
-..out result1;
-..out result2;
-..out result3; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_and_simple.txt b/js/scripting-lang/scratch_tests/test_and_simple.txt
deleted file mode 100644
index c68d4c5..0000000
--- a/js/scripting-lang/scratch_tests/test_and_simple.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-/* Test very simple and expression */
-
-/* Test basic and */
-result1 : 1 and 1;
-result2 : 1 and 0;
-
-..out result1;
-..out result2; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_ast_debug.txt b/js/scripting-lang/scratch_tests/test_ast_debug.txt
deleted file mode 100644
index e8a764c..0000000
--- a/js/scripting-lang/scratch_tests/test_ast_debug.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-/* Debug test for AST structure */
-is_even : n -> n % 2 = 0;
-
-test_debug : n ->
-  when n is
-    is_even n then "should not match"
-    4 then "four"
-    _ then "other";
-
-result : test_debug 4;
-..out result; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_at_operator.txt b/js/scripting-lang/scratch_tests/test_at_operator.txt
deleted file mode 100644
index bd663bd..0000000
--- a/js/scripting-lang/scratch_tests/test_at_operator.txt
+++ /dev/null
@@ -1,21 +0,0 @@
-/* Test the @ operator for function references */
-
-f : x -> x * 2;
-g : x -> x + 1;
-
-/* Test 1: Function reference in when expression */
-abs : x -> when x is
-    x < 0 then -x
-    _ then x;
-
-/* Test 2: Using @ operator to reference a function */
-result1 : @f 5;  /* Should be apply(f, 5) = 10 */
-
-/* Test 3: Function reference in when expression */
-test : x -> when x is
-    @f then "f was called"
-    @g then "g was called"
-    _ then "neither";
-
-/* Test 4: Function reference as argument */
-result2 : @f;  /* Should return the function f itself */ 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_available_functions.txt b/js/scripting-lang/scratch_tests/test_available_functions.txt
deleted file mode 100644
index 0274711..0000000
--- a/js/scripting-lang/scratch_tests/test_available_functions.txt
+++ /dev/null
@@ -1,26 +0,0 @@
-/* Test to see what functions are available */
-
-/* Test basic arithmetic */
-result1 : 5 + 3;
-..out "5 + 3:";
-..out result1;
-
-/* Test basic comparison */
-result2 : 5 = 3;
-..out "5 = 3:";
-..out result2;
-
-result3 : 5 = 5;
-..out "5 = 5:";
-..out result3;
-
-/* Test function definition */
-double : x -> x * 2;
-result4 : double 5;
-..out "double 5:";
-..out result4;
-
-/* Test table creation */
-table : {1, 2, 3};
-..out "table:";
-..out table; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_backward_compatibility.txt b/js/scripting-lang/scratch_tests/test_backward_compatibility.txt
deleted file mode 100644
index 787423f..0000000
--- a/js/scripting-lang/scratch_tests/test_backward_compatibility.txt
+++ /dev/null
@@ -1,21 +0,0 @@
-/* Test backward compatibility */
-
-x : 5;
-f : x -> x * 2;
-g : x -> x + 1;
-
-/* All these should work exactly as before */
-result1 : x + 5;
-..out result1;
-
-result2 : f x;
-..out result2;
-
-result3 : f (g x);
-..out result3;
-
-result4 : -x;
-..out result4;
-
-result5 : not true;
-..out result5; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_bool_debug.txt b/js/scripting-lang/scratch_tests/test_bool_debug.txt
deleted file mode 100644
index 8f05705..0000000
--- a/js/scripting-lang/scratch_tests/test_bool_debug.txt
+++ /dev/null
@@ -1,15 +0,0 @@
-/* Test boolean pattern matching more thoroughly */
-
-/* Test with direct boolean values */
-test1 : when true is
-  true then "true matched"
-  false then "false matched"
-  _ then "wildcard matched";
-
-test2 : when false is
-  true then "true matched"
-  false then "false matched"
-  _ then "wildcard matched";
-
-..out test1;
-..out test2; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_boolean_keys.txt b/js/scripting-lang/scratch_tests/test_boolean_keys.txt
deleted file mode 100644
index 85b3f6a..0000000
--- a/js/scripting-lang/scratch_tests/test_boolean_keys.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-/* Test table literals with boolean keys */
-bool_table : {
-    true: "yes",
-    false: "no"
-};
-
-..out "bool_table created successfully"; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_case_debug.txt b/js/scripting-lang/scratch_tests/test_case_debug.txt
deleted file mode 100644
index 6345e16..0000000
--- a/js/scripting-lang/scratch_tests/test_case_debug.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-/* Minimal test to debug case expressions */
-grade : score -> 
-  when score is
-    90 then "A"
-    80 then "B"
-    _  then "F";
-
-result : grade 95;
-..out result; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_combinator_solution.txt b/js/scripting-lang/scratch_tests/test_combinator_solution.txt
deleted file mode 100644
index cc806a0..0000000
--- a/js/scripting-lang/scratch_tests/test_combinator_solution.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-/* Test our combinator solution */
-x : 5;
-y : (x);           /* Should be identity(x) = 5 */
-z : (x - 1);       /* Should be subtract(x, 1) = 4 */
-f : x -> x * 2;
-result1 : f x;     /* Should be apply(f, x) = 10 */
-result2 : (f x);   /* Should be identity(apply(f, x)) = 10 */
-
-/* Test recursive function */
-factorial : n -> 
-  when n is
-    0 then 1
-    _ then n * (factorial (n - 1));
-
-result3 : factorial 3;
-
-/* Print results */
-..out y;
-..out z;
-..out result1;
-..out result2;
-..out result3; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_comparison_debug.txt b/js/scripting-lang/scratch_tests/test_comparison_debug.txt
deleted file mode 100644
index c2d442e..0000000
--- a/js/scripting-lang/scratch_tests/test_comparison_debug.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-/* Debug test for comparison logic */
-is_even : n -> n % 2 = 0;
-
-test_debug : n ->
-  when (is_even n) is
-    true then "even"
-    false then "odd";
-
-result : test_debug 4;
-..out result; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_comparison_functions.txt b/js/scripting-lang/scratch_tests/test_comparison_functions.txt
deleted file mode 100644
index d3f673a..0000000
--- a/js/scripting-lang/scratch_tests/test_comparison_functions.txt
+++ /dev/null
@@ -1,17 +0,0 @@
-/* Test comparison functions */
-
-/* Test greaterThan */
-gt_1 : greaterThan 5 3;
-gt_2 : greaterThan 3 5;
-gt_3 : greaterThan 3 3;
-..assert gt_1 = true;
-..assert gt_2 = false;
-..assert gt_3 = false;
-
-/* Test equals */
-eq_1 : equals 5 5;
-eq_2 : equals 5 3;
-..assert eq_1 = true;
-..assert eq_2 = false;
-
-..out "Comparison functions test completed"; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_complex_expr_debug.txt b/js/scripting-lang/scratch_tests/test_complex_expr_debug.txt
deleted file mode 100644
index 0ca7265..0000000
--- a/js/scripting-lang/scratch_tests/test_complex_expr_debug.txt
+++ /dev/null
@@ -1,16 +0,0 @@
-/* Test complex expression in multi-value pattern */
-
-/* Test the complex expression directly */
-test_expr : age -> age >= 0 and age <= 120;
-
-/* Test with complex expression */
-validate_user : name age ->
-  when (name != "") (test_expr age) is
-    true true then "valid user"
-    true false then "invalid age"
-    false true then "invalid name"
-    false false then "invalid user";
-
-/* Test user validation */
-valid_user : validate_user "Alice" 30;
-..out valid_user; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_complex_func_debug.txt b/js/scripting-lang/scratch_tests/test_complex_func_debug.txt
deleted file mode 100644
index dacb3ca..0000000
--- a/js/scripting-lang/scratch_tests/test_complex_func_debug.txt
+++ /dev/null
@@ -1,13 +0,0 @@
-/* Test complex validation function directly */
-
-/* Complex function for testing */
-complex_validation : x y -> (x > 0) and (y > 0) and (x + y > 10);
-
-/* Test the function directly */
-test1 : complex_validation 5 8;    /* Should be true */
-test2 : complex_validation 0 8;    /* Should be false */
-test3 : complex_validation 5 3;    /* Should be false */
-
-..out test1;
-..out test2;
-..out test3; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_complex_negate.txt b/js/scripting-lang/scratch_tests/test_complex_negate.txt
deleted file mode 100644
index 60f858f..0000000
--- a/js/scripting-lang/scratch_tests/test_complex_negate.txt
+++ /dev/null
@@ -1,28 +0,0 @@
-/* Test complex unary minus scenarios */
-x : 5;
-y : 3;
-
-/* Test nested unary minus */
-z1 : -(-5);           /* negate(negate(5)) = 5 */
-z2 : -(-x);           /* negate(negate(x)) = 5 */
-
-/* Test unary minus with expressions */
-z3 : -(x + y);        /* negate(add(x, y)) = -8 */
-z4 : -x + y;          /* add(negate(x), y) = -2 */
-
-/* Test unary minus with function calls */
-f : x -> x * 2;
-z5 : -f x;            /* negate(apply(f, x)) = -10 */
-
-/* Test edge cases */
-z6 : -0;              /* negate(0) = 0 */
-z7 : -(-0);           /* negate(negate(0)) = 0 */
-
-/* Output results */
-..out z1;
-..out z2;
-..out z3;
-..out z4;
-..out z5;
-..out z6;
-..out z7; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_complex_validation_debug.txt b/js/scripting-lang/scratch_tests/test_complex_validation_debug.txt
deleted file mode 100644
index 7c22dad..0000000
--- a/js/scripting-lang/scratch_tests/test_complex_validation_debug.txt
+++ /dev/null
@@ -1,21 +0,0 @@
-/* Test complex validation part */
-
-/* Complex function for testing */
-complex_validation : x y -> (x > 0) and (y > 0) and (x + y > 10);
-
-/* Using complex function in pattern */
-validate_pair : x y ->
-  when (complex_validation x y) is
-    true then "valid pair"
-    false then "invalid pair";
-
-/* Test complex validation */
-valid_pair : validate_pair 5 8;    /* 5>0, 8>0, 5+8>10 -> true */
-invalid_pair1 : validate_pair 0 8; /* 0>0 is false */
-invalid_pair2 : validate_pair 5 3; /* 5+3>10 is false */
-
-/* Output complex validation results */
-..out "Complex Validation Results:";
-..out valid_pair;
-..out invalid_pair1;
-..out invalid_pair2; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_complex_validation_only.txt b/js/scripting-lang/scratch_tests/test_complex_validation_only.txt
deleted file mode 100644
index d4e0a4a..0000000
--- a/js/scripting-lang/scratch_tests/test_complex_validation_only.txt
+++ /dev/null
@@ -1,14 +0,0 @@
-/* Test just the complex validation part */
-
-/* Complex function for testing */
-complex_validation : x y -> (x > 0) and (y > 0) and (x + y > 10);
-
-/* Using complex function in pattern */
-validate_pair : x y ->
-  when (complex_validation x y) is
-    true then "valid pair"
-    false then "invalid pair";
-
-/* Test complex validation */
-valid_pair : validate_pair 5 8;
-..out valid_pair; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_compose_debug.txt b/js/scripting-lang/scratch_tests/test_compose_debug.txt
deleted file mode 100644
index e4e0f4d..0000000
--- a/js/scripting-lang/scratch_tests/test_compose_debug.txt
+++ /dev/null
@@ -1,15 +0,0 @@
-/* Debug compose function */
-
-f : x -> x * 2;
-g : x -> x + 1;
-
-/* Test individual functions */
-result1 : f 5;
-result2 : g 5;
-..out result1;
-..out result2;
-
-/* Test composition */
-composed : compose(f, g);
-result3 : composed 5;
-..out result3; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_compose_debug_detailed.txt b/js/scripting-lang/scratch_tests/test_compose_debug_detailed.txt
deleted file mode 100644
index 1dd80d7..0000000
--- a/js/scripting-lang/scratch_tests/test_compose_debug_detailed.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-/* Debug compose function in detail */
-
-/* Create simple functions */
-double : x -> x * 2;
-add1 : x -> x + 1;
-
-/* Test individual functions */
-test1 : double 5;
-test2 : add1 5;
-..out test1;
-..out test2;
-
-/* Test composition step by step */
-step1 : add1 5;
-step2 : double step1;
-..out step1;
-..out step2;
-
-/* Test compose function */
-composed : compose(double, add1);
-result : composed 5;
-..out result; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_compose_direct.txt b/js/scripting-lang/scratch_tests/test_compose_direct.txt
deleted file mode 100644
index 103ed46..0000000
--- a/js/scripting-lang/scratch_tests/test_compose_direct.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-/* Test compose function directly */
-
-f : x -> x * 2;
-g : x -> x + 1;
-
-/* Test compose function directly */
-composed : compose(f, g);
-result : composed 5;
-..out result; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_compose_order.txt b/js/scripting-lang/scratch_tests/test_compose_order.txt
deleted file mode 100644
index 2866a6d..0000000
--- a/js/scripting-lang/scratch_tests/test_compose_order.txt
+++ /dev/null
@@ -1,12 +0,0 @@
-/* Test compose function order */
-
-/* Create functions that show the order */
-first : x -> x * 10;
-second : x -> x + 1;
-
-/* Test composition */
-composed : compose(first, second);
-result : composed 5;
-..out result;
-
-/* Expected: first(second(5)) = first(6) = 60 */ 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_composition.txt b/js/scripting-lang/scratch_tests/test_composition.txt
deleted file mode 100644
index 8f52414..0000000
--- a/js/scripting-lang/scratch_tests/test_composition.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-double : x -> x * 2
-triple : x -> x * 3
-composed : double via triple 5;
-..out composed; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_composition_debug.txt b/js/scripting-lang/scratch_tests/test_composition_debug.txt
deleted file mode 100644
index fd5e052..0000000
--- a/js/scripting-lang/scratch_tests/test_composition_debug.txt
+++ /dev/null
@@ -1,16 +0,0 @@
-/* Test function composition with multiple functions */
-f1 : x -> x + 1;
-f2 : x -> x * 2;
-f3 : x -> x - 1;
-f4 : x -> x / 2;
-
-composed1 : compose @f1 (compose @f2 (compose @f3 @f4)) 10;
-composed2 : pipe @f4 (pipe @f3 (pipe @f2 @f1)) 10;
-
-..out "composed1 = ";
-..out composed1;
-..out "composed2 = ";
-..out composed2;
-
-..assert composed1 = 9;
-..assert composed2 = 10.5; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_composition_implementation.txt b/js/scripting-lang/scratch_tests/test_composition_implementation.txt
deleted file mode 100644
index a50065c..0000000
--- a/js/scripting-lang/scratch_tests/test_composition_implementation.txt
+++ /dev/null
@@ -1,34 +0,0 @@
-/* Test function composition implementation */
-
-f : x -> x * 2;
-g : x -> x + 1;
-h : x -> x * x;
-
-/* Test 1: Basic composition */
-result1 : f via g 5;  /* Should be compose(f, g)(5) = f(g(5)) = f(6) = 12 */
-
-/* Test 2: Multiple composition */
-result2 : f via g via h 3;  /* Should be compose(f, compose(g, h))(3) = f(g(h(3))) = f(g(9)) = f(10) = 20 */
-
-/* Test 3: Function references */
-result3 : @f;  /* Should return the function f */
-
-/* Test 4: Function reference in composition */
-result4 : @f via @g 5;  /* Should be compose(f, g)(5) = 12 */
-
-/* Test 5: Pipe function */
-result5 : pipe(f, g) 5;  /* Should be g(f(5)) = g(10) = 11 */
-
-/* Test 6: Backward compatibility */
-result6 : f 5;  /* Should still work: apply(f, 5) = 10 */
-result7 : f g 5;  /* Should still work: apply(apply(f, g), 5) - may fail as expected */
-
-/* Test 7: Natural language examples */
-data : {1, 2, 3, 4, 5};
-result8 : data via filter via map via reduce;  /* Pipeline example */
-
-/* Test 8: Enhanced compose with multiple functions */
-result9 : compose(f, g, h) 2;  /* Should be f(g(h(2))) = f(g(4)) = f(5) = 10 */
-
-/* Test 9: Enhanced pipe with multiple functions */
-result10 : pipe(h, g, f) 2;  /* Should be f(g(h(2))) = f(g(4)) = f(5) = 10 */ 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_composition_working.txt b/js/scripting-lang/scratch_tests/test_composition_working.txt
deleted file mode 100644
index 5ec1d4c..0000000
--- a/js/scripting-lang/scratch_tests/test_composition_working.txt
+++ /dev/null
@@ -1,33 +0,0 @@
-/* Test working composition features */
-
-f : x -> x * 2;
-g : x -> x + 1;
-h : x -> x * x;
-
-/* Test 1: Basic composition */
-result1 : f via g 5;
-..out result1;
-
-/* Test 2: Multiple composition */
-result2 : f via g via h 3;
-..out result2;
-
-/* Test 3: Function references */
-result3 : @f;
-..out result3;
-
-/* Test 4: Function reference in composition */
-result4 : @f via @g 5;
-..out result4;
-
-/* Test 5: Pipe function */
-result5 : pipe(f, g) 5;
-..out result5;
-
-/* Test 6: Enhanced compose with multiple functions */
-result6 : compose(f, g, h) 2;
-..out result6;
-
-/* Test 7: Enhanced pipe with multiple functions */
-result7 : pipe(h, g, f) 2;
-..out result7; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_control_only.txt b/js/scripting-lang/scratch_tests/test_control_only.txt
deleted file mode 100644
index 5e4cc77..0000000
--- a/js/scripting-lang/scratch_tests/test_control_only.txt
+++ /dev/null
@@ -1,25 +0,0 @@
-/* Control tests that should work */
-test_simple : n ->
-  when n is
-    0 then "zero"
-    1 then "one"
-    _ then "other";
-
-test_single_expr : n ->
-  when (n % 3) is
-    0 then "divisible by 3"
-    _ then "not divisible by 3";
-
-test_multi_simple : x y ->
-  when x y is
-    0 0 then "both zero"
-    0 _ then "x zero"
-    _ 0 then "y zero"
-    _ _ then "neither zero";
-
-result1 : test_simple 5;
-result2 : test_single_expr 15;
-result3 : test_multi_simple 0 5;
-..out result1;
-..out result2;
-..out result3; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_coord_debug.txt b/js/scripting-lang/scratch_tests/test_coord_debug.txt
deleted file mode 100644
index 8ef62d1..0000000
--- a/js/scripting-lang/scratch_tests/test_coord_debug.txt
+++ /dev/null
@@ -1,13 +0,0 @@
-/* Test complex coordinate classification */
-
-/* Complex coordinate classification */
-classify_coordinates : x y ->
-  when ((x + 1) % 2) ((y - 1) % 2) is
-    0 0 then "both transformed even"
-    0 1 then "x transformed even, y transformed odd"
-    1 0 then "x transformed odd, y transformed even"
-    1 1 then "both transformed odd";
-
-/* Test coordinate classification */
-coord1 : classify_coordinates 1 1;
-..out coord1; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_coord_only.txt b/js/scripting-lang/scratch_tests/test_coord_only.txt
deleted file mode 100644
index 390e843..0000000
--- a/js/scripting-lang/scratch_tests/test_coord_only.txt
+++ /dev/null
@@ -1,13 +0,0 @@
-/* Test just the complex coordinate classification */
-
-/* Complex coordinate classification */
-classify_coordinates : x y ->
-  when ((x + 1) % 2) ((y - 1) % 2) is
-    0 0 then "both transformed even"
-    0 1 then "x transformed even, y transformed odd"
-    1 0 then "x transformed odd, y transformed even"
-    1 1 then "both transformed odd";
-
-/* Test coordinate classification */
-coord1 : classify_coordinates 1 1;
-..out coord1; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_current_tables.txt b/js/scripting-lang/scratch_tests/test_current_tables.txt
deleted file mode 100644
index e3a64a5..0000000
--- a/js/scripting-lang/scratch_tests/test_current_tables.txt
+++ /dev/null
@@ -1,33 +0,0 @@
-/* Test current table behavior before implementing enhancements */
-
-/* Basic table creation */
-numbers : {1, 2, 3, 4, 5};
-person : {name: "Alice", age: 30, active: true};
-
-/* Test current map behavior */
-double : x -> x * 2;
-doubled : map @double numbers;
-/* Expected: 10 (applies to last value only) */
-
-/* Test current filter behavior */
-isEven : x -> x % 2 == 0;
-even_result : filter @isEven numbers;
-/* Expected: 0 (filter returns 0 for false) */
-
-/* Test current reduce behavior */
-sum : x y -> x + y;
-total : reduce @sum 0 numbers;
-/* Expected: 5 (reduces with last value only) */
-
-/* Output results */
-..out "Current table behavior:";
-..out "Numbers:";
-..out numbers;
-..out "Person:";
-..out person;
-..out "Map result:";
-..out doubled;
-..out "Filter result:";
-..out even_result;
-..out "Reduce result:";
-..out total; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_curry.txt b/js/scripting-lang/scratch_tests/test_curry.txt
deleted file mode 100644
index f3b3661..0000000
--- a/js/scripting-lang/scratch_tests/test_curry.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-/* Curry test */
-
-add_func : x y -> x + y;
-curried : curry @add_func 3 4;
-..out curried; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_debug_arrow.txt b/js/scripting-lang/scratch_tests/test_debug_arrow.txt
deleted file mode 100644
index 050bf18..0000000
--- a/js/scripting-lang/scratch_tests/test_debug_arrow.txt
+++ /dev/null
@@ -1,26 +0,0 @@
-/* Debug test for arrow functions */
-
-// Test 1: Regular arrow function assignment
-add_func : x y -> x + y;
-
-// Test 2: Arrow function in table
-calculator : {
-    add: x y -> x + y
-};
-
-// Test 3: Just the table creation
-table_only : {
-    name: "test",
-    add: x y -> x + y
-};
-
-// Output tests
-..out "=== DEBUG ARROW FUNCTIONS ===";
-
-..out "Regular function:";
-result1 : add_func 5 3;
-..out result1;
-
-..out "Table function:";
-result2 : calculator.add 5 3;
-..out result2; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_debug_composition.txt b/js/scripting-lang/scratch_tests/test_debug_composition.txt
deleted file mode 100644
index 24947fc..0000000
--- a/js/scripting-lang/scratch_tests/test_debug_composition.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-/* Debug composition parsing */
-
-f : x -> x * 2;
-g : x -> x + 1;
-
-/* Test basic composition */
-result : f via g 5; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_debug_enhanced_case.txt b/js/scripting-lang/scratch_tests/test_debug_enhanced_case.txt
deleted file mode 100644
index 2090669..0000000
--- a/js/scripting-lang/scratch_tests/test_debug_enhanced_case.txt
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Debug test for enhanced case statements */
-
-/* Simple test first */
-mod3 : n -> n % 3;
-mod5 : n -> n % 5;
-is_zero : x -> x = 0;
-
-/* Test basic function calls */
-test1 : mod3 15;
-test2 : mod5 15;
-test3 : is_zero 0;
-
-..out test1;
-..out test2;
-..out test3;
-
-/* Test table with function calls */
-test_table : {mod3 15, mod5 15};
-..out test_table; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_debug_equals.txt b/js/scripting-lang/scratch_tests/test_debug_equals.txt
deleted file mode 100644
index da3e0cd..0000000
--- a/js/scripting-lang/scratch_tests/test_debug_equals.txt
+++ /dev/null
@@ -1,26 +0,0 @@
-/* Debug test for equals function */
-
-/* Test equals directly */
-result1 : equals 5 3;
-..out "equals 5 3:";
-..out result1;
-
-result2 : equals 0 0;
-..out "equals 0 0:";
-..out result2;
-
-/* Test is_zero function */
-is_zero : x -> equals x 0;
-result3 : is_zero 0;
-..out "is_zero 0:";
-..out result3;
-
-result4 : is_zero 5;
-..out "is_zero 5:";
-..out result4;
-
-/* Test map with is_zero */
-test_values : {0, 1, 2};
-zero_test : map @is_zero test_values;
-..out "map @is_zero {0, 1, 2}:";
-..out zero_test; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_debug_func_call.txt b/js/scripting-lang/scratch_tests/test_debug_func_call.txt
deleted file mode 100644
index 5b3ae21..0000000
--- a/js/scripting-lang/scratch_tests/test_debug_func_call.txt
+++ /dev/null
@@ -1,13 +0,0 @@
-/* Debug test for function calls */
-is_even : n -> n % 2 = 0;
-
-test_debug : n ->
-  when n is
-    0 then "zero"
-    1 then "one"
-    _ then "other";
-
-result1 : test_debug 0;
-result2 : is_even 4;
-..out result1;
-..out result2; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_debug_func_call_when.txt b/js/scripting-lang/scratch_tests/test_debug_func_call_when.txt
deleted file mode 100644
index 8132d0b..0000000
--- a/js/scripting-lang/scratch_tests/test_debug_func_call_when.txt
+++ /dev/null
@@ -1,17 +0,0 @@
-/* Debug test for function calls in when expressions */
-is_even : n -> n % 2 = 0;
-
-test_debug : n ->
-  when is_even n is
-    true then "even"
-    false then "odd";
-
-/* Test the function call separately */
-result1 : is_even 4;
-result2 : is_even 5;
-
-/* Test the when expression */
-result3 : test_debug 4;
-..out result1;
-..out result2;
-..out result3; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_debug_map.txt b/js/scripting-lang/scratch_tests/test_debug_map.txt
deleted file mode 100644
index 7d178f2..0000000
--- a/js/scripting-lang/scratch_tests/test_debug_map.txt
+++ /dev/null
@@ -1,27 +0,0 @@
-/* Debug test for map function */
-
-/* Test basic map functionality */
-double : x -> x * 2;
-numbers : {1, 2, 3};
-doubled : map @double numbers;
-..out "Doubled numbers:";
-..out doubled;
-
-/* Test map with equals */
-is_zero : x -> equals x 0;
-test_values : {0, 1, 2};
-zero_test : map @is_zero test_values;
-..out "Zero test:";
-..out zero_test;
-
-/* Test with our specific case */
-mod3 : n -> n % 3;
-mod5 : n -> n % 5;
-div_15 : {mod3 15, mod5 15};
-..out "Div 15:";
-..out div_15;
-
-divisibility : n -> map @is_zero {mod3 n, mod5 n};
-result : divisibility 15;
-..out "Divisibility result:";
-..out result; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_debug_t_map.txt b/js/scripting-lang/scratch_tests/test_debug_t_map.txt
deleted file mode 100644
index f8ec8a9..0000000
--- a/js/scripting-lang/scratch_tests/test_debug_t_map.txt
+++ /dev/null
@@ -1,21 +0,0 @@
-/* Debug test for t.map */
-
-/* Basic table creation */
-numbers : {1, 2, 3, 4, 5};
-
-/* Test direct function call */
-double : x -> x * 2;
-
-/* Test t.map step by step */
-step1 : t.map;
-step2 : step1 @double;
-step3 : step2 numbers;
-
-/* Output results */
-..out "=== DEBUG T.MAP ===";
-..out "Step 1 (t.map):";
-..out step1;
-..out "Step 2 (t.map @double):";
-..out step2;
-..out "Step 3 (result numbers):";
-..out step3; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_debug_table.txt b/js/scripting-lang/scratch_tests/test_debug_table.txt
deleted file mode 100644
index 4306a4c..0000000
--- a/js/scripting-lang/scratch_tests/test_debug_table.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-/* Debug table function parsing */
-
-// Test with debug output
-table : {
-    func: x -> x,
-    value: 42
-};
-
-// Just try to access the value first
-..out "=== DEBUG TABLE ===";
-..out table.value; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_direct_verification.txt b/js/scripting-lang/scratch_tests/test_direct_verification.txt
deleted file mode 100644
index 6302c05..0000000
--- a/js/scripting-lang/scratch_tests/test_direct_verification.txt
+++ /dev/null
@@ -1,63 +0,0 @@
-/* Direct verification test for enhanced case statements */
-
-/* Test 1: Basic table creation */
-basic : {1, 2, 3};
-..out "Basic table:";
-..out basic;
-
-/* Test 2: Auto-indexed table with expressions */
-/* Work around parser limitation by using variables */
-a : 5 % 3;
-b : 5 % 5;
-expr : {a, b};
-..out "Expression table:";
-..out expr;
-
-/* Test 3: Map with equals 0 */
-/* Work around parser limitation by using variables */
-c : 15 % 3;
-d : 15 % 5;
-is_zero : x -> equals x 0;
-mapped : map @is_zero {c, d};
-..out "Mapped table:";
-..out mapped;
-
-/* Test 4: Simple table pattern matching */
-test_table : {1: true, 2: false};
-result : when test_table is
-    {1: true, 2: true} then "both true"
-    {1: true, 2: false} then "first true"
-    {1: false, 2: true} then "second true"
-    {1: false, 2: false} then "both false";
-..out "Pattern match result:";
-..out result;
-
-/* Test 5: FizzBuzz divisibility function */
-/* Work around parser limitation by using a helper function */
-mod3 : n -> n % 3;
-mod5 : n -> n % 5;
-is_zero : x -> equals x 0;
-divisibility : n -> map @is_zero {mod3 n, mod5 n};
-
-div_15 : divisibility 15;
-..out "Divisibility for 15:";
-..out div_15;
-
-/* Test 6: Complete FizzBuzz */
-fizzbuzz : n ->
-  when divisibility n is
-    {1: true, 2: true} then "FizzBuzz"
-    {1: true, 2: false} then "Fizz"
-    {1: false, 2: true} then "Buzz"
-    {1: false, 2: false} then n;
-
-fizz_15 : fizzbuzz 15;
-fizz_3 : fizzbuzz 3;
-fizz_5 : fizzbuzz 5;
-fizz_7 : fizzbuzz 7;
-
-..out "FizzBuzz results:";
-..out "15: " + fizz_15;
-..out "3: " + fizz_3;
-..out "5: " + fizz_5;
-..out "7: " + fizz_7; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_dot_notation.txt b/js/scripting-lang/scratch_tests/test_dot_notation.txt
deleted file mode 100644
index 47f7b65..0000000
--- a/js/scripting-lang/scratch_tests/test_dot_notation.txt
+++ /dev/null
@@ -1,12 +0,0 @@
-/* Test dot notation parsing */
-
-/* Basic table creation */
-numbers : {1, 2, 3};
-
-/* Test simple dot access */
-t_access : t.map;
-
-/* Output results */
-..out "=== DOT NOTATION TEST ===";
-..out "t.map access:";
-..out t_access; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_each_combinator.txt b/js/scripting-lang/scratch_tests/test_each_combinator.txt
deleted file mode 100644
index 487b0f0..0000000
--- a/js/scripting-lang/scratch_tests/test_each_combinator.txt
+++ /dev/null
@@ -1,59 +0,0 @@
-/* Test each combinator for APL-style element-wise operations */
-
-/* Basic table creation */
-numbers : {1, 2, 3, 4, 5};
-table1 : {a: 1, b: 2, c: 3};
-table2 : {a: 10, b: 20, c: 30};
-
-/* Test each with no tables (backward compatibility) */
-normal_add : each @add 5 3;
-/* Expected: 8 */
-
-/* Test each with single table */
-double : x -> x * 2;
-each_result : each @double numbers;
-/* Expected: {1: 2, 2: 4, 3: 6, 4: 8, 5: 10} */
-
-/* Test each with mixed table and scalar */
-mixed_operation : each @add numbers 10;
-/* Expected: {1: 11, 2: 12, 3: 13, 4: 14, 5: 15} */
-
-/* Test each with multiple tables */
-multi_table_sum : each @add table1 table2;
-/* Expected: {a: 11, b: 22, c: 33} */
-
-/* Test each with three arguments using composition */
-add_100 : x -> add x 100;
-triple_sum : each @add_100 table1;
-/* Expected: {a: 101, b: 102, c: 103} */
-
-/* Test nested table operations */
-nested : {
-    data: {a: 1, b: 2, c: 3},
-    meta: {type: "numbers", count: 3}
-};
-
-/* Top-level only (nested tables unchanged) */
-top_level_only : each @double nested;
-/* Expected: {data: {a: 1, b: 2, c: 3}, meta: {type: "numbers", count: 3}} */
-
-/* Nested operations with explicit composition */
-nested_doubled : each (each @double) nested;
-/* Expected: {data: {a: 2, b: 4, c: 6}, meta: {type: "numbers", count: 3}} */
-
-/* Output results */
-..out "=== EACH COMBINATOR TESTS ===";
-..out "Normal add (no tables):";
-..out normal_add;
-..out "Each with single table:";
-..out each_result;
-..out "Each with mixed table and scalar:";
-..out mixed_operation;
-..out "Each with multiple tables:";
-..out multi_table_sum;
-..out "Each with three arguments using composition:";
-..out triple_sum;
-..out "Top-level only (nested):";
-..out top_level_only;
-..out "Nested with explicit composition:";
-..out nested_doubled; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_each_comprehensive.txt b/js/scripting-lang/scratch_tests/test_each_comprehensive.txt
deleted file mode 100644
index abcb74f..0000000
--- a/js/scripting-lang/scratch_tests/test_each_comprehensive.txt
+++ /dev/null
@@ -1,43 +0,0 @@
-/* Comprehensive test for each combinator */
-
-numbers : {1, 2, 3, 4, 5};
-table1 : {a: 1, b: 2, c: 3};
-table2 : {a: 10, b: 20, c: 30};
-
-/* Test 1: each with table and scalar */
-result1 : each @add numbers 10;
-..out "Test 1 - each with table and scalar:";
-..out result1;
-
-/* Test 2: each with two tables */
-result2 : each @add table1 table2;
-..out "Test 2 - each with two tables:";
-..out result2;
-
-/* Test 3: each with scalar and table */
-result3 : each @add 10 numbers;
-..out "Test 3 - each with scalar and table:";
-..out result3;
-
-/* Test 4: each with partial application */
-add_to_ten : each @add 10;
-result4 : add_to_ten numbers;
-..out "Test 4 - each with partial application:";
-..out result4;
-
-/* Test 5: each with different operations */
-result5 : each @multiply numbers 2;
-..out "Test 5 - each with multiply:";
-..out result5;
-
-/* Test 6: each with comparison */
-result6 : each @greaterThan numbers 3;
-..out "Test 6 - each with comparison:";
-..out result6;
-
-/* Test 7: each with nested tables */
-nested1 : {data: {x: 1, y: 2}, meta: {type: "point"}};
-nested2 : {data: {x: 10, y: 20}, meta: {type: "point"}};
-result7 : each @add nested1 nested2;
-..out "Test 7 - each with nested tables:";
-..out result7; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_each_parsing.txt b/js/scripting-lang/scratch_tests/test_each_parsing.txt
deleted file mode 100644
index 59ba27c..0000000
--- a/js/scripting-lang/scratch_tests/test_each_parsing.txt
+++ /dev/null
@@ -1,27 +0,0 @@
-/* Test to understand each parsing behavior */
-
-numbers : {1, 2, 3, 4, 5};
-add_ten : x -> x + 10;
-
-/* Test 1: each with single table - should work like map */
-result1 : each @add_ten numbers;
-..out "Test 1 - each with single table:";
-..out result1;
-
-/* Test 2: each with table and scalar - should work */
-result2 : each @add numbers 10;
-..out "Test 2 - each with table and scalar:";
-..out result2;
-
-/* Test 3: each with two tables - should work */
-table1 : {a: 1, b: 2, c: 3};
-table2 : {a: 10, b: 20, c: 30};
-result3 : each @add table1 table2;
-..out "Test 3 - each with two tables:";
-..out result3;
-
-/* Test 4: each with partial application - should work */
-add_to_ten : each @add 10;
-result4 : add_to_ten numbers;
-..out "Test 4 - each with partial application:";
-..out result4; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_each_simple.txt b/js/scripting-lang/scratch_tests/test_each_simple.txt
deleted file mode 100644
index 45c941a..0000000
--- a/js/scripting-lang/scratch_tests/test_each_simple.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-/* Simple each test */
-
-numbers : {1, 2, 3, 4, 5};
-
-/* each with table and scalar */
-each_add : each @add numbers 10;
-each_1 : each_add[1];
-each_2 : each_add[2];
-each_3 : each_add[3];
-..assert each_1 = 11;
-..assert each_2 = 12;
-..assert each_3 = 13;
-
-/* each with two tables */
-table1 : {a: 1, b: 2, c: 3};
-table2 : {a: 10, b: 20, c: 30};
-each_sum : each @add table1 table2;
-..assert each_sum.a = 11;
-..assert each_sum.b = 22;
-..assert each_sum.c = 33;
-
-..out "Simple each test completed"; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_each_simple_call.txt b/js/scripting-lang/scratch_tests/test_each_simple_call.txt
deleted file mode 100644
index 746d0d4..0000000
--- a/js/scripting-lang/scratch_tests/test_each_simple_call.txt
+++ /dev/null
@@ -1,20 +0,0 @@
-/* Simple test for each function call */
-
-/* Basic table creation */
-numbers : {1, 2, 3};
-
-/* Define function */
-double : x -> x * 2;
-
-/* Test direct function call */
-direct_call : double 5;
-
-/* Test each with explicit arguments */
-each_call : each @double numbers;
-
-/* Output results */
-..out "=== EACH SIMPLE CALL TEST ===";
-..out "Direct call result:";
-..out direct_call;
-..out "Each call result:";
-..out each_call; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_each_solution.txt b/js/scripting-lang/scratch_tests/test_each_solution.txt
deleted file mode 100644
index f8dbf90..0000000
--- a/js/scripting-lang/scratch_tests/test_each_solution.txt
+++ /dev/null
@@ -1,27 +0,0 @@
-/* Test to show correct usage patterns for each */
-
-numbers : {1, 2, 3, 4, 5};
-add_ten : x -> x + 10;
-
-/* For single table operations, use map */
-map_result : map @add_ten numbers;
-..out "Map with single table:";
-..out map_result;
-
-/* For two-argument operations with table and scalar, use each */
-each_result1 : each @add numbers 10;
-..out "Each with table and scalar:";
-..out each_result1;
-
-/* For two-table operations, use each */
-table1 : {a: 1, b: 2, c: 3};
-table2 : {a: 10, b: 20, c: 30};
-each_result2 : each @add table1 table2;
-..out "Each with two tables:";
-..out each_result2;
-
-/* For partial application, use each */
-add_to_ten : each @add 10;
-each_result3 : add_to_ten numbers;
-..out "Each with partial application:";
-..out each_result3; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_each_step_by_step.txt b/js/scripting-lang/scratch_tests/test_each_step_by_step.txt
deleted file mode 100644
index 2a0e3ef..0000000
--- a/js/scripting-lang/scratch_tests/test_each_step_by_step.txt
+++ /dev/null
@@ -1,26 +0,0 @@
-/* Step-by-step test for each combinator */
-
-/* Basic table creation */
-numbers : {1, 2, 3};
-
-/* Define function first */
-double : x -> x * 2;
-
-/* Test each step by step */
-step1 : each;
-step2 : step1 @double;
-step3 : step2 numbers;
-
-/* Test direct call */
-direct_result : each @double numbers;
-
-/* Output results */
-..out "=== EACH STEP BY STEP TEST ===";
-..out "Step 1 (each):";
-..out step1;
-..out "Step 2 (each @double):";
-..out step2;
-..out "Step 3 (result numbers):";
-..out step3;
-..out "Direct result:";
-..out direct_result; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_embedded_functions.txt b/js/scripting-lang/scratch_tests/test_embedded_functions.txt
deleted file mode 100644
index 4be9365..0000000
--- a/js/scripting-lang/scratch_tests/test_embedded_functions.txt
+++ /dev/null
@@ -1,84 +0,0 @@
-/* Test embedded functions in tables */
-
-// Test 1: Simple embedded function (arrow syntax)
-calculator : {
-    add: x y -> x + y,
-    multiply: x y -> x * y
-};
-
-// Test 2: Arrow function syntax
-calculator2 : {
-    add: x y -> x + y,
-    multiply: x y -> x * y
-};
-
-// Test 3: When expression in table
-classifier : {
-    classify: x -> when x is
-        0 then "zero"
-        1 then "one"
-        _ then "other"
-};
-
-// Test 4: Mixed content
-mixed : {
-    name: "Calculator",
-    version: 1.0,
-    add: x y -> x + y,
-    is_valid: x -> x > 0
-};
-
-// Test 5: Nested tables with functions
-nested : {
-    math: {
-        add: x y -> x + y,
-        subtract: x y -> x - y
-    },
-    logic: {
-        logical_and: x y -> x and y,
-        logical_or: x y -> x or y
-    }
-};
-
-// Test 6: Function that returns a table
-table_factory : {
-    create_point: x y -> {x: x, y: y},
-    create_range: start end -> {start: start, end: end, length: end - start}
-};
-
-// Output tests
-..out "=== EMBEDDED FUNCTIONS TEST ===";
-
-..out "Calculator add:";
-result1 : calculator.add 5 3;
-..out result1;
-
-..out "Calculator2 multiply:";
-result2 : calculator2.multiply 4 7;
-..out result2;
-
-..out "Classifier:";
-class1 : classifier.classify 0;
-..out class1;
-class2 : classifier.classify 5;
-..out class2;
-
-..out "Mixed table:";
-..out mixed.name;
-..out mixed.version;
-result3 : mixed.add 10 20;
-..out result3;
-valid : mixed.is_valid 5;
-..out valid;
-
-..out "Nested functions:";
-nested_add : nested.math.add 15 25;
-..out nested_add;
-nested_logic : nested.logic.logical_and true false;
-..out nested_logic;
-
-..out "Table factory:";
-point : table_factory.create_point 10 20;
-..out point;
-range : table_factory.create_range 1 10;
-..out range; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_embedded_functions_comprehensive.txt b/js/scripting-lang/scratch_tests/test_embedded_functions_comprehensive.txt
deleted file mode 100644
index 9a2eeab..0000000
--- a/js/scripting-lang/scratch_tests/test_embedded_functions_comprehensive.txt
+++ /dev/null
@@ -1,162 +0,0 @@
-/* Comprehensive test for embedded functions in tables */
-
-/* Test 1: Basic arrow functions */
-basic : {
-    identity: x -> x,
-    double: x -> x * 2,
-    add: x y -> x + y,
-    multiply: x y -> x * y
-};
-
-/* Test 2: When expressions */
-classifier : {
-    classify: x -> when x is
-        0 then "zero"
-        1 then "one"
-        2 then "two"
-        _ then "other",
-    is_positive: x -> when x is
-        0 then false
-        _ then true
-};
-
-/* Test 3: Mixed content tables */
-mixed : {
-    name: "Calculator",
-    version: 1.0,
-    active: true,
-    add: x y -> x + y,
-    is_valid: x -> x > 0,
-    description: "A calculator with embedded functions"
-};
-
-/* Test 4: Nested tables with functions */
-nested : {
-    math: {
-        add: x y -> x + y,
-        subtract: x y -> x - y,
-        multiply: x y -> x * y,
-        divide: x y -> x / y
-    },
-    logic: {
-        logical_and: x y -> x and y,
-        logical_or: x y -> x or y,
-        logical_not: x -> not x
-    },
-    utils: {
-        abs: x -> when x is
-            0 then 0
-            _ then x,
-        max: x y -> when x is
-            0 then y
-            _ then x
-    }
-};
-
-/* Test 5: Functions that return tables */
-table_factory : {
-    create_point: x y -> {x: x, y: y},
-    create_range: start end -> {start: start, end: end, length: end - start},
-    create_config: name value -> {
-        name: name,
-        value: value,
-        timestamp: 1234567890
-    }
-};
-
-/* Test 6: Complex nested functions */
-complex : {
-    math: {
-        operations: {
-            add: x y -> x + y,
-            multiply: x y -> x * y
-        },
-        helpers: {
-            square: x -> x * x,
-            cube: x -> x * x * x
-        }
-    },
-    data: {
-        processors: {
-            map: f list -> list,  /* Placeholder for map function */
-            filter: p list -> list  /* Placeholder for filter function */
-        }
-    }
-};
-
-/* Output tests */
-..out "=== COMPREHENSIVE EMBEDDED FUNCTIONS TEST ===";
-
-..out "Basic functions:";
-id_result : basic.identity 42;
-..out id_result;
-double_result : basic.double 21;
-..out double_result;
-add_result : basic.add 10 20;
-..out add_result;
-mult_result : basic.multiply 6 7;
-..out mult_result;
-
-..out "Classifier functions:";
-class_zero : classifier.classify 0;
-..out class_zero;
-class_one : classifier.classify 1;
-..out class_one;
-class_other : classifier.classify 99;
-..out class_other;
-pos_test : classifier.is_positive 5;
-..out pos_test;
-neg_test : classifier.is_positive -3;
-..out neg_test;
-
-..out "Mixed table:";
-..out mixed.name;
-..out mixed.version;
-..out mixed.active;
-mixed_add : mixed.add 15 25;
-..out mixed_add;
-mixed_valid : mixed.is_valid 10;
-..out mixed_valid;
-..out mixed.description;
-
-..out "Nested math functions:";
-nested_add : nested.math.add 100 200;
-..out nested_add;
-nested_sub : nested.math.subtract 50 30;
-..out nested_sub;
-nested_mul : nested.math.multiply 8 9;
-..out nested_mul;
-nested_div : nested.math.divide 100 4;
-..out nested_div;
-
-..out "Nested logic functions:";
-logic_and : nested.logic.logical_and true false;
-..out logic_and;
-logic_or : nested.logic.logical_or true false;
-..out logic_or;
-logic_not : nested.logic.logical_not false;
-..out logic_not;
-
-..out "Nested utility functions:";
-abs_neg : nested.utils.abs -42;
-..out abs_neg;
-abs_pos : nested.utils.abs 42;
-..out abs_pos;
-max_test : nested.utils.max 10 20;
-..out max_test;
-
-..out "Table factory functions:";
-point : table_factory.create_point 15 25;
-..out point;
-range : table_factory.create_range 1 10;
-..out range;
-config : table_factory.create_config "test" 123;
-..out config;
-
-..out "Complex nested functions:";
-complex_add : complex.math.operations.add 5 10;
-..out complex_add;
-complex_square : complex.math.helpers.square 6;
-..out complex_square;
-complex_cube : complex.math.helpers.cube 3;
-..out complex_cube; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_embedded_functions_gradual.txt b/js/scripting-lang/scratch_tests/test_embedded_functions_gradual.txt
deleted file mode 100644
index 7387c93..0000000
--- a/js/scripting-lang/scratch_tests/test_embedded_functions_gradual.txt
+++ /dev/null
@@ -1,59 +0,0 @@
-/* Gradual embedded functions test */
-
-// Test 1: Basic arrow functions
-basic : {
-    identity: x -> x,
-    double: x -> x * 2
-};
-
-// Test 2: When expressions (simple)
-classifier1 : {
-    classify: x -> when x is
-        0 then "zero"
-        _ then "other"
-};
-
-// Test 3: When expressions (multiple cases)
-classifier2 : {
-    classify: x -> when x is
-        0 then "zero"
-        1 then "one"
-        2 then "two"
-        _ then "other"
-};
-
-// Test 4: Mixed content tables
-mixed : {
-    name: "Calculator",
-    add: x y -> x + y
-};
-
-// Output tests
-..out "=== GRADUAL EMBEDDED FUNCTIONS TEST ===";
-
-..out "Basic functions:";
-id_result : basic.identity 42;
-..out id_result;
-double_result : basic.double 21;
-..out double_result;
-
-..out "Simple classifier:";
-class1_zero : classifier1.classify 0;
-..out class1_zero;
-class1_other : classifier1.classify 99;
-..out class1_other;
-
-..out "Complex classifier:";
-class2_zero : classifier2.classify 0;
-..out class2_zero;
-class2_one : classifier2.classify 1;
-..out class2_one;
-class2_two : classifier2.classify 2;
-..out class2_two;
-class2_other : classifier2.classify 99;
-..out class2_other;
-
-..out "Mixed table:";
-..out mixed.name;
-mixed_add : mixed.add 15 25;
-..out mixed_add; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_embedded_functions_minimal.txt b/js/scripting-lang/scratch_tests/test_embedded_functions_minimal.txt
deleted file mode 100644
index 8a516f0..0000000
--- a/js/scripting-lang/scratch_tests/test_embedded_functions_minimal.txt
+++ /dev/null
@@ -1,40 +0,0 @@
-/* Minimal embedded functions test */
-
-// Test 1: Basic arrow functions
-basic : {
-    identity: x -> x,
-    double: x -> x * 2
-};
-
-// Test 2: When expressions
-classifier : {
-    classify: x -> when x is
-        0 then "zero"
-        _ then "other"
-};
-
-// Test 3: Mixed content tables
-mixed : {
-    name: "Calculator",
-    add: x y -> x + y
-};
-
-// Output tests
-..out "=== MINIMAL EMBEDDED FUNCTIONS TEST ===";
-
-..out "Basic functions:";
-id_result : basic.identity 42;
-..out id_result;
-double_result : basic.double 21;
-..out double_result;
-
-..out "Classifier functions:";
-class_zero : classifier.classify 0;
-..out class_zero;
-class_other : classifier.classify 99;
-..out class_other;
-
-..out "Mixed table:";
-..out mixed.name;
-mixed_add : mixed.add 15 25;
-..out mixed_add; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_embedded_functions_partial.txt b/js/scripting-lang/scratch_tests/test_embedded_functions_partial.txt
deleted file mode 100644
index 7cc201c..0000000
--- a/js/scripting-lang/scratch_tests/test_embedded_functions_partial.txt
+++ /dev/null
@@ -1,50 +0,0 @@
-/* Partial embedded functions test */
-
-/* Test 1: Basic arrow functions */
-basic : {
-    identity: x -> x,
-    double: x -> x * 2,
-    add: x y -> x + y,
-    multiply: x y -> x * y
-};
-
-/* Test 2: When expressions */
-classifier : {
-    classify: x -> when x is
-        0 then "zero"
-        1 then "one"
-        2 then "two"
-        _ then "other",
-    is_positive: x -> when x is
-        0 then false
-        _ then true
-};
-
-/* Output tests */
-..out "=== PARTIAL EMBEDDED FUNCTIONS TEST ===";
-
-..out "Basic functions:";
-id_result : basic.identity 42;
-..out id_result;
-double_result : basic.double 21;
-..out double_result;
-add_result : basic.add 10 20;
-..out add_result;
-mult_result : basic.multiply 6 7;
-..out mult_result;
-
-..out "Classifier functions:";
-class_zero : classifier.classify 0;
-..out class_zero;
-class_one : classifier.classify 1;
-..out class_one;
-class_two : classifier.classify 2;
-..out class_two;
-class_other : classifier.classify 99;
-..out class_other;
-
-..out "Positive test:";
-pos_test : classifier.is_positive 5;
-..out pos_test;
-neg_test : classifier.is_positive -3;
-..out neg_test; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_embedded_functions_simple.txt b/js/scripting-lang/scratch_tests/test_embedded_functions_simple.txt
deleted file mode 100644
index 550402c..0000000
--- a/js/scripting-lang/scratch_tests/test_embedded_functions_simple.txt
+++ /dev/null
@@ -1,29 +0,0 @@
-/* Simple test for embedded functions in tables */
-
-// Test 1: Just arrow functions (should work)
-calculator : {
-    add: x y -> x + y,
-    multiply: x y -> x * y
-};
-
-// Test 2: Mixed content
-mixed : {
-    name: "Calculator",
-    add: x y -> x + y
-};
-
-// Output tests
-..out "=== SIMPLE EMBEDDED FUNCTIONS TEST ===";
-
-..out "Calculator add:";
-result1 : calculator.add 5 3;
-..out result1;
-
-..out "Calculator multiply:";
-result2 : calculator.multiply 4 7;
-..out result2;
-
-..out "Mixed table:";
-..out mixed.name;
-result3 : mixed.add 10 20;
-..out result3; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_enhanced_case_final.txt b/js/scripting-lang/scratch_tests/test_enhanced_case_final.txt
deleted file mode 100644
index 4551122..0000000
--- a/js/scripting-lang/scratch_tests/test_enhanced_case_final.txt
+++ /dev/null
@@ -1,62 +0,0 @@
-/* Final verification test for enhanced case statements */
-
-/* Test 1: Basic table creation */
-basic : {1, 2, 3};
-..out "Basic table:";
-..out basic;
-
-/* Test 2: Auto-indexed table with expressions */
-/* Work around parser limitation by using variables */
-a : 5 % 3;
-b : 5 % 5;
-expr : {a, b};
-..out "Expression table:";
-..out expr;
-
-/* Test 3: Map with equals 0 */
-/* Work around parser limitation by using variables */
-c : 15 % 3;
-d : 15 % 5;
-is_zero : x -> x = 0;
-mapped : map @is_zero {c, d};
-..out "Mapped table:";
-..out mapped;
-
-/* Test 4: Simple table pattern matching */
-test_table : {1: true, 2: false};
-result : when test_table is
-    {1: true, 2: true} then "both true"
-    {1: true, 2: false} then "first true"
-    {1: false, 2: true} then "second true"
-    {1: false, 2: false} then "both false";
-..out "Pattern match result:";
-..out result;
-
-/* Test 5: FizzBuzz divisibility function */
-/* Work around parser limitation by using a helper function */
-mod3 : n -> n % 3;
-mod5 : n -> n % 5;
-divisibility : n -> map @is_zero {mod3 n, mod5 n};
-
-div_15 : divisibility 15;
-..out "Divisibility for 15:";
-..out div_15;
-
-/* Test 6: Complete FizzBuzz */
-fizzbuzz : n ->
-  when divisibility n is
-    {1: true, 2: true} then "FizzBuzz"
-    {1: true, 2: false} then "Fizz"
-    {1: false, 2: true} then "Buzz"
-    {1: false, 2: false} then n;
-
-fizz_15 : fizzbuzz 15;
-fizz_3 : fizzbuzz 3;
-fizz_5 : fizzbuzz 5;
-fizz_7 : fizzbuzz 7;
-
-..out "FizzBuzz results:";
-..out "15: " + fizz_15;
-..out "3: " + fizz_3;
-..out "5: " + fizz_5;
-..out "7: " + fizz_7; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_enhanced_case_verification.txt b/js/scripting-lang/scratch_tests/test_enhanced_case_verification.txt
deleted file mode 100644
index 011a433..0000000
--- a/js/scripting-lang/scratch_tests/test_enhanced_case_verification.txt
+++ /dev/null
@@ -1,229 +0,0 @@
-/* Enhanced Case Statement Verification Tests */
-/* Testing core assumptions for FizzBuzz and tuple-like pattern matching */
-
-/* ===== TEST 1: AUTO-INDEXED TABLE CREATION ===== */
-..out "=== TEST 1: AUTO-INDEXED TABLE CREATION ===";
-
-/* Test basic auto-indexed table */
-basic_table : {1, 2, 3};
-..out "Basic table:";
-..out basic_table;
-
-/* Test auto-indexed table with expressions */
-expr_table : {5 % 3, 5 % 5, 5 % 2};
-..out "Expression table (5 % 3, 5 % 5, 5 % 2):";
-..out expr_table;
-
-/* Test with FizzBuzz-style expressions */
-n : 15;
-fizzbuzz_expr : {n % 3, n % 5};
-..out "FizzBuzz expressions for n=15:";
-..out fizzbuzz_expr;
-
-/* ===== TEST 2: MAP WITH TABLE TRANSFORMATION ===== */
-..out "=== TEST 2: MAP WITH TABLE TRANSFORMATION ===";
-
-/* Test map with equals 0 */
-test_map : map @(equals 0) {15 % 3, 15 % 5};
-..out "Map equals 0 on {15 % 3, 15 % 5}:";
-..out test_map;
-
-/* Test with different numbers */
-test_map_3 : map @(equals 0) {3 % 3, 3 % 5};
-..out "Map equals 0 on {3 % 3, 3 % 5}:";
-..out test_map_3;
-
-test_map_5 : map @(equals 0) {5 % 3, 5 % 5};
-..out "Map equals 0 on {5 % 3, 5 % 5}:";
-..out test_map_5;
-
-test_map_7 : map @(equals 0) {7 % 3, 7 % 5};
-..out "Map equals 0 on {7 % 3, 7 % 5}:";
-..out test_map_7;
-
-/* ===== TEST 3: TABLE PATTERN MATCHING ===== */
-..out "=== TEST 3: TABLE PATTERN MATCHING ===";
-
-/* Test simple table pattern matching */
-simple_table : {1: true, 2: false};
-simple_result : when simple_table is
-    {1: true, 2: true} then "both true"
-    {1: true, 2: false} then "first true"
-    {1: false, 2: true} then "second true"
-    {1: false, 2: false} then "both false";
-..out "Simple table pattern matching:";
-..out simple_result;
-
-/* Test with actual FizzBuzz-style data */
-fizzbuzz_data : {1: true, 2: true};
-fizzbuzz_result : when fizzbuzz_data is
-    {1: true, 2: true} then "FizzBuzz"
-    {1: true, 2: false} then "Fizz"
-    {1: false, 2: true} then "Buzz"
-    {1: false, 2: false} then "neither";
-..out "FizzBuzz-style pattern matching:";
-..out fizzbuzz_result;
-
-/* Test with different combinations */
-fizz_data : {1: true, 2: false};
-fizz_result : when fizz_data is
-    {1: true, 2: true} then "FizzBuzz"
-    {1: true, 2: false} then "Fizz"
-    {1: false, 2: true} then "Buzz"
-    {1: false, 2: false} then "neither";
-..out "Fizz pattern matching:";
-..out fizz_result;
-
-/* ===== TEST 4: INTEGRATED FIZZBUZZ TEST ===== */
-..out "=== TEST 4: INTEGRATED FIZZBUZZ TEST ===";
-
-/* Create the divisibility function */
-divisibility : n -> map @(equals 0) {n % 3, n % 5};
-
-/* Test the function with different inputs */
-div_15 : divisibility 15;
-div_3 : divisibility 3;
-div_5 : divisibility 5;
-div_7 : divisibility 7;
-
-..out "Divisibility results:";
-..out "15: " + div_15;
-..out "3: " + div_3;
-..out "5: " + div_5;
-..out "7: " + div_7;
-
-/* Test the complete FizzBuzz function */
-fizzbuzz : n ->
-  when divisibility n is
-    {1: true, 2: true} then "FizzBuzz"
-    {1: true, 2: false} then "Fizz"
-    {1: false, 2: true} then "Buzz"
-    {1: false, 2: false} then n;
-
-/* Test FizzBuzz with various inputs */
-..out "FizzBuzz results:";
-..out "fizzbuzz 15: " + fizzbuzz 15;
-..out "fizzbuzz 3: " + fizzbuzz 3;
-..out "fizzbuzz 5: " + fizzbuzz 5;
-..out "fizzbuzz 7: " + fizzbuzz 7;
-..out "fizzbuzz 0: " + fizzbuzz 0;
-..out "fizzbuzz 1: " + fizzbuzz 1;
-
-/* ===== TEST 5: ALTERNATIVE APPROACHES ===== */
-..out "=== TEST 5: ALTERNATIVE APPROACHES ===";
-
-/* Option A: Multiple value patterns */
-fizzbuzz_option_a : n ->
-  when (equals (n % 3) 0) (equals (n % 5) 0) is
-    true true then "FizzBuzz"
-    true false then "Fizz"
-    false true then "Buzz"
-    false false then n;
-
-..out "Option A (multiple value patterns):";
-..out "fizzbuzz_option_a 15: " + fizzbuzz_option_a 15;
-..out "fizzbuzz_option_a 3: " + fizzbuzz_option_a 3;
-..out "fizzbuzz_option_a 5: " + fizzbuzz_option_a 5;
-..out "fizzbuzz_option_a 7: " + fizzbuzz_option_a 7;
-
-/* Option B: Predicate functions with nested when */
-is_fizzbuzz : n -> apply @logicalAnd (equals (n % 3) 0) (equals (n % 5) 0);
-is_fizz : n -> equals (n % 3) 0;
-is_buzz : n -> equals (n % 5) 0;
-
-fizzbuzz_option_b : n ->
-  when is_fizzbuzz n is
-    true then "FizzBuzz"
-    _ then when is_fizz n is
-      true then "Fizz"
-      _ then when is_buzz n is
-        true then "Buzz"
-        _ then n;
-
-..out "Option B (predicate functions):";
-..out "fizzbuzz_option_b 15: " + fizzbuzz_option_b 15;
-..out "fizzbuzz_option_b 3: " + fizzbuzz_option_b 3;
-..out "fizzbuzz_option_b 5: " + fizzbuzz_option_b 5;
-..out "fizzbuzz_option_b 7: " + fizzbuzz_option_b 7;
-
-/* ===== TEST 6: EDGE CASES AND ERROR CONDITIONS ===== */
-..out "=== TEST 6: EDGE CASES AND ERROR CONDITIONS ===";
-
-/* Test with negative numbers */
-..out "Negative numbers:";
-..out "fizzbuzz -3: " + fizzbuzz -3;
-..out "fizzbuzz -5: " + fizzbuzz -5;
-..out "fizzbuzz -15: " + fizzbuzz -15;
-
-/* Test with large numbers */
-..out "Large numbers:";
-..out "fizzbuzz 30: " + fizzbuzz 30;
-..out "fizzbuzz 45: " + fizzbuzz 45;
-..out "fizzbuzz 60: " + fizzbuzz 60;
-
-/* ===== TEST 7: PERFORMANCE AND COMPLEXITY ===== */
-..out "=== TEST 7: PERFORMANCE AND COMPLEXITY ===";
-
-/* Test with a range of numbers */
-test_range : 1;
-test_result : fizzbuzz test_range;
-..out "Range test (1-20):";
-..out "1: " + test_result;
-
-test_range : 2;
-test_result : fizzbuzz test_range;
-..out "2: " + test_result;
-
-test_range : 3;
-test_result : fizzbuzz test_range;
-..out "3: " + test_result;
-
-test_range : 4;
-test_result : fizzbuzz test_range;
-..out "4: " + test_result;
-
-test_range : 5;
-test_result : fizzbuzz test_range;
-..out "5: " + test_result;
-
-test_range : 6;
-test_result : fizzbuzz test_range;
-..out "6: " + test_result;
-
-test_range : 7;
-test_result : fizzbuzz test_range;
-..out "7: " + test_result;
-
-test_range : 8;
-test_result : fizzbuzz test_range;
-..out "8: " + test_result;
-
-test_range : 9;
-test_result : fizzbuzz test_range;
-..out "9: " + test_result;
-
-test_range : 10;
-test_result : fizzbuzz test_range;
-..out "10: " + test_result;
-
-test_range : 11;
-test_result : fizzbuzz test_range;
-..out "11: " + test_result;
-
-test_range : 12;
-test_result : fizzbuzz test_range;
-..out "12: " + test_result;
-
-test_range : 13;
-test_result : fizzbuzz test_range;
-..out "13: " + test_result;
-
-test_range : 14;
-test_result : fizzbuzz test_range;
-..out "14: " + test_result;
-
-test_range : 15;
-test_result : fizzbuzz test_range;
-..out "15: " + test_result;
-
-..out "=== VERIFICATION COMPLETE ==="; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_enhanced_compose.txt b/js/scripting-lang/scratch_tests/test_enhanced_compose.txt
deleted file mode 100644
index d277c64..0000000
--- a/js/scripting-lang/scratch_tests/test_enhanced_compose.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-/* Test enhanced compose function */
-
-f : x -> x * 2;
-g : x -> x + 1;
-h : x -> x * x;
-
-/* Test enhanced compose with multiple functions */
-result : compose(f, g, h) 2;
-..out result; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_enhanced_debug.txt b/js/scripting-lang/scratch_tests/test_enhanced_debug.txt
deleted file mode 100644
index 5462858..0000000
--- a/js/scripting-lang/scratch_tests/test_enhanced_debug.txt
+++ /dev/null
@@ -1,13 +0,0 @@
-/* Simple test to debug enhanced case statements */
-
-/* Test 1: Basic FizzBuzz */
-fizzbuzz : n ->
-  when (n % 3) (n % 5) is
-    0 0 then "FizzBuzz"
-    0 _ then "Fizz"
-    _ 0 then "Buzz"
-    _ _ then n;
-
-/* Test basic FizzBuzz */
-result1 : fizzbuzz 15;
-..out result1; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_equals_function.txt b/js/scripting-lang/scratch_tests/test_equals_function.txt
deleted file mode 100644
index 91e90fd..0000000
--- a/js/scripting-lang/scratch_tests/test_equals_function.txt
+++ /dev/null
@@ -1,17 +0,0 @@
-/* Test equals function */
-
-/* Test basic equals */
-test1 : equals 5 5;
-test2 : equals 5 3;
-test3 : equals 0 0;
-
-..out test1;
-..out test2;
-..out test3;
-
-/* Test equals with modulo */
-test4 : equals (15 % 3) 0;
-test5 : equals (15 % 5) 0;
-
-..out test4;
-..out test5; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_exact_expr_debug.txt b/js/scripting-lang/scratch_tests/test_exact_expr_debug.txt
deleted file mode 100644
index 8a6b3c5..0000000
--- a/js/scripting-lang/scratch_tests/test_exact_expr_debug.txt
+++ /dev/null
@@ -1,13 +0,0 @@
-/* Test exact expression from test file */
-
-/* Multi-field validation using function calls */
-validate_user : name age ->
-  when (name != "") (age >= 0 and age <= 120) is
-    true true then "valid user"
-    true false then "invalid age"
-    false true then "invalid name"
-    false false then "invalid user";
-
-/* Test user validation */
-valid_user : validate_user "Alice" 30;
-..out valid_user; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_expression_function.txt b/js/scripting-lang/scratch_tests/test_expression_function.txt
deleted file mode 100644
index 4b3308f..0000000
--- a/js/scripting-lang/scratch_tests/test_expression_function.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-/* Test function with expression in body */
-
-// Function with expression
-expr_func : x y -> x + y;
-
-// Test it
-..out "=== EXPRESSION FUNCTION TEST ===";
-result : expr_func 5 3;
-..out result; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_factorial.txt b/js/scripting-lang/scratch_tests/test_factorial.txt
deleted file mode 100644
index 9945285..0000000
--- a/js/scripting-lang/scratch_tests/test_factorial.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-/* Test factorial function */
-factorial : n -> 
-  when n is
-    0 then 1
-    _ then n * (factorial (n - 1));
-
-result : factorial 5;
-..out result; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_factorial_fixed.txt b/js/scripting-lang/scratch_tests/test_factorial_fixed.txt
deleted file mode 100644
index db0ec5f..0000000
--- a/js/scripting-lang/scratch_tests/test_factorial_fixed.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-/* Test factorial function with @ operator */
-factorial : n -> 
-  when n is
-    0 then 1
-    _ then n * (@factorial (n - 1));
-
-result : factorial 5;
-..out result; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_filter_debug.txt b/js/scripting-lang/scratch_tests/test_filter_debug.txt
deleted file mode 100644
index 6b9df38..0000000
--- a/js/scripting-lang/scratch_tests/test_filter_debug.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-isPositive : x -> x > 0;
-filtered2 : filter @isPositive -3;
-..out filtered2; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_filter_issue.txt b/js/scripting-lang/scratch_tests/test_filter_issue.txt
deleted file mode 100644
index 63331d9..0000000
--- a/js/scripting-lang/scratch_tests/test_filter_issue.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-/* Test filter issue */
-
-numbers : {1, 2, 3, 4, 5};
-is_even : x -> x % 2 = 0;
-evens : filter @is_even numbers;
-even_2 : evens[2];
-even_4 : evens[4];
-..assert even_2 = 2;
-..assert even_4 = 4;
-
-..out "Filter test completed"; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_first_part.txt b/js/scripting-lang/scratch_tests/test_first_part.txt
deleted file mode 100644
index 61b2da1..0000000
--- a/js/scripting-lang/scratch_tests/test_first_part.txt
+++ /dev/null
@@ -1,48 +0,0 @@
-/* Test first part of enhanced case statements */
-
-/* ===== FIZZBUZZ IMPLEMENTATION ===== */
-
-/* Classic FizzBuzz using multi-value patterns with expressions */
-fizzbuzz : n ->
-  when (n % 3) (n % 5) is
-    0 0 then "FizzBuzz"
-    0 _ then "Fizz"
-    _ 0 then "Buzz"
-    _ _ then n;
-
-/* Test FizzBuzz implementation */
-fizzbuzz_15 : fizzbuzz 15;  /* Should be "FizzBuzz" */
-fizzbuzz_3 : fizzbuzz 3;    /* Should be "Fizz" */
-fizzbuzz_5 : fizzbuzz 5;    /* Should be "Buzz" */
-fizzbuzz_7 : fizzbuzz 7;    /* Should be 7 */
-
-/* ===== TABLE ACCESS IN WHEN EXPRESSIONS ===== */
-
-/* User data for testing */
-admin_user : {role: "admin", level: 5, name: "Alice"};
-user_user : {role: "user", level: 2, name: "Bob"};
-guest_user : {role: "guest", level: 0, name: "Charlie"};
-
-/* Access control using table access in patterns */
-access_level : user ->
-  when user.role is
-    "admin" then "full access"
-    "user" then "limited access"
-    _ then "no access";
-
-/* Test access control */
-admin_access : access_level admin_user;
-user_access : access_level user_user;
-guest_access : access_level guest_user;
-
-/* Output results */
-..out "FizzBuzz Results:";
-..out fizzbuzz_15;
-..out fizzbuzz_3;
-..out fizzbuzz_5;
-..out fizzbuzz_7;
-
-..out "Access Control Results:";
-..out admin_access;
-..out user_access;
-..out guest_access; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_fizzbuzz.txt b/js/scripting-lang/scratch_tests/test_fizzbuzz.txt
deleted file mode 100644
index 2529b73..0000000
--- a/js/scripting-lang/scratch_tests/test_fizzbuzz.txt
+++ /dev/null
@@ -1,16 +0,0 @@
-/* Test FizzBuzz-style patterns */
-fizzbuzz_test : n ->
-  when (n % 3) (n % 5) is
-    0 0 then "FizzBuzz"
-    0 _ then "Fizz"
-    _ 0 then "Buzz"
-    _ _ then n;
-
-result1 : fizzbuzz_test 15;
-result2 : fizzbuzz_test 3;
-result3 : fizzbuzz_test 5;
-result4 : fizzbuzz_test 7;
-..out result1;
-..out result2;
-..out result3;
-..out result4; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_fizzbuzz_only.txt b/js/scripting-lang/scratch_tests/test_fizzbuzz_only.txt
deleted file mode 100644
index 2fd12ad..0000000
--- a/js/scripting-lang/scratch_tests/test_fizzbuzz_only.txt
+++ /dev/null
@@ -1,13 +0,0 @@
-/* Test just the FizzBuzz part */
-
-/* Classic FizzBuzz using multi-value patterns with expressions */
-fizzbuzz : n ->
-  when (n % 3) (n % 5) is
-    0 0 then "FizzBuzz"
-    0 _ then "Fizz"
-    _ 0 then "Buzz"
-    _ _ then n;
-
-/* Test FizzBuzz implementation */
-fizzbuzz_15 : fizzbuzz 15;
-..out fizzbuzz_15; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_func_call_debug.txt b/js/scripting-lang/scratch_tests/test_func_call_debug.txt
deleted file mode 100644
index 33f39a7..0000000
--- a/js/scripting-lang/scratch_tests/test_func_call_debug.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-/* Debug test for function call evaluation */
-is_even : n -> n % 2 = 0;
-
-test_debug : n ->
-  when is_even n is
-    true then "even"
-    false then "odd";
-
-/* Test the function call separately */
-result1 : is_even 4;
-result2 : is_even 5;
-
-/* Test with explicit boolean comparison */
-test_explicit : n ->
-  when (is_even n = true) is
-    true then "even"
-    false then "odd";
-
-result3 : test_explicit 4;
-..out result1;
-..out result2;
-..out result3; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_func_call_debug2.txt b/js/scripting-lang/scratch_tests/test_func_call_debug2.txt
deleted file mode 100644
index e272479..0000000
--- a/js/scripting-lang/scratch_tests/test_func_call_debug2.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-/* Debug test for function call evaluation in patterns */
-is_even : n -> n % 2 = 0;
-
-test_debug : n ->
-  when n is
-    is_even n then "function call result"
-    4 then "four"
-    _ then "other";
-
-result : test_debug 4;
-..out result; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_func_call_only.txt b/js/scripting-lang/scratch_tests/test_func_call_only.txt
deleted file mode 100644
index b5bdf75..0000000
--- a/js/scripting-lang/scratch_tests/test_func_call_only.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-/* Function call test */
-is_even : n -> n % 2 = 0;
-
-test_func_call : n ->
-  when is_even n is
-    true then "even number"
-    false then "odd number";
-
-result : test_func_call 4;
-..out result; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_func_call_original.txt b/js/scripting-lang/scratch_tests/test_func_call_original.txt
deleted file mode 100644
index 0d4e8d0..0000000
--- a/js/scripting-lang/scratch_tests/test_func_call_original.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-/* Test the original failing case */
-is_even : n -> n % 2 = 0;
-
-test_original : n ->
-  when is_even n is
-    true then "even"
-    false then "odd";
-
-result : test_original 4;
-..out result; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_func_call_value.txt b/js/scripting-lang/scratch_tests/test_func_call_value.txt
deleted file mode 100644
index 1f222d8..0000000
--- a/js/scripting-lang/scratch_tests/test_func_call_value.txt
+++ /dev/null
@@ -1,12 +0,0 @@
-/* Test what the function call evaluates to */
-is_even : n -> n % 2 = 0;
-
-test_value : n ->
-  when is_even n is
-    is_even n then "same value"
-    true then "true"
-    false then "false"
-    _ then "other";
-
-result : test_value 4;
-..out result; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_func_call_when.txt b/js/scripting-lang/scratch_tests/test_func_call_when.txt
deleted file mode 100644
index 469440a..0000000
--- a/js/scripting-lang/scratch_tests/test_func_call_when.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-/* Test function calls in when expressions */
-is_even : n -> n % 2 = 0;
-
-test_func_call : n ->
-  when is_even n is
-    true then "even number"
-    false then "odd number";
-
-result : test_func_call 4;
-..out result; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_func_calls_debug.txt b/js/scripting-lang/scratch_tests/test_func_calls_debug.txt
deleted file mode 100644
index 40f3437..0000000
--- a/js/scripting-lang/scratch_tests/test_func_calls_debug.txt
+++ /dev/null
@@ -1,17 +0,0 @@
-/* Test function calls in when expressions */
-
-/* Helper functions for testing */
-is_even : n -> n % 2 = 0;
-
-/* Number classification using function calls in patterns */
-classify_number : n ->
-  when (is_even n) is
-    true then "even number"
-    false then "odd number";
-
-/* Test number classification */
-even_class : classify_number 4;
-odd_class : classify_number 7;
-
-..out even_class;
-..out odd_class; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_func_calls_only.txt b/js/scripting-lang/scratch_tests/test_func_calls_only.txt
deleted file mode 100644
index f217d60..0000000
--- a/js/scripting-lang/scratch_tests/test_func_calls_only.txt
+++ /dev/null
@@ -1,17 +0,0 @@
-/* Test just the function calls section */
-
-/* Helper functions for testing */
-is_even : n -> n % 2 = 0;
-
-/* Number classification using function calls in patterns */
-classify_number : n ->
-  when (is_even n) is
-    true then "even number"
-    false then "odd number";
-
-/* Test number classification */
-even_class : classify_number 4;
-odd_class : classify_number 7;
-
-..out even_class;
-..out odd_class; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_func_debug_detailed.txt b/js/scripting-lang/scratch_tests/test_func_debug_detailed.txt
deleted file mode 100644
index fb96ce5..0000000
--- a/js/scripting-lang/scratch_tests/test_func_debug_detailed.txt
+++ /dev/null
@@ -1,24 +0,0 @@
-/* Detailed debugging of function calls in when expressions */
-
-/* Helper functions for testing */
-is_even : n -> n % 2 = 0;
-
-/* Test the function directly */
-test1 : is_even 4;
-test2 : is_even 7;
-..out test1;
-..out test2;
-
-/* Number classification using function calls in patterns */
-classify_number : n ->
-  when (is_even n) is
-    true then "even number"
-    false then "odd number";
-
-/* Test number classification */
-even_class : classify_number 4;
-odd_class : classify_number 7;
-
-..out "Classification results:";
-..out even_class;
-..out odd_class; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_func_eval.txt b/js/scripting-lang/scratch_tests/test_func_eval.txt
deleted file mode 100644
index 8944b1f..0000000
--- a/js/scripting-lang/scratch_tests/test_func_eval.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-/* Test function call evaluation */
-is_even : n -> n % 2 = 0;
-
-result1 : is_even 4;
-result2 : is_even 5;
-result3 : is_even 0;
-..out result1;
-..out result2;
-..out result3; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_func_no_match.txt b/js/scripting-lang/scratch_tests/test_func_no_match.txt
deleted file mode 100644
index ff55185..0000000
--- a/js/scripting-lang/scratch_tests/test_func_no_match.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-/* Test function call that should not match */
-is_even : n -> n % 2 = 0;
-
-test_no_match : n ->
-  when n is
-    is_even n then "function call result"
-    5 then "five"
-    _ then "other";
-
-result : test_no_match 5;
-..out result; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_func_pattern.txt b/js/scripting-lang/scratch_tests/test_func_pattern.txt
deleted file mode 100644
index 23f2888..0000000
--- a/js/scripting-lang/scratch_tests/test_func_pattern.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-/* Test function calls in patterns */
-is_even : n -> n % 2 = 0;
-
-test_func_pattern : n ->
-  when n is
-    (is_even n) then "function call result"
-    4 then "four"
-    _ then "other";
-
-result : test_func_pattern 4;
-..out result; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_func_return.txt b/js/scripting-lang/scratch_tests/test_func_return.txt
deleted file mode 100644
index 3a4bd5f..0000000
--- a/js/scripting-lang/scratch_tests/test_func_return.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-/* Test function call return value */
-is_even : n -> n % 2 = 0;
-
-result1 : is_even 4;
-result2 : is_even 5;
-result3 : is_even 0;
-..out result1;
-..out result2;
-..out result3; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_function_arg_syntax.txt b/js/scripting-lang/scratch_tests/test_function_arg_syntax.txt
deleted file mode 100644
index 4b4afbe..0000000
--- a/js/scripting-lang/scratch_tests/test_function_arg_syntax.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-add_func : x y -> x + y;
-result : add_func @(3 + 2) @(4 + 1);
-..out result; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_function_body.txt b/js/scripting-lang/scratch_tests/test_function_body.txt
deleted file mode 100644
index 7af35e5..0000000
--- a/js/scripting-lang/scratch_tests/test_function_body.txt
+++ /dev/null
@@ -1,15 +0,0 @@
-/* Test multiple statements in function bodies */
-
-/* Test simple function */
-simple_func : n -> n;
-
-/* Test function with multiple statements */
-multi_func : n ->
-  a : n + 1;
-  b : a * 2;
-  b;
-
-result1 : simple_func 5;
-result2 : multi_func 5;
-..out result1;
-..out result2; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_function_calls_in_tables.txt b/js/scripting-lang/scratch_tests/test_function_calls_in_tables.txt
deleted file mode 100644
index a7c991a..0000000
--- a/js/scripting-lang/scratch_tests/test_function_calls_in_tables.txt
+++ /dev/null
@@ -1,28 +0,0 @@
-/* Test function calls in table literals */
-
-/* Test basic function calls */
-mod3 : n -> n % 3;
-mod5 : n -> n % 5;
-
-/* Test individual function calls */
-result1 : mod3 15;
-result2 : mod5 15;
-..out "mod3 15: " + result1;
-..out "mod5 15: " + result2;
-
-/* Test function calls in table */
-table1 : {mod3 15, mod5 15};
-..out "Table with function calls:";
-..out table1;
-
-/* Test with map */
-is_zero : x -> x = 0;
-mapped : map @is_zero table1;
-..out "Mapped table:";
-..out mapped;
-
-/* Test the complete divisibility function */
-divisibility : n -> map @is_zero {mod3 n, mod5 n};
-result : divisibility 15;
-..out "Divisibility result:";
-..out result; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_function_declaration.txt b/js/scripting-lang/scratch_tests/test_function_declaration.txt
deleted file mode 100644
index 90c1594..0000000
--- a/js/scripting-lang/scratch_tests/test_function_declaration.txt
+++ /dev/null
@@ -1,37 +0,0 @@
-/* Test FunctionDeclaration behavior */
-
-// Test 1: Regular function declaration
-test_func : x y -> x + y;
-
-// Test 2: Function declaration with when expression
-test_when : x -> when x is
-    0 then "zero"
-    _ then "other"
-;
-
-// Test 3: Function declaration in table
-table_func : {
-    add: x y -> x + y,
-    classify: x -> when x is
-        0 then "zero"
-        _ then "other"
-};
-
-// Output tests
-..out "=== FUNCTION DECLARATION TEST ===";
-
-..out "Regular function:";
-result1 : test_func 5 3;
-..out result1;
-
-..out "When function:";
-result2 : test_when 0;
-..out result2;
-result3 : test_when 5;
-..out result3;
-
-..out "Table functions:";
-result4 : table_func.add 10 20;
-..out result4;
-result5 : table_func.classify 0;
-..out result5; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_function_issue.txt b/js/scripting-lang/scratch_tests/test_function_issue.txt
deleted file mode 100644
index 991e92e..0000000
--- a/js/scripting-lang/scratch_tests/test_function_issue.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-add_func : x y -> x + y;
-result : add_func 3 4;
-..out result; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_function_precedence.txt b/js/scripting-lang/scratch_tests/test_function_precedence.txt
deleted file mode 100644
index e453d72..0000000
--- a/js/scripting-lang/scratch_tests/test_function_precedence.txt
+++ /dev/null
@@ -1,32 +0,0 @@
-/* Test function application precedence fix */
-/* This should test that abs -5 is parsed as apply(abs, negate(5)) not subtract(abs, 5) */
-
-x : 5;
-abs : x -> when x is
-    x < 0 then -x
-    _ then x;
-
-/* Test 1: Function call with negative literal */
-result1 : abs -5;  /* Should be apply(abs, negate(5)) = 5 */
-
-/* Test 2: Function call with negative variable */
-result2 : abs -x;  /* Should be apply(abs, negate(x)) = 5 */
-
-/* Test 3: Multiple function applications */
-double : x -> x * 2;
-result3 : double abs -3;  /* Should be apply(double, apply(abs, negate(3))) = 6 */
-
-/* Test 4: Function call with parenthesized expression */
-result4 : abs (-x);  /* Should be apply(abs, negate(x)) = 5 */
-
-/* Test 5: Complex expression */
-result5 : abs -5 + 10;  /* Should be add(apply(abs, negate(5)), 10) = 15 */
-
-/* Test 6: Left-associative function application */
-f : x -> x * 2;
-g : x -> x + 1;
-result6 : f g 3;  /* Should be apply(apply(f, g), 3) = 8 */
-
-/* Test 7: Function call with table access */
-table : {value: -5};
-result7 : abs table.value;  /* Should be apply(abs, table.value) = 5 */ 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_function_reference.txt b/js/scripting-lang/scratch_tests/test_function_reference.txt
deleted file mode 100644
index 6c3a609..0000000
--- a/js/scripting-lang/scratch_tests/test_function_reference.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-/* Test function references */
-
-f : x -> x * 2;
-g : x -> x + 1;
-
-/* Test function reference */
-ref : @f;
-..out ref; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_functions.txt b/js/scripting-lang/scratch_tests/test_functions.txt
deleted file mode 100644
index 8e3ea43..0000000
--- a/js/scripting-lang/scratch_tests/test_functions.txt
+++ /dev/null
@@ -1,15 +0,0 @@
-/* Test individual functions */
-f1 : x -> x + 1;
-f2 : x -> x * 2;
-f3 : x -> x - 1;
-
-test1 : f1 10;
-test2 : f2 10;
-test3 : f3 10;
-
-..out "f1(10) = ";
-..out test1;
-..out "f2(10) = ";
-..out test2;
-..out "f3(10) = ";
-..out test3; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_grade.txt b/js/scripting-lang/scratch_tests/test_grade.txt
deleted file mode 100644
index 730987c..0000000
--- a/js/scripting-lang/scratch_tests/test_grade.txt
+++ /dev/null
@@ -1,15 +0,0 @@
-/* Test grade function */
-grade : score -> 
-  when score is
-    90 then "A"
-    80 then "B"
-    70 then "C"
-    _  then "F";
-
-result1 : grade 95;
-result2 : grade 85;
-result3 : grade 65;
-
-..out result1;
-..out result2;
-..out result3; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_grade_comparison.txt b/js/scripting-lang/scratch_tests/test_grade_comparison.txt
deleted file mode 100644
index 39df2f8..0000000
--- a/js/scripting-lang/scratch_tests/test_grade_comparison.txt
+++ /dev/null
@@ -1,15 +0,0 @@
-/* Test grade function with comparison patterns */
-grade : score -> 
-  when score is
-    score >= 90 then "A"
-    score >= 80 then "B"
-    score >= 70 then "C"
-    _  then "F";
-
-result1 : grade 95;
-result2 : grade 85;
-result3 : grade 65;
-
-..out result1;
-..out result2;
-..out result3; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_gradual_build.txt b/js/scripting-lang/scratch_tests/test_gradual_build.txt
deleted file mode 100644
index 4494770..0000000
--- a/js/scripting-lang/scratch_tests/test_gradual_build.txt
+++ /dev/null
@@ -1,24 +0,0 @@
-/* Gradual build test */
-
-/* Basic table creation */
-numbers : {1, 2, 3, 4, 5};
-
-/* Test enhanced map */
-double : x -> x * 2;
-doubled : map @double numbers;
-
-/* Test t.map */
-t_doubled : t.map @double numbers;
-
-/* Test enhanced filter */
-isEven : x -> x % 2 == 0;
-even_numbers : filter @isEven numbers;
-
-/* Output results */
-..out "=== GRADUAL BUILD TEST ===";
-..out "Enhanced map:";
-..out doubled;
-..out "t.map:";
-..out t_doubled;
-..out "Enhanced filter:";
-..out even_numbers; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_listen_emit_basic.txt b/js/scripting-lang/scratch_tests/test_listen_emit_basic.txt
deleted file mode 100644
index b135908..0000000
--- a/js/scripting-lang/scratch_tests/test_listen_emit_basic.txt
+++ /dev/null
@@ -1,16 +0,0 @@
-/* Test basic ..listen and ..emit functionality */
-
-/* Test ..listen - should return placeholder state */
-state : ..listen;
-..out state;
-
-/* Test ..emit with simple value */
-..emit "Hello from script";
-
-/* Test ..emit with table */
-data : { message: "Test message", value: 42 };
-..emit data;
-
-/* Test ..emit with computed value */
-computed : 10 + 20;
-..emit computed; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_listen_emit_comprehensive.txt b/js/scripting-lang/scratch_tests/test_listen_emit_comprehensive.txt
deleted file mode 100644
index 79f1a98..0000000
--- a/js/scripting-lang/scratch_tests/test_listen_emit_comprehensive.txt
+++ /dev/null
@@ -1,48 +0,0 @@
-/* Comprehensive test for ..listen and ..emit functionality */
-
-/* Test 1: Basic ..listen in assignment */
-state : ..listen;
-..out "State received:";
-..out state;
-
-/* Test 2: ..listen in when expression */
-result : when ..listen is
-    { status: "placeholder" } then "Placeholder state detected"
-    { status: "active" } then "Active state detected"
-    _ then "Unknown state";
-
-..out result;
-
-/* Test 3: ..emit with different data types */
-..emit "String value";
-..emit 42;
-..emit true;
-..emit { key: "value", number: 123 };
-
-/* Test 4: ..emit with computed expressions */
-computed_table : { a: 10, b: 20 };
-sum : computed_table.a + computed_table.b;
-..emit sum;
-
-/* Test 5: ..emit with function calls */
-doubled : t.map { 1, 2, 3, 4, 5 } (x -> x * 2);
-..emit doubled;
-
-/* Test 6: ..emit with conditional logic */
-condition : 10 > 5;
-message : when condition is
-    true then "Condition is true"
-    false then "Condition is false";
-..emit message;
-
-/* Test 7: ..emit with nested tables */
-nested : { 
-    user: { name: "Alice", age: 30 },
-    settings: { theme: "dark", notifications: true }
-};
-..emit nested;
-
-/* Test 8: Test that ..emit doesn't interfere with ..out */
-..out "This should appear via ..out";
-..emit "This should appear via ..emit";
-..out "Another ..out message"; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_listen_emit_final.txt b/js/scripting-lang/scratch_tests/test_listen_emit_final.txt
deleted file mode 100644
index c735ab2..0000000
--- a/js/scripting-lang/scratch_tests/test_listen_emit_final.txt
+++ /dev/null
@@ -1,44 +0,0 @@
-/* Final test for ..listen and ..emit functionality */
-
-/* Test 1: Basic ..listen in assignment */
-state : ..listen;
-..out "State received:";
-..out state;
-
-/* Test 2: ..listen in when expression with simple patterns */
-result : when ..listen is
-    "placeholder" then "Got placeholder"
-    "active" then "Got active"
-    _ then "Got something else";
-
-..out result;
-
-/* Test 3: ..emit with different data types */
-..emit "String value";
-..emit 42;
-..emit true;
-..emit { key: "value", number: 123 };
-
-/* Test 4: ..emit with computed expressions */
-computed_table : { a: 10, b: 20 };
-sum : computed_table.a + computed_table.b;
-..emit sum;
-
-/* Test 5: ..emit with conditional logic */
-condition : 10 > 5;
-message : when condition is
-    true then "Condition is true"
-    false then "Condition is false";
-..emit message;
-
-/* Test 6: ..emit with nested tables */
-nested : { 
-    user: { name: "Alice", age: 30 },
-    settings: { theme: "dark", notifications: true }
-};
-..emit nested;
-
-/* Test 7: Test that ..emit doesn't interfere with ..out */
-..out "This should appear via ..out";
-..emit "This should appear via ..emit";
-..out "Another ..out message"; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_listen_emit_simple.txt b/js/scripting-lang/scratch_tests/test_listen_emit_simple.txt
deleted file mode 100644
index fce87da..0000000
--- a/js/scripting-lang/scratch_tests/test_listen_emit_simple.txt
+++ /dev/null
@@ -1,16 +0,0 @@
-/* Simple test for ..listen and ..emit */
-
-/* Test 1: Basic ..listen */
-state : ..listen;
-..out state;
-
-/* Test 2: Basic ..emit */
-..emit "Hello";
-
-/* Test 3: ..listen in when expression with simple patterns */
-result : when ..listen is
-    "placeholder" then "Got placeholder"
-    "active" then "Got active"
-    _ then "Got something else";
-
-..out result; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_logical_and_debug.txt b/js/scripting-lang/scratch_tests/test_logical_and_debug.txt
deleted file mode 100644
index 97251b7..0000000
--- a/js/scripting-lang/scratch_tests/test_logical_and_debug.txt
+++ /dev/null
@@ -1,26 +0,0 @@
-/* Test logicalAnd function directly */
-
-/* Test individual comparisons */
-test1 : (-5) >= 0;  /* Should be false */
-test2 : (-5) <= 120; /* Should be true */
-
-/* Test logicalAnd with these values */
-result1 : logicalAnd test1 test2;  /* false && true = false */
-result2 : logicalAnd test2 test1;  /* true && false = false */
-
-/* Test the original expression step by step */
-step1 : (-5) >= 0;  /* false */
-step2 : (-5) <= 120; /* true */
-step3 : logicalAnd step1 step2; /* false && true = false */
-
-/* Test with parentheses */
-parens_test : logicalAnd ((-5) >= 0) ((-5) <= 120);
-
-..out test1;
-..out test2;
-..out result1;
-..out result2;
-..out step1;
-..out step2;
-..out step3;
-..out parens_test; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_map_comparison.txt b/js/scripting-lang/scratch_tests/test_map_comparison.txt
deleted file mode 100644
index 742c9dd..0000000
--- a/js/scripting-lang/scratch_tests/test_map_comparison.txt
+++ /dev/null
@@ -1,14 +0,0 @@
-/* Test to compare map and each behavior */
-
-numbers : {1, 2, 3, 4, 5};
-add_ten : x -> x + 10;
-
-/* Test map with single table */
-map_result : map @add_ten numbers;
-..out "Map with single table:";
-..out map_result;
-
-/* Test each with single table */
-each_result : each @add_ten numbers;
-..out "Each with single table:";
-..out each_result; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_minimal_enhanced.txt b/js/scripting-lang/scratch_tests/test_minimal_enhanced.txt
deleted file mode 100644
index e4fe6d2..0000000
--- a/js/scripting-lang/scratch_tests/test_minimal_enhanced.txt
+++ /dev/null
@@ -1,32 +0,0 @@
-/* Minimal enhanced case statements test */
-
-/* FizzBuzz */
-fizzbuzz : n ->
-  when (n % 3) (n % 5) is
-    0 0 then "FizzBuzz"
-    0 _ then "Fizz"
-    _ 0 then "Buzz"
-    _ _ then n;
-
-/* Table access */
-admin_user : {role: "admin"};
-access_level : user ->
-  when user.role is
-    "admin" then "full access"
-    _ then "no access";
-
-/* Function calls */
-is_even : n -> n % 2 = 0;
-classify_number : n ->
-  when (is_even n) is
-    true then "even"
-    false then "odd";
-
-/* Test and output */
-result1 : fizzbuzz 15;
-result2 : access_level admin_user;
-result3 : classify_number 4;
-
-..out result1;
-..out result2;
-..out result3; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_minimal_enhanced_case.txt b/js/scripting-lang/scratch_tests/test_minimal_enhanced_case.txt
deleted file mode 100644
index 082c194..0000000
--- a/js/scripting-lang/scratch_tests/test_minimal_enhanced_case.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-/* Minimal test for enhanced case statements */
-
-/* Test basic function */
-fizzbuzz : n -> n;
-
-/* Test basic when expression */
-result : when fizzbuzz 5 is
-  5 then "works"
-  _ then "fail";
-
-..out result; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_minimal_when.txt b/js/scripting-lang/scratch_tests/test_minimal_when.txt
deleted file mode 100644
index fdb5d33..0000000
--- a/js/scripting-lang/scratch_tests/test_minimal_when.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-/* Minimal test for when expression */
-test_minimal : n ->
-  when n is
-    0 then "zero"
-    1 then "one"
-    _ then "other";
-
-result : test_minimal 5;
-..out result; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_minus_debug.txt b/js/scripting-lang/scratch_tests/test_minus_debug.txt
deleted file mode 100644
index d81107b..0000000
--- a/js/scripting-lang/scratch_tests/test_minus_debug.txt
+++ /dev/null
@@ -1,12 +0,0 @@
-/* Debug minus operator */
-
-x : 42;
-y : 10;
-
-/* Test binary minus */
-result1 : x - y;
-..out result1;
-
-/* Test unary minus */
-result2 : -x;
-..out result2; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_modulo_in_when.txt b/js/scripting-lang/scratch_tests/test_modulo_in_when.txt
deleted file mode 100644
index 4b2b023..0000000
--- a/js/scripting-lang/scratch_tests/test_modulo_in_when.txt
+++ /dev/null
@@ -1,30 +0,0 @@
-/* Test modulo operator in when expressions */
-
-/* Test basic modulo */
-test1 : 15 % 3;
-..out test1;
-
-/* Test modulo in when expression */
-test2 : when 15 % 3 is
-  0 then "divisible by 3"
-  _ then "not divisible by 3";
-
-..out test2;
-
-/* Test multiple values in when expression */
-test3 : when 15 % 3 15 % 5 is
-  0 0 then "divisible by both"
-  0 _ then "divisible by 3 only"
-  _ 0 then "divisible by 5 only"
-  _ _ then "divisible by neither";
-
-..out test3;
-
-/* Test modulo with equals function in when expression */
-test4 : when equals (15 % 3) 0 equals (15 % 5) 0 is
-  true true then "divisible by both"
-  true false then "divisible by 3 only"
-  false true then "divisible by 5 only"
-  false false then "divisible by neither";
-
-..out test4; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_multi_param_when.txt b/js/scripting-lang/scratch_tests/test_multi_param_when.txt
deleted file mode 100644
index cb4843e..0000000
--- a/js/scripting-lang/scratch_tests/test_multi_param_when.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-/* Test multi-parameter when expressions */
-classify : x y -> 
-  when x y is
-    0 0 then "both zero"
-    0 _ then "x is zero"
-    _ 0 then "y is zero"
-    _ _ then "neither zero";
-
-..out "multi-parameter when expression created successfully"; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_multi_validation_debug.txt b/js/scripting-lang/scratch_tests/test_multi_validation_debug.txt
deleted file mode 100644
index c252b54..0000000
--- a/js/scripting-lang/scratch_tests/test_multi_validation_debug.txt
+++ /dev/null
@@ -1,13 +0,0 @@
-/* Test multi-value validation pattern */
-
-/* Multi-field validation using function calls */
-validate_user : name age ->
-  when (name != "") (age >= 0 and age <= 120) is
-    true true then "valid user"
-    true false then "invalid age"
-    false true then "invalid name"
-    false false then "invalid user";
-
-/* Test user validation */
-valid_user : validate_user "Alice" 30;
-..out valid_user; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_multi_validation_only.txt b/js/scripting-lang/scratch_tests/test_multi_validation_only.txt
deleted file mode 100644
index f330ffe..0000000
--- a/js/scripting-lang/scratch_tests/test_multi_validation_only.txt
+++ /dev/null
@@ -1,13 +0,0 @@
-/* Test just the multi-value validation pattern */
-
-/* Multi-field validation using function calls */
-validate_user : name age ->
-  when (name != "") (age >= 0 and age <= 120) is
-    true true then "valid user"
-    true false then "invalid age"
-    false true then "invalid name"
-    false false then "invalid user";
-
-/* Test user validation */
-valid_user : validate_user "Alice" 30;
-..out valid_user; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_multi_validation_simple.txt b/js/scripting-lang/scratch_tests/test_multi_validation_simple.txt
deleted file mode 100644
index a26a72a..0000000
--- a/js/scripting-lang/scratch_tests/test_multi_validation_simple.txt
+++ /dev/null
@@ -1,13 +0,0 @@
-/* Test simpler multi-value validation pattern */
-
-/* Test with simple boolean expressions */
-validate_user : name age ->
-  when (name != "") (age > 0) is
-    true true then "valid user"
-    true false then "invalid age"
-    false true then "invalid name"
-    false false then "invalid user";
-
-/* Test user validation */
-valid_user : validate_user "Alice" 30;
-..out valid_user; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_multi_value_expr.txt b/js/scripting-lang/scratch_tests/test_multi_value_expr.txt
deleted file mode 100644
index cbc3233..0000000
--- a/js/scripting-lang/scratch_tests/test_multi_value_expr.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-/* Test multi-value patterns with expressions */
-test_multi_expr : x y -> 
-  when (x % 2) (y % 2) is
-    0 0 then "both even"
-    0 1 then "x even, y odd"
-    1 0 then "x odd, y even"
-    1 1 then "both odd";
-
-result : test_multi_expr 4 6;
-..out result; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_multiple_values_parens.txt b/js/scripting-lang/scratch_tests/test_multiple_values_parens.txt
deleted file mode 100644
index 601ca43..0000000
--- a/js/scripting-lang/scratch_tests/test_multiple_values_parens.txt
+++ /dev/null
@@ -1,29 +0,0 @@
-/* Test multiple values with parentheses in when expressions */
-
-/* Test simple multiple values */
-test1 : when 5 3 is
-  5 3 then "simple multiple values work"
-  _ _ then "simple multiple values don't work";
-
-..out test1;
-
-/* Test multiple values with parentheses */
-test2 : when (5) (3) is
-  5 3 then "parenthesized multiple values work"
-  _ _ then "parenthesized multiple values don't work";
-
-..out test2;
-
-/* Test multiple values with expressions in parentheses */
-test3 : when (5 + 2) (3 + 0) is
-  7 3 then "expressions in parentheses work"
-  _ _ then "expressions in parentheses don't work";
-
-..out test3;
-
-/* Test FizzBuzz-style multiple values */
-test4 : when (15 % 3) (15 % 5) is
-  0 0 then "FizzBuzz-style multiple values work"
-  _ _ then "FizzBuzz-style multiple values don't work";
-
-..out test4; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_nested_debug.txt b/js/scripting-lang/scratch_tests/test_nested_debug.txt
deleted file mode 100644
index ad68670..0000000
--- a/js/scripting-lang/scratch_tests/test_nested_debug.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-nested_func1 : x -> x + 1;
-nested_func2 : x -> nested_func1 x;
-nested_func3 : x -> nested_func2 x;
-nested_func4 : x -> nested_func3 x;
-nested_func5 : x -> nested_func4 x;
-
-deep_nested : nested_func5 10;
-..out deep_nested; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_nested_functions.txt b/js/scripting-lang/scratch_tests/test_nested_functions.txt
deleted file mode 100644
index 539491b..0000000
--- a/js/scripting-lang/scratch_tests/test_nested_functions.txt
+++ /dev/null
@@ -1,28 +0,0 @@
-/* Test nested table functions */
-
-// Test nested tables with functions
-nested : {
-    math: {
-        add: x y -> x + y,
-        subtract: x y -> x - y
-    },
-    logic: {
-        logical_and: x y -> x and y,
-        logical_or: x y -> x or y
-    }
-};
-
-// Output tests
-..out "=== NESTED FUNCTIONS TEST ===";
-
-..out "Nested math functions:";
-nested_add : nested.math.add 100 200;
-..out nested_add;
-nested_sub : nested.math.subtract 50 30;
-..out nested_sub;
-
-..out "Nested logic functions:";
-logic_and : nested.logic.logical_and true false;
-..out logic_and;
-logic_or : nested.logic.logical_or true false;
-..out logic_or; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_nested_only.txt b/js/scripting-lang/scratch_tests/test_nested_only.txt
deleted file mode 100644
index f3857fc..0000000
--- a/js/scripting-lang/scratch_tests/test_nested_only.txt
+++ /dev/null
@@ -1,15 +0,0 @@
-/* Test just the nested when expressions */
-
-/* Ensure backward compatibility with nested when expressions */
-nested_classify : x y ->
-  when x is
-    0 then when y is
-      0 then "origin"
-      _ then "on y-axis"
-    _ then when y is
-      0 then "on x-axis"
-      _ then "general position";
-
-/* Test nested when expressions */
-nested1 : nested_classify 0 0;
-..out nested1; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_nested_table.txt b/js/scripting-lang/scratch_tests/test_nested_table.txt
deleted file mode 100644
index 9895e4e..0000000
--- a/js/scripting-lang/scratch_tests/test_nested_table.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-/* Test nested table literals */
-nested_table : {
-    outer: {
-        inner: {
-            value: 42
-        }
-    }
-};
-
-..out "nested_table created successfully"; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_nested_when.txt b/js/scripting-lang/scratch_tests/test_nested_when.txt
deleted file mode 100644
index b39c370..0000000
--- a/js/scripting-lang/scratch_tests/test_nested_when.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-/* Test nested when expressions */
-classify : x y -> 
-  when x y is
-    0 0 then "both zero"
-    0 _ then "x is zero"
-    _ 0 then "y is zero"
-    _ _ then when x is
-            0 then "x is zero (nested)"
-            _ then "neither zero";
-
-..out "nested when expression created successfully"; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_original_problem.txt b/js/scripting-lang/scratch_tests/test_original_problem.txt
deleted file mode 100644
index e0d838f..0000000
--- a/js/scripting-lang/scratch_tests/test_original_problem.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-add_func : x y -> x + y;
-result : add_func @(3 + 2) @(4 + 1);
-..out result;
-
-result2 : add_func (3 + 2) (4 + 1);
-..out result2; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_parens_disambiguation.txt b/js/scripting-lang/scratch_tests/test_parens_disambiguation.txt
deleted file mode 100644
index 8863d8b..0000000
--- a/js/scripting-lang/scratch_tests/test_parens_disambiguation.txt
+++ /dev/null
@@ -1,29 +0,0 @@
-/* Test if parentheses can help disambiguate complex expressions */
-
-/* Test modulo with parentheses */
-test1 : when (15 % 3) is
-  0 then "modulo in parentheses works"
-  _ then "modulo in parentheses doesn't work";
-
-..out test1;
-
-/* Test equals with parentheses */
-test2 : when (5 = 5) is
-  true then "equals in parentheses works"
-  _ then "equals in parentheses doesn't work";
-
-..out test2;
-
-/* Test complex expression with parentheses */
-test3 : when ((15 % 3) = 0) is
-  true then "complex expression in parentheses works"
-  _ then "complex expression in parentheses doesn't work";
-
-..out test3;
-
-/* Test multiple values with parentheses */
-test4 : when (15 % 3) (15 % 5) is
-  0 0 then "multiple values with parentheses work"
-  _ _ then "multiple values with parentheses don't work";
-
-..out test4; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_parens_in_when.txt b/js/scripting-lang/scratch_tests/test_parens_in_when.txt
deleted file mode 100644
index 4b441b4..0000000
--- a/js/scripting-lang/scratch_tests/test_parens_in_when.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-/* Test parentheses in when expressions */
-
-/* Test simple parentheses */
-test1 : when (5) is
-  5 then "parentheses work"
-  _ then "parentheses don't work";
-
-..out test1;
-
-/* Test parentheses with arithmetic */
-test2 : when (5 + 3) is
-  8 then "arithmetic in parentheses works"
-  _ then "arithmetic in parentheses doesn't work";
-
-..out test2;
-
-/* Test parentheses with function calls */
-test3 : when (equals 5 5) is
-  true then "function call in parentheses works"
-  _ then "function call in parentheses doesn't work";
-
-..out test3; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_parens_multiple.txt b/js/scripting-lang/scratch_tests/test_parens_multiple.txt
deleted file mode 100644
index 84592b7..0000000
--- a/js/scripting-lang/scratch_tests/test_parens_multiple.txt
+++ /dev/null
@@ -1,37 +0,0 @@
-/* Test parentheses with multiple values in when expressions */
-
-/* Test with parentheses around expressions */
-compare_parens : x y -> 
-  when (x) (y) is
-    0 0 then "both zero"
-    0 _ then "x is zero"
-    _ 0 then "y is zero"
-    _ _ then "neither zero";
-
-test1 : compare_parens 0 0;
-test2 : compare_parens 0 5;
-test3 : compare_parens 5 0;
-test4 : compare_parens 5 5;
-
-..out test1;
-..out test2;
-..out test3;
-..out test4;
-
-/* Test with arithmetic expressions in parentheses */
-compare_math : x y -> 
-  when (x + 0) (y + 0) is
-    0 0 then "both zero"
-    0 _ then "x is zero"
-    _ 0 then "y is zero"
-    _ _ then "neither zero";
-
-test5 : compare_math 0 0;
-test6 : compare_math 0 5;
-test7 : compare_math 5 0;
-test8 : compare_math 5 5;
-
-..out test5;
-..out test6;
-..out test7;
-..out test8; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_parenthesized_only.txt b/js/scripting-lang/scratch_tests/test_parenthesized_only.txt
deleted file mode 100644
index ce0d5d2..0000000
--- a/js/scripting-lang/scratch_tests/test_parenthesized_only.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-/* Test parenthesized version only */
-
-test2 : (-5) + 3;
-
-..out test2; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_pattern_debug.txt b/js/scripting-lang/scratch_tests/test_pattern_debug.txt
deleted file mode 100644
index ef8b676..0000000
--- a/js/scripting-lang/scratch_tests/test_pattern_debug.txt
+++ /dev/null
@@ -1,14 +0,0 @@
-/* Test pattern matching with boolean values */
-
-/* Test direct boolean matching */
-test_bool : value ->
-  when value is
-    true then "true matched"
-    false then "false matched"
-    _ then "wildcard matched";
-
-result1 : test_bool true;
-result2 : test_bool false;
-
-..out result1;
-..out result2; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_pattern_part1.txt b/js/scripting-lang/scratch_tests/test_pattern_part1.txt
deleted file mode 100644
index 60af053..0000000
--- a/js/scripting-lang/scratch_tests/test_pattern_part1.txt
+++ /dev/null
@@ -1,12 +0,0 @@
-/* Integration Test: Pattern Matching */
-/* Combines: case expressions, functions, recursion, complex patterns */
-
-..out "=== Integration Test: Pattern Matching ===";
-
-/* Recursive factorial with case expressions */
-factorial : n -> 
-  when n is
-    0 then 1
-    _ then n * (factorial (n - 1));
-
-..out "factorial function created successfully"; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_pattern_part2.txt b/js/scripting-lang/scratch_tests/test_pattern_part2.txt
deleted file mode 100644
index dffef79..0000000
--- a/js/scripting-lang/scratch_tests/test_pattern_part2.txt
+++ /dev/null
@@ -1,24 +0,0 @@
-/* Integration Test: Pattern Matching */
-/* Combines: case expressions, functions, recursion, complex patterns */
-
-..out "=== Integration Test: Pattern Matching ===";
-
-/* Recursive factorial with case expressions */
-factorial : n -> 
-  when n is
-    0 then 1
-    _ then n * (factorial (n - 1));
-
-/* Pattern matching with multiple parameters */
-classify : x y -> 
-  when x y is
-    0 0 then "both zero"
-    0 _ then "x is zero"
-    _ 0 then "y is zero"
-    _ _ then when x is
-            0 then "x is zero (nested)"
-            _ then when y is
-                  0 then "y is zero (nested)"
-                  _ then "neither zero";
-
-..out "both functions created successfully"; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_pattern_part3.txt b/js/scripting-lang/scratch_tests/test_pattern_part3.txt
deleted file mode 100644
index 3c32b90..0000000
--- a/js/scripting-lang/scratch_tests/test_pattern_part3.txt
+++ /dev/null
@@ -1,28 +0,0 @@
-/* Integration Test: Pattern Matching */
-/* Combines: case expressions, functions, recursion, complex patterns */
-
-..out "=== Integration Test: Pattern Matching ===";
-
-/* Recursive factorial with case expressions */
-factorial : n -> 
-  when n is
-    0 then 1
-    _ then n * (factorial (n - 1));
-
-/* Pattern matching with multiple parameters */
-classify : x y -> 
-  when x y is
-    0 0 then "both zero"
-    0 _ then "x is zero"
-    _ 0 then "y is zero"
-    _ _ then when x is
-            0 then "x is zero (nested)"
-            _ then when y is
-                  0 then "y is zero (nested)"
-                  _ then "neither zero";
-
-/* Test factorial */
-fact5 : factorial 5;
-fact3 : factorial 3;
-
-..out "test calls created successfully"; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_pipe_debug.txt b/js/scripting-lang/scratch_tests/test_pipe_debug.txt
deleted file mode 100644
index 5c8d5fb..0000000
--- a/js/scripting-lang/scratch_tests/test_pipe_debug.txt
+++ /dev/null
@@ -1,14 +0,0 @@
-/* Debug pipe function */
-
-double : x -> x * 2;
-add1 : x -> x + 1;
-
-/* Test pipe function step by step */
-step1 : pipe double;
-..out step1;
-
-step2 : step1 add1;
-..out step2;
-
-step3 : step2 5;
-..out step3; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_pipe_function.txt b/js/scripting-lang/scratch_tests/test_pipe_function.txt
deleted file mode 100644
index 3842a86..0000000
--- a/js/scripting-lang/scratch_tests/test_pipe_function.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-/* Test pipe function */
-
-f : x -> x * 2;
-g : x -> x + 1;
-
-/* Test pipe function */
-result : pipe(f, g) 5;
-..out result; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_pipe_nested.txt b/js/scripting-lang/scratch_tests/test_pipe_nested.txt
deleted file mode 100644
index 6cc2738..0000000
--- a/js/scripting-lang/scratch_tests/test_pipe_nested.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-/* Test nested pipe function */
-f1 : x -> x + 1;
-f2 : x -> x * 2;
-f3 : x -> x - 1;
-
-nested_pipe : pipe @f1 (pipe @f2 @f3) 10;
-
-..out "nested_pipe = ";
-..out nested_pipe; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_pipe_simple.txt b/js/scripting-lang/scratch_tests/test_pipe_simple.txt
deleted file mode 100644
index c96613d..0000000
--- a/js/scripting-lang/scratch_tests/test_pipe_simple.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-/* Test simple pipe function */
-f1 : x -> x + 1;
-f2 : x -> x * 2;
-
-simple_pipe : pipe @f1 @f2 10;
-simple_compose : compose @f1 @f2 10;
-
-..out "simple_pipe = ";
-..out simple_pipe;
-..out "simple_compose = ";
-..out simple_compose; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_plus_debug.txt b/js/scripting-lang/scratch_tests/test_plus_debug.txt
deleted file mode 100644
index 99591fa..0000000
--- a/js/scripting-lang/scratch_tests/test_plus_debug.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-/* Minimal test for PLUS token issue */
-result : -5 + 3;
-..out result; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_precedence_comprehensive.txt b/js/scripting-lang/scratch_tests/test_precedence_comprehensive.txt
deleted file mode 100644
index 29f1420..0000000
--- a/js/scripting-lang/scratch_tests/test_precedence_comprehensive.txt
+++ /dev/null
@@ -1,129 +0,0 @@
-/* Comprehensive Precedence Test Cases */
-
-/* Setup variables */
-x : 5;
-y : 3;
-z : 2;
-
-/* Setup functions */
-f : x -> x * 2;
-g : x -> x + 1;
-h : x -> x * x;
-
-/* 1. Basic Arithmetic Operations */
-result1 : x + y;
-result2 : x - y;
-result3 : x * y;
-result4 : x / y;
-result5 : x % y;
-result6 : x ^ z;
-
-..out "=== Basic Arithmetic ===";
-..out result1;
-..out result2;
-..out result3;
-..out result4;
-..out result5;
-..out result6;
-
-/* 2. Unary Operations */
-result7 : -x;
-result8 : not true;
-
-..out "=== Unary Operations ===";
-..out result7;
-..out result8;
-
-/* 3. Mixed Unary and Binary Operations */
-result9 : x * -y;
-result10 : -x + y;
-result11 : x - -y;
-result12 : -x * -y;
-
-..out "=== Mixed Operations ===";
-..out result9;
-..out result10;
-..out result11;
-..out result12;
-
-/* 4. Function Application */
-result13 : f 5;
-result14 : f g 5;
-result15 : f (g 5);
-
-..out "=== Function Application ===";
-..out result13;
-..out result14;
-..out result15;
-
-/* 5. Function Composition */
-result16 : f via g 5;
-result17 : f via g via h 3;
-result18 : pipe(f, g) 5;
-result19 : compose(f, g) 5;
-
-..out "=== Function Composition ===";
-..out result16;
-..out result17;
-..out result18;
-..out result19;
-
-/* 6. Comparison Operations */
-result20 : x = y;
-result21 : x != y;
-result22 : x < y;
-result23 : x > y;
-result24 : x <= y;
-result25 : x >= y;
-
-..out "=== Comparison Operations ===";
-..out result20;
-..out result21;
-..out result22;
-..out result23;
-..out result24;
-..out result25;
-
-/* 7. Logical Operations */
-a : true;
-b : false;
-result26 : a and b;
-result27 : a or b;
-result28 : a xor b;
-result29 : not a;
-
-..out "=== Logical Operations ===";
-..out result26;
-..out result27;
-..out result28;
-..out result29;
-
-/* 8. Complex Expressions */
-result30 : x + y * z;
-result31 : (x + y) * z;
-result32 : x - y + z;
-result33 : x * -y + z;
-result34 : f x + g y;
-
-..out "=== Complex Expressions ===";
-..out result30;
-..out result31;
-..out result32;
-..out result33;
-..out result34;
-
-/* 9. Edge Cases */
-result35 : -5;
-result36 : 5 - 3;
-result37 : f -5;
-result38 : f 5 - 3;
-result39 : f (5 - 3);
-
-..out "=== Edge Cases ===";
-..out result35;
-..out result36;
-..out result37;
-..out result38;
-..out result39;
-
-..out "=== Test Complete ==="; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_precedence_fix.txt b/js/scripting-lang/scratch_tests/test_precedence_fix.txt
deleted file mode 100644
index 776aabe..0000000
--- a/js/scripting-lang/scratch_tests/test_precedence_fix.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-x : 10;
-y : 3;
-result : x - y;
-..out result;
-
-z : -5;
-..out z;
-
-mixed : x * -y;
-..out mixed; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_precedence_simple.txt b/js/scripting-lang/scratch_tests/test_precedence_simple.txt
deleted file mode 100644
index 32b5bb9..0000000
--- a/js/scripting-lang/scratch_tests/test_precedence_simple.txt
+++ /dev/null
@@ -1,21 +0,0 @@
-/* Simple Precedence Test */
-
-/* Basic variables */
-x : 5;
-y : 3;
-
-/* Test 1: Simple arithmetic */
-result1 : x + y;
-..out result1;
-
-/* Test 2: Binary minus (the problematic one) */
-result2 : x - y;
-..out result2;
-
-/* Test 3: Unary minus */
-result3 : -x;
-..out result3;
-
-/* Test 4: Mixed */
-result4 : x * -y;
-..out result4; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_precedence_variations.txt b/js/scripting-lang/scratch_tests/test_precedence_variations.txt
deleted file mode 100644
index 66a43bf..0000000
--- a/js/scripting-lang/scratch_tests/test_precedence_variations.txt
+++ /dev/null
@@ -1,16 +0,0 @@
-/* Test various precedence combinations */
-
-/* These should work */
-test1 : 5 + 3;
-test2 : -5;
-test3 : 5 * -3;
-test4 : (-5) + 3;
-
-/* This is the problematic one */
-test5 : -5 + 3;
-
-..out test1;
-..out test2;
-..out test3;
-..out test4;
-..out test5; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_predicate_functions.txt b/js/scripting-lang/scratch_tests/test_predicate_functions.txt
deleted file mode 100644
index e1cba80..0000000
--- a/js/scripting-lang/scratch_tests/test_predicate_functions.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-/* Test predicate functions */
-
-/* Test basic predicate functions */
-is_fizzbuzz : n -> (n % 3 = 0) and (n % 5 = 0);
-is_fizz : n -> n % 3 = 0;
-is_buzz : n -> n % 5 = 0;
-
-/* Test the functions */
-test1 : is_fizzbuzz 15;
-test2 : is_fizz 3;
-test3 : is_buzz 5;
-test4 : is_fizzbuzz 7;
-
-..out test1;
-..out test2;
-..out test3;
-..out test4;
-
-/* Test simple when with boolean */
-simple_test : n ->
-  when true is
-    true then "true"
-    _ then "false";
-
-result1 : simple_test 15;
-..out result1;
-
-/* Test function call in when */
-func_test : n ->
-  when is_fizzbuzz n is
-    true then "FizzBuzz"
-    _ then n;
-
-result2 : func_test 15;
-..out result2; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_reduce_debug.txt b/js/scripting-lang/scratch_tests/test_reduce_debug.txt
deleted file mode 100644
index 741d223..0000000
--- a/js/scripting-lang/scratch_tests/test_reduce_debug.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-add_func : x y -> x + y;
-reduced : reduce @add_func @(0) @(5);
-..out reduced; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_reduce_simple.txt b/js/scripting-lang/scratch_tests/test_reduce_simple.txt
deleted file mode 100644
index 0519ecb..0000000
--- a/js/scripting-lang/scratch_tests/test_reduce_simple.txt
+++ /dev/null
@@ -1 +0,0 @@
- 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_run_function.js b/js/scripting-lang/scratch_tests/test_run_function.js
deleted file mode 100644
index c79f5e8..0000000
--- a/js/scripting-lang/scratch_tests/test_run_function.js
+++ /dev/null
@@ -1,24 +0,0 @@
-/**
- * Test the run function directly
- */
-
-import { run } from '../lang.js';
-
-const scriptContent = `
-/* Simple test script */
-
-/* Get current state */
-state : ..listen;
-
-/* Emit the state */
-..emit state;
-`;
-
-try {
-    console.log('Testing run function...');
-    const result = run(scriptContent, {}, null);
-    console.log('Result:', result);
-} catch (error) {
-    console.error('Error:', error);
-    console.error('Stack:', error.stack);
-} 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_simple.txt b/js/scripting-lang/scratch_tests/test_simple.txt
deleted file mode 100644
index b5839fe..0000000
--- a/js/scripting-lang/scratch_tests/test_simple.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-/* Simple test */
-
-add_func : x y -> x + y;
-result : add_func 3 4;
-..out result; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_simple_and.txt b/js/scripting-lang/scratch_tests/test_simple_and.txt
deleted file mode 100644
index fbf2edf..0000000
--- a/js/scripting-lang/scratch_tests/test_simple_and.txt
+++ /dev/null
@@ -1,14 +0,0 @@
-/* Test simple logicalAnd */
-
-/* Simple boolean values */
-true_val : true;
-false_val : false;
-
-/* Test logicalAnd with simple values */
-result1 : logicalAnd true_val false_val;
-result2 : logicalAnd false_val true_val;
-result3 : logicalAnd true_val true_val;
-
-..out result1;
-..out result2;
-..out result3; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_simple_bracket.txt b/js/scripting-lang/scratch_tests/test_simple_bracket.txt
deleted file mode 100644
index 6ab9dba..0000000
--- a/js/scripting-lang/scratch_tests/test_simple_bracket.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-/* Simple test for bracket notation */
-
-numbers : {1, 2, 3, 4, 5};
-first : numbers[1];
-second : numbers[2];
-..assert first = 1;
-..assert second = 2;
-
-..out "Bracket notation test completed"; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_simple_composition.txt b/js/scripting-lang/scratch_tests/test_simple_composition.txt
deleted file mode 100644
index 44e42b6..0000000
--- a/js/scripting-lang/scratch_tests/test_simple_composition.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-/* Test simple composition */
-
-f : x -> x * 2;
-g : x -> x + 1;
-
-/* Test basic composition */
-result : f via g 5;
-..out result; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_simple_fizzbuzz.txt b/js/scripting-lang/scratch_tests/test_simple_fizzbuzz.txt
deleted file mode 100644
index 0b6cf39..0000000
--- a/js/scripting-lang/scratch_tests/test_simple_fizzbuzz.txt
+++ /dev/null
@@ -1,43 +0,0 @@
-/* Simple FizzBuzz test */
-
-/* Test basic modulo */
-test1 : 15 % 3;
-test2 : 15 % 5;
-..out test1;
-..out test2;
-
-/* Test basic when with modulo */
-test3 : when 15 % 3 is
-  0 then "divisible by 3"
-  _ then "not divisible by 3";
-..out test3;
-
-/* Test simple function */
-simple_test : n -> n;
-
-result1 : simple_test 3;
-..out result1;
-
-/* Test when inside function */
-when_test : n ->
-  when n is
-    3 then "three"
-    _ then n;
-
-result2 : when_test 3;
-..out result2;
-
-/* Test modulo in function */
-modulo_test : n -> n % 3;
-
-result3 : modulo_test 15;
-..out result3;
-
-/* Test greater than in when */
-greater_test : n ->
-  when n > 0 is
-    true then "positive"
-    _ then "non-positive";
-
-result4 : greater_test 5;
-..out result4; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_simple_func_call.txt b/js/scripting-lang/scratch_tests/test_simple_func_call.txt
deleted file mode 100644
index 06ec7cd..0000000
--- a/js/scripting-lang/scratch_tests/test_simple_func_call.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-/* Test with a simpler function call */
-id : x -> x;
-
-test_simple : n ->
-  when id n is
-    n then "same"
-    _ then "different";
-
-result : test_simple 4;
-..out result; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_simple_function.txt b/js/scripting-lang/scratch_tests/test_simple_function.txt
deleted file mode 100644
index 3f8ece7..0000000
--- a/js/scripting-lang/scratch_tests/test_simple_function.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-/* Simple function test */
-
-// Just create a function
-simple_func : x -> x;
-
-// Test it
-..out "=== SIMPLE FUNCTION TEST ===";
-result : simple_func 5;
-..out result; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_simple_harness.txt b/js/scripting-lang/scratch_tests/test_simple_harness.txt
deleted file mode 100644
index 6d1381b..0000000
--- a/js/scripting-lang/scratch_tests/test_simple_harness.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-/* Simple test script */
-
-/* Get current state */
-state : ..listen;
-
-/* Emit the state */
-..emit state; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_simple_minus.txt b/js/scripting-lang/scratch_tests/test_simple_minus.txt
deleted file mode 100644
index a322508..0000000
--- a/js/scripting-lang/scratch_tests/test_simple_minus.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-/* Simple minus test */
-
-result : 5 - 3;
-..out result; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_simple_multiple.txt b/js/scripting-lang/scratch_tests/test_simple_multiple.txt
deleted file mode 100644
index fc3ee32..0000000
--- a/js/scripting-lang/scratch_tests/test_simple_multiple.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-/* Test simple multiple values in when expressions */
-
-/* Test simple multiple values */
-test1 : when 5 3 is
-  5 3 then "simple multiple values work"
-  _ _ then "simple multiple values don't work";
-
-..out test1; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_simple_plus.txt b/js/scripting-lang/scratch_tests/test_simple_plus.txt
deleted file mode 100644
index 327d9aa..0000000
--- a/js/scripting-lang/scratch_tests/test_simple_plus.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-/* Simple addition test */
-result : 5 + 3;
-..out result; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_simple_unary_minus.txt b/js/scripting-lang/scratch_tests/test_simple_unary_minus.txt
deleted file mode 100644
index 221cfdc..0000000
--- a/js/scripting-lang/scratch_tests/test_simple_unary_minus.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-/* Simple unary minus test */
-result : -5;
-..out result; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_simple_verification.txt b/js/scripting-lang/scratch_tests/test_simple_verification.txt
deleted file mode 100644
index 2abdc0f..0000000
--- a/js/scripting-lang/scratch_tests/test_simple_verification.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-/* Simple verification test for enhanced case statements */
-
-/* Test 1: Basic table creation */
-basic : {1, 2, 3};
-..out "Basic table:";
-..out basic;
-
-/* Test 2: Auto-indexed table with expressions */
-expr : {5 % 3, 5 % 5};
-..out "Expression table:";
-..out expr;
-
-/* Test 3: Map with equals 0 */
-mapped : map @(equals 0) {15 % 3, 15 % 5};
-..out "Mapped table:";
-..out mapped;
-
-/* Test 4: Simple table pattern matching */
-test_table : {1: true, 2: false};
-result : when test_table is
-    {1: true, 2: true} then "both true"
-    {1: true, 2: false} then "first true"
-    {1: false, 2: true} then "second true"
-    {1: false, 2: false} then "both false";
-..out "Pattern match result:";
-..out result;
-
-/* Test 5: FizzBuzz divisibility function */
-divisibility : n -> map @(equals 0) {n % 3, n % 5};
-div_15 : divisibility 15;
-..out "Divisibility for 15:";
-..out div_15;
-
-/* Test 6: Complete FizzBuzz */
-fizzbuzz : n ->
-  when divisibility n is
-    {1: true, 2: true} then "FizzBuzz"
-    {1: true, 2: false} then "Fizz"
-    {1: false, 2: true} then "Buzz"
-    {1: false, 2: false} then n;
-
-fizz_15 : fizzbuzz 15;
-fizz_3 : fizzbuzz 3;
-fizz_5 : fizzbuzz 5;
-fizz_7 : fizzbuzz 7;
-
-..out "FizzBuzz results:";
-..out "15: " + fizz_15;
-..out "3: " + fizz_3;
-..out "5: " + fizz_5;
-..out "7: " + fizz_7; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_simple_when.txt b/js/scripting-lang/scratch_tests/test_simple_when.txt
deleted file mode 100644
index 0b1154f..0000000
--- a/js/scripting-lang/scratch_tests/test_simple_when.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-/* Simple when expression test */
-
-factorial : n -> 
-  when n is
-    0 then 1
-    _ then n * (factorial (n - 1));
-
-result : factorial 5;
-..out result; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_simple_when_equals.txt b/js/scripting-lang/scratch_tests/test_simple_when_equals.txt
deleted file mode 100644
index 885091b..0000000
--- a/js/scripting-lang/scratch_tests/test_simple_when_equals.txt
+++ /dev/null
@@ -1,17 +0,0 @@
-/* Simple test for when expressions with equals */
-
-/* Test basic when with equals */
-test1 : when 5 = 5 is
-  true then "equal"
-  _ then "not equal";
-
-..out test1;
-
-/* Test multiple values with different patterns */
-test2 : when 5 = 5 3 = 3 is
-  1 1 then "both equal"
-  1 0 then "first equal"
-  0 1 then "second equal"
-  0 0 then "neither equal";
-
-..out test2; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_t_access_simple.txt b/js/scripting-lang/scratch_tests/test_t_access_simple.txt
deleted file mode 100644
index bc233c1..0000000
--- a/js/scripting-lang/scratch_tests/test_t_access_simple.txt
+++ /dev/null
@@ -1,13 +0,0 @@
-/* Simple test for t. namespace access */
-
-/* Basic table creation */
-numbers : {1, 2, 3};
-
-/* Test t.map access */
-t_map_test : t.map;
-/* Expected: function */
-
-/* Output results */
-..out "=== T. ACCESS TEST ===";
-..out "t.map:";
-..out t_map_test; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_t_function_call.txt b/js/scripting-lang/scratch_tests/test_t_function_call.txt
deleted file mode 100644
index a258f0d..0000000
--- a/js/scripting-lang/scratch_tests/test_t_function_call.txt
+++ /dev/null
@@ -1,15 +0,0 @@
-/* Test t. function calls */
-
-/* Basic table creation */
-numbers : {1, 2, 3};
-
-/* Define function */
-double : x -> x * 2;
-
-/* Test t.map function call */
-t_map_result : t.map @double numbers;
-
-/* Output results */
-..out "=== T. FUNCTION CALL TEST ===";
-..out "t.map result:";
-..out t_map_result; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_t_namespace.txt b/js/scripting-lang/scratch_tests/test_t_namespace.txt
deleted file mode 100644
index 421655b..0000000
--- a/js/scripting-lang/scratch_tests/test_t_namespace.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-/* Simple test for t namespace */
-
-numbers : {1, 2, 3, 4, 5};
-double : x -> x * 2;
-
-/* Test t.map */
-t_doubled : t.map @double numbers;
-first : t_doubled[1];
-..assert first = 2;
-
-..out "T namespace test completed"; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_table_access_debug.txt b/js/scripting-lang/scratch_tests/test_table_access_debug.txt
deleted file mode 100644
index e4c613a..0000000
--- a/js/scripting-lang/scratch_tests/test_table_access_debug.txt
+++ /dev/null
@@ -1,15 +0,0 @@
-/* Test table access in when expressions */
-
-/* User data for testing */
-admin_user : {role: "admin", level: 5, name: "Alice"};
-
-/* Access control using table access in patterns */
-access_level : user ->
-  when user.role is
-    "admin" then "full access"
-    "user" then "limited access"
-    _ then "no access";
-
-/* Test access control */
-admin_access : access_level admin_user;
-..out admin_access; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_table_access_in_functions.txt b/js/scripting-lang/scratch_tests/test_table_access_in_functions.txt
deleted file mode 100644
index 4817b23..0000000
--- a/js/scripting-lang/scratch_tests/test_table_access_in_functions.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-/* Test table access in function definitions */
-
-/* Test basic table access */
-user : {role: "admin", active: true};
-test1 : user.role;
-test2 : user.active;
-..out test1;
-..out test2;
-
-/* Test table access in function */
-get_role : user -> user.role;
-test3 : get_role user;
-..out test3;
-
-/* Test table access inside when in function */
-classify_user : user ->
-  when user.role is
-    "admin" then "admin"
-    _ then "user";
-
-test4 : classify_user user;
-..out test4; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_table_access_only.txt b/js/scripting-lang/scratch_tests/test_table_access_only.txt
deleted file mode 100644
index 0874c0f..0000000
--- a/js/scripting-lang/scratch_tests/test_table_access_only.txt
+++ /dev/null
@@ -1,15 +0,0 @@
-/* Test just the table access part */
-
-/* User data for testing */
-admin_user : {role: "admin", level: 5, name: "Alice"};
-
-/* Access control using table access in patterns */
-access_level : user ->
-  when user.role is
-    "admin" then "full access"
-    "user" then "limited access"
-    _ then "no access";
-
-/* Test access control */
-admin_access : access_level admin_user;
-..out admin_access; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_table_access_when.txt b/js/scripting-lang/scratch_tests/test_table_access_when.txt
deleted file mode 100644
index 4161b19..0000000
--- a/js/scripting-lang/scratch_tests/test_table_access_when.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-/* Test table access in when expressions */
-user : {role: "admin", level: 5};
-
-test_table_access : u ->
-  when u.role is
-    "admin" then "admin user"
-    "user" then "regular user"
-    _ then "unknown role";
-
-result : test_table_access user;
-..out result; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_table_enhancements.txt b/js/scripting-lang/scratch_tests/test_table_enhancements.txt
deleted file mode 100644
index 004b32e..0000000
--- a/js/scripting-lang/scratch_tests/test_table_enhancements.txt
+++ /dev/null
@@ -1,747 +0,0 @@
-/* Test file for table enhancements
-   Comprehensive test suite for APL-inspired broadcasting and immutable operations
-   Based on design/TABLE_ENHANCEMENTS.md
-   
-   NOTE: This file contains tests for features that have NOT been implemented yet.
-   These tests will fail until the features are implemented. */
-
-/* ===== BASIC TABLE CREATION ===== */
-numbers : {1, 2, 3, 4, 5};
-person : {name: "Alice", age: 30, active: true};
-mixed_table : {a: 1, b: "hello", c: true, d: 42.5};
-
-/* ===== ENHANCED BROADCASTING COMBINATORS ===== */
-/* Test enhanced map with APL-inspired broadcasting */
-double : x -> x * 2;
-doubled : map @double numbers;
-/* Expected: {1: 2, 2: 4, 3: 6, 4: 8, 5: 10} */
-
-square : x -> x * x;
-squared : map @square numbers;
-/* Expected: {1: 1, 2: 4, 3: 9, 4: 16, 5: 25} */
-
-/* Test map with mixed data types */
-isNumber : x -> typeof x == "number";
-type_check : map @isNumber mixed_table;
-/* Expected: {a: true, b: false, c: false, d: true} */
-
-/* ===== TABLE-SPECIFIC COMBINATORS (t. namespace) ===== */
-/* Test t.map for table-specific operations */
-t_doubled : t.map @double numbers;
-/* Expected: {1: 2, 2: 4, 3: 6, 4: 8, 5: 10} */
-
-/* Test t.filter for table filtering */
-isEven : x -> x % 2 == 0;
-even_numbers : t.filter @isEven numbers;
-/* Expected: {2: 2, 4: 4} */
-
-isPositive : x -> x > 0;
-positive_numbers : t.filter @isPositive numbers;
-/* Expected: {1: 1, 2: 2, 3: 3, 4: 4, 5: 5} */
-
-/* Test t.reduce for table reduction */
-sum : x y -> x + y;
-total : t.reduce @sum 0 numbers;
-/* Expected: 15 */
-
-max : x y -> x > y ? x : y;
-maximum : t.reduce @max numbers.1 numbers;
-/* Expected: 5 */
-
-/* ===== IMMUTABLE TABLE OPERATIONS (t. namespace) ===== */
-/* Test t.set for immutable updates */
-updated_person : t.set person "age" 31;
-/* Expected: {name: "Alice", age: 31, active: true} */
-
-added_city : t.set person "city" "New York";
-/* Expected: {name: "Alice", age: 30, active: true, city: "New York"} */
-
-/* Test t.delete for immutable deletion */
-without_age : t.delete person "age";
-/* Expected: {name: "Alice", active: true} */
-
-without_nonexistent : t.delete person "email";
-/* Expected: {name: "Alice", age: 30, active: true} (unchanged) */
-
-/* Test t.merge for immutable merging */
-person2 : {city: "New York", country: "USA"};
-merged : t.merge person person2;
-/* Expected: {name: "Alice", age: 30, active: true, city: "New York", country: "USA"} */
-
-overwrite_merge : t.merge person {age: 25, city: "Boston"};
-/* Expected: {name: "Alice", age: 25, active: true, city: "Boston"} */
-
-/* ===== TABLE INFORMATION OPERATIONS (t. namespace) ===== */
-/* Test t.pairs for getting key-value pairs */
-all_pairs : t.pairs person;
-/* Expected: [["name", "Alice"], ["age", 30], ["active", true]] */
-
-/* Test t.keys for getting keys */
-all_keys : t.keys person;
-/* Expected: ["name", "age", "active"] */
-
-/* Test t.values for getting values */
-all_values : t.values person;
-/* Expected: ["Alice", 30, true] */
-
-/* Test t.length for getting table size */
-table_size : t.length person;
-/* Expected: 3 */
-
-/* Test t.has for checking key existence */
-has_name : t.has person "name";
-/* Expected: true */
-
-has_email : t.has person "email";
-/* Expected: false */
-
-/* Test t.get for safe property access */
-age_or_default : t.get person "age" 0;
-/* Expected: 30 */
-
-email_or_default : t.get person "email" "unknown";
-/* Expected: "unknown" */
-
-/* ===== APL-INSPIRED ELEMENT-WISE OPERATIONS ===== */
-/* Test each combinator for multi-argument element-wise operations */
-/* No tables - apply normally */
-normal_add : each @add 5 3;
-/* Expected: 8 */
-
-/* Single table - element-wise */
-add_ten : x -> x + 10;
-each_result : each @add_ten numbers;
-/* Expected: {1: 11, 2: 12, 3: 13, 4: 14, 5: 15} */
-
-/* Mixed table and scalar */
-mixed_operation : each @add numbers 10;
-/* Expected: {1: 11, 2: 12, 3: 13, 4: 14, 5: 15} */
-
-/* Multiple tables */
-table1 : {a: 1, b: 2, c: 3};
-table2 : {a: 10, b: 20, c: 30};
-multi_table_sum : each @add table1 table2;
-/* Expected: {a: 11, b: 22, c: 33} */
-
-/* Three tables */
-table3 : {a: 100, b: 200, c: 300};
-triple_sum : each @add table1 table2 table3;
-/* Expected: {a: 111, b: 222, c: 333} */
-
-/* Mixed types (table + scalar) */
-mixed_types : each @add table1 5;
-/* Expected: {a: 6, b: 7, c: 8} */
-
-mixed_types2 : each @add 5 table1;
-/* Expected: {a: 6, b: 7, c: 8} */
-
-/* ===== NESTED TABLE HANDLING ===== */
-/* Test nested table operations */
-nested : {
-    data: {a: 1, b: 2, c: 3},
-    meta: {type: "numbers", count: 3},
-    flags: {active: true, visible: false}
-};
-
-/* Top-level only (nested tables unchanged) */
-top_level_only : each @double nested;
-/* Expected: {data: {a: 1, b: 2, c: 3}, meta: {type: "numbers", count: 3}, flags: {active: true, visible: false}} */
-
-/* Nested operations with explicit composition */
-nested_doubled : each (each @double) nested;
-/* Expected: {data: {a: 2, b: 4, c: 6}, meta: {type: "numbers", count: 3}, flags: {active: true, visible: false}} */
-
-/* Nested operations with t.map */
-nested_with_t_map : t.map (t.map @double) nested;
-/* Expected: {data: {a: 2, b: 4, c: 6}, meta: {type: "numbers", count: 3}, flags: {active: true, visible: false}} */
-
-/* Deep nested structure */
-deep_nested : {
-    level1: {
-        level2: {
-            level3: {x: 1, y: 2, z: 3}
-        }
-    }
-};
-
-/* Deep nested operations */
-deep_doubled : each (each (each @double)) deep_nested;
-/* Expected: {level1: {level2: {level3: {x: 2, y: 4, z: 6}}}} */
-
-deep_with_t_map : t.map (t.map (t.map @double)) deep_nested;
-/* Expected: {level1: {level2: {level3: {x: 2, y: 4, z: 6}}}} */
-
-/* ===== EMBEDDED COMPLEX STRUCTURES ===== */
-/* Test functions and when expressions in tables */
-calculator : {
-    add: x y -> x + y,
-    multiply: x y -> x * y,
-    classify: x -> when x is
-        0 then "zero"
-        1 then "one"
-        _ then "other"
-};
-
-/* Usage of embedded functions */
-calc_result : calculator.add 5 3;
-/* Expected: 8 */
-
-calc_multiply : calculator.multiply 4 7;
-/* Expected: 28 */
-
-calc_classify_zero : calculator.classify 0;
-/* Expected: "zero" */
-
-calc_classify_one : calculator.classify 1;
-/* Expected: "one" */
-
-calc_classify_other : calculator.classify 42;
-/* Expected: "other" */
-
-/* ===== EDGE CASES AND ERROR HANDLING ===== */
-/* Test empty table operations */
-empty_table : {};
-
-empty_pairs : t.pairs empty_table;
-/* Expected: [] */
-
-empty_keys : t.keys empty_table;
-/* Expected: [] */
-
-empty_values : t.values empty_table;
-/* Expected: [] */
-
-empty_length : t.length empty_table;
-/* Expected: 0 */
-
-/* Test safe operations (should not error) */
-safe_get : t.get person "nonexistent" "default";
-/* Expected: "default" */
-
-safe_pairs : t.pairs empty_table;
-/* Expected: [] */
-
-/* Test boolean keys (existing feature) */
-boolean_table : {true: "enabled", false: "disabled"};
-boolean_keys : t.keys boolean_table;
-/* Expected: [true, false] */
-
-boolean_values : t.values boolean_table;
-/* Expected: ["enabled", "disabled"] */
-
-/* Test numeric keys */
-numeric_table : {1: "one", 2: "two", 3: "three"};
-numeric_keys : t.keys numeric_table;
-/* Expected: [1, 2, 3] */
-
-/* ===== FUNCTION COMPOSITION WITH TABLES ===== */
-/* Test table operations with function composition */
-transform : compose @t.map @double @t.filter @isPositive;
-transformed : transform numbers;
-/* Expected: {1: 2, 2: 4, 3: 6, 4: 8, 5: 10} */
-
-pipe_transform : pipe @t.filter @isPositive @t.map @double;
-pipe_result : pipe_transform numbers;
-/* Expected: {1: 2, 2: 4, 3: 6, 4: 8, 5: 10} */
-
-/* Test each with function composition */
-triple : x -> x * 3;
-each_with_functions : each @double table1;
-/* Expected: {a: 2, b: 4, c: 6} */
-
-each_with_composition : each (compose @double @triple) table1;
-/* Expected: {a: 6, b: 12, c: 18} */
-
-/* ===== COMPLEX DATA STRUCTURES ===== */
-/* Test with complex nested data */
-data : {
-    users: {1: {name: "Alice", age: 30}, 2: {name: "Bob", age: 25}},
-    scores: {1: 85, 2: 92},
-    active: {1: true, 2: false}
-};
-
-/* Element-wise operations over nested structure */
-get_name : user -> user.name;
-user_names : t.map @get_name data.users;
-/* Expected: {1: "Alice", 2: "Bob"} */
-
-/* Test table operations on complex data */
-user_count : t.length data.users;
-/* Expected: 2 */
-
-active_users : t.filter @identity data.active;
-/* Expected: {1: true} */
-
-/* ===== BACKWARD COMPATIBILITY TESTS ===== */
-/* Test that existing table operations still work */
-existing_table : {x: 1, y: 2, z: 3};
-existing_access : existing_table.x;
-/* Expected: 1 */
-
-existing_chained : {outer: {inner: {value: 42}}};
-chained_access : existing_chained.outer.inner.value;
-/* Expected: 42 */
-
-/* Test that existing map works with non-table values */
-existing_map_result : map @double 5;
-/* Expected: 10 */
-
-/* Test that existing reduce works with non-table values */
-existing_reduce_result : reduce @add 0 5;
-/* Expected: 5 */
-
-/* ===== PERFORMANCE AND STRESS TESTS ===== */
-/* Test with larger tables (for performance validation) */
-large_table : {1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8, 9: 9, 10: 10};
-large_doubled : t.map @double large_table;
-/* Expected: {1: 2, 2: 4, 3: 6, 4: 8, 5: 10, 6: 12, 7: 14, 8: 16, 9: 18, 10: 20} */
-
-large_filtered : t.filter @isEven large_table;
-/* Expected: {2: 2, 4: 4, 6: 6, 8: 8, 10: 10} */
-
-large_reduced : t.reduce @sum 0 large_table;
-/* Expected: 55 */
-
-/* Test nested operations on large structures */
-large_nested : {
-    data1: large_table,
-    data2: large_table,
-    data3: large_table
-};
-
-large_nested_doubled : t.map (t.map @double) large_nested;
-/* Expected: {data1: {1: 2, 2: 4, ...}, data2: {1: 2, 2: 4, ...}, data3: {1: 2, 2: 4, ...}} */
-
-/* ===== ASSERTION VALIDATION TESTS ===== */
-/* Validate enhanced broadcasting results */
-..assert doubled.1 == 2;
-..assert doubled.2 == 4;
-..assert doubled.3 == 6;
-..assert doubled.4 == 8;
-..assert doubled.5 == 10;
-
-..assert squared.1 == 1;
-..assert squared.2 == 4;
-..assert squared.3 == 9;
-..assert squared.4 == 16;
-..assert squared.5 == 25;
-
-..assert type_check.a == true;
-..assert type_check.b == false;
-..assert type_check.c == false;
-..assert type_check.d == true;
-
-/* Validate table-specific operations */
-..assert t_doubled.1 == 2;
-..assert t_doubled.2 == 4;
-..assert t_doubled.3 == 6;
-..assert t_doubled.4 == 8;
-..assert t_doubled.5 == 10;
-
-..assert even_numbers.2 == 2;
-..assert even_numbers.4 == 4;
-..assert t.has even_numbers 1 == false;
-..assert t.has even_numbers 3 == false;
-
-..assert positive_numbers.1 == 1;
-..assert positive_numbers.2 == 2;
-..assert positive_numbers.3 == 3;
-..assert positive_numbers.4 == 4;
-..assert positive_numbers.5 == 5;
-
-..assert total == 15;
-..assert maximum == 5;
-
-/* Validate immutable operations */
-..assert updated_person.age == 31;
-..assert updated_person.name == "Alice";
-..assert updated_person.active == true;
-
-..assert added_city.city == "New York";
-..assert added_city.name == "Alice";
-..assert added_city.age == 30;
-
-..assert t.has without_age "age" == false;
-..assert without_age.name == "Alice";
-..assert without_age.active == true;
-
-..assert without_nonexistent.name == "Alice";
-..assert without_nonexistent.age == 30;
-..assert without_nonexistent.active == true;
-
-..assert merged.name == "Alice";
-..assert merged.age == 30;
-..assert merged.active == true;
-..assert merged.city == "New York";
-..assert merged.country == "USA";
-
-..assert overwrite_merge.name == "Alice";
-..assert overwrite_merge.age == 25;
-..assert overwrite_merge.active == true;
-..assert overwrite_merge.city == "Boston";
-
-/* Validate table information operations */
-..assert t.length all_pairs == 3;
-..assert all_pairs[0][0] == "name";
-..assert all_pairs[0][1] == "Alice";
-..assert all_pairs[1][0] == "age";
-..assert all_pairs[1][1] == 30;
-..assert all_pairs[2][0] == "active";
-..assert all_pairs[2][1] == true;
-
-..assert t.length all_keys == 3;
-..assert all_keys[0] == "name";
-..assert all_keys[1] == "age";
-..assert all_keys[2] == "active";
-
-..assert t.length all_values == 3;
-..assert all_values[0] == "Alice";
-..assert all_values[1] == 30;
-..assert all_values[2] == true;
-
-..assert table_size == 3;
-
-..assert has_name == true;
-..assert has_email == false;
-
-..assert age_or_default == 30;
-..assert email_or_default == "unknown";
-
-/* Validate element-wise operations */
-..assert normal_add == 8;
-
-..assert each_result.1 == 11;
-..assert each_result.2 == 12;
-..assert each_result.3 == 13;
-..assert each_result.4 == 14;
-..assert each_result.5 == 15;
-
-..assert mixed_operation.1 == 11;
-..assert mixed_operation.2 == 12;
-..assert mixed_operation.3 == 13;
-..assert mixed_operation.4 == 14;
-..assert mixed_operation.5 == 15;
-
-..assert multi_table_sum.a == 11;
-..assert multi_table_sum.b == 22;
-..assert multi_table_sum.c == 33;
-
-..assert triple_sum.a == 111;
-..assert triple_sum.b == 222;
-..assert triple_sum.c == 333;
-
-..assert mixed_types.a == 6;
-..assert mixed_types.b == 7;
-..assert mixed_types.c == 8;
-
-..assert mixed_types2.a == 6;
-..assert mixed_types2.b == 7;
-..assert mixed_types2.c == 8;
-
-/* Validate nested table operations */
-..assert top_level_only.data.a == 1;
-..assert top_level_only.data.b == 2;
-..assert top_level_only.data.c == 3;
-..assert top_level_only.meta.type == "numbers";
-..assert top_level_only.meta.count == 3;
-..assert top_level_only.flags.active == true;
-..assert top_level_only.flags.visible == false;
-
-..assert nested_doubled.data.a == 2;
-..assert nested_doubled.data.b == 4;
-..assert nested_doubled.data.c == 6;
-..assert nested_doubled.meta.type == "numbers";
-..assert nested_doubled.meta.count == 3;
-..assert nested_doubled.flags.active == true;
-..assert nested_doubled.flags.visible == false;
-
-..assert nested_with_t_map.data.a == 2;
-..assert nested_with_t_map.data.b == 4;
-..assert nested_with_t_map.data.c == 6;
-..assert nested_with_t_map.meta.type == "numbers";
-..assert nested_with_t_map.meta.count == 3;
-..assert nested_with_t_map.flags.active == true;
-..assert nested_with_t_map.flags.visible == false;
-
-..assert deep_doubled.level1.level2.level3.x == 2;
-..assert deep_doubled.level1.level2.level3.y == 4;
-..assert deep_doubled.level1.level2.level3.z == 6;
-
-..assert deep_with_t_map.level1.level2.level3.x == 2;
-..assert deep_with_t_map.level1.level2.level3.y == 4;
-..assert deep_with_t_map.level1.level2.level3.z == 6;
-
-/* Validate embedded functions */
-..assert calc_result == 8;
-..assert calc_multiply == 28;
-..assert calc_classify_zero == "zero";
-..assert calc_classify_one == "one";
-..assert calc_classify_other == "other";
-
-/* Validate edge cases */
-..assert t.length empty_pairs == 0;
-..assert t.length empty_keys == 0;
-..assert t.length empty_values == 0;
-..assert empty_length == 0;
-
-..assert safe_get == "default";
-..assert t.length safe_pairs == 0;
-
-..assert t.length boolean_keys == 2;
-..assert boolean_keys[0] == true;
-..assert boolean_keys[1] == false;
-
-..assert t.length boolean_values == 2;
-..assert boolean_values[0] == "enabled";
-..assert boolean_values[1] == "disabled";
-
-..assert t.length numeric_keys == 3;
-..assert numeric_keys[0] == 1;
-..assert numeric_keys[1] == 2;
-..assert numeric_keys[2] == 3;
-
-/* Validate function composition */
-..assert transformed.1 == 2;
-..assert transformed.2 == 4;
-..assert transformed.3 == 6;
-..assert transformed.4 == 8;
-..assert transformed.5 == 10;
-
-..assert pipe_result.1 == 2;
-..assert pipe_result.2 == 4;
-..assert pipe_result.3 == 6;
-..assert pipe_result.4 == 8;
-..assert pipe_result.5 == 10;
-
-..assert each_with_functions.a == 2;
-..assert each_with_functions.b == 4;
-..assert each_with_functions.c == 6;
-
-..assert each_with_composition.a == 6;
-..assert each_with_composition.b == 12;
-..assert each_with_composition.c == 18;
-
-/* Validate complex data structures */
-..assert user_names.1 == "Alice";
-..assert user_names.2 == "Bob";
-
-..assert user_count == 2;
-
-..assert active_users.1 == true;
-..assert t.has active_users 2 == false;
-
-/* Validate backward compatibility */
-..assert existing_access == 1;
-..assert chained_access == 42;
-..assert existing_map_result == 10;
-..assert existing_reduce_result == 5;
-
-/* Validate performance tests */
-..assert large_doubled.1 == 2;
-..assert large_doubled.10 == 20;
-..assert t.length large_doubled == 10;
-
-..assert large_filtered.2 == 2;
-..assert large_filtered.4 == 4;
-..assert large_filtered.6 == 6;
-..assert large_filtered.8 == 8;
-..assert large_filtered.10 == 10;
-..assert t.length large_filtered == 5;
-
-..assert large_reduced == 55;
-
-..assert large_nested_doubled.data1.1 == 2;
-..assert large_nested_doubled.data1.10 == 20;
-..assert large_nested_doubled.data2.1 == 2;
-..assert large_nested_doubled.data3.1 == 2;
-
-/* ===== OUTPUT ALL RESULTS ===== */
-..out "=== BASIC TABLE CREATION ===";
-..out "Numbers:";
-..out numbers;
-..out "Person:";
-..out person;
-..out "Mixed table:";
-..out mixed_table;
-
-..out "=== ENHANCED BROADCASTING ===";
-..out "Doubled numbers:";
-..out doubled;
-..out "Squared numbers:";
-..out squared;
-..out "Type check:";
-..out type_check;
-
-..out "=== TABLE-SPECIFIC OPERATIONS ===";
-..out "t.map doubled:";
-..out t_doubled;
-..out "Even numbers:";
-..out even_numbers;
-..out "Positive numbers:";
-..out positive_numbers;
-..out "Sum total:";
-..out total;
-..out "Maximum:";
-..out maximum;
-
-..out "=== IMMUTABLE OPERATIONS ===";
-..out "Updated person:";
-..out updated_person;
-..out "Added city:";
-..out added_city;
-..out "Without age:";
-..out without_age;
-..out "Without nonexistent:";
-..out without_nonexistent;
-..out "Merged:";
-..out merged;
-..out "Overwrite merge:";
-..out overwrite_merge;
-
-..out "=== TABLE INFORMATION ===";
-..out "All pairs:";
-..out all_pairs;
-..out "All keys:";
-..out all_keys;
-..out "All values:";
-..out all_values;
-..out "Table size:";
-..out table_size;
-..out "Has name:";
-..out has_name;
-..out "Has email:";
-..out has_email;
-..out "Age or default:";
-..out age_or_default;
-..out "Email or default:";
-..out email_or_default;
-
-..out "=== ELEMENT-WISE OPERATIONS ===";
-..out "Normal add:";
-..out normal_add;
-..out "Each result:";
-..out each_result;
-..out "Mixed operation:";
-..out mixed_operation;
-..out "Multi-table sum:";
-..out multi_table_sum;
-..out "Triple sum:";
-..out triple_sum;
-..out "Mixed types:";
-..out mixed_types;
-..out "Mixed types2:";
-..out mixed_types2;
-
-..out "=== NESTED TABLE OPERATIONS ===";
-..out "Top-level only:";
-..out top_level_only;
-..out "Nested doubled:";
-..out nested_doubled;
-..out "Nested with t.map:";
-..out nested_with_t_map;
-..out "Deep doubled:";
-..out deep_doubled;
-..out "Deep with t.map:";
-..out deep_with_t_map;
-
-..out "=== EMBEDDED FUNCTIONS ===";
-..out "Calculator add:";
-..out calc_result;
-..out "Calculator multiply:";
-..out calc_multiply;
-..out "Classify zero:";
-..out calc_classify_zero;
-..out "Classify one:";
-..out calc_classify_one;
-..out "Classify other:";
-..out calc_classify_other;
-
-..out "=== EDGE CASES ===";
-..out "Empty pairs:";
-..out empty_pairs;
-..out "Empty keys:";
-..out empty_keys;
-..out "Empty values:";
-..out empty_values;
-..out "Empty length:";
-..out empty_length;
-..out "Safe get:";
-..out safe_get;
-..out "Safe pairs:";
-..out safe_pairs;
-
-..out "=== BOOLEAN AND NUMERIC KEYS ===";
-..out "Boolean keys:";
-..out boolean_keys;
-..out "Boolean values:";
-..out boolean_values;
-..out "Numeric keys:";
-..out numeric_keys;
-
-..out "=== FUNCTION COMPOSITION ===";
-..out "Transformed:";
-..out transformed;
-..out "Pipe result:";
-..out pipe_result;
-..out "Each with functions:";
-..out each_with_functions;
-..out "Each with composition:";
-..out each_with_composition;
-
-..out "=== COMPLEX DATA STRUCTURES ===";
-..out "User names:";
-..out user_names;
-..out "User count:";
-..out user_count;
-..out "Active users:";
-..out active_users;
-
-..out "=== BACKWARD COMPATIBILITY ===";
-..out "Existing access:";
-..out existing_access;
-..out "Chained access:";
-..out chained_access;
-..out "Existing map result:";
-..out existing_map_result;
-..out "Existing reduce result:";
-..out existing_reduce_result;
-
-..out "=== PERFORMANCE TESTS ===";
-..out "Large doubled:";
-..out large_doubled;
-..out "Large filtered:";
-..out large_filtered;
-..out "Large reduced:";
-..out large_reduced;
-..out "Large nested doubled:";
-..out large_nested_doubled;
-
-/* ===== ERROR HANDLING TESTS ===== */
-/* These tests demonstrate expected error behavior */
-/* Uncomment individual lines to test specific error cases */
-
-/* Type validation errors */
-/* tableSet_error : t.set "not_a_table" "key" "value"; */
-/* tableGet_error : t.get "not_a_table" "key"; */
-/* tableHas_error : t.has "not_a_table" "key"; */
-/* tableMerge_error : t.merge "not_a_table" person; */
-
-/* Missing argument errors */
-/* tableSet_missing : t.set person "key"; */
-/* tableGet_missing : t.get person; */
-/* tableHas_missing : t.has person; */
-
-/* Function validation errors */
-/* each_no_function : each "not_a_function" table1; */
-/* each_mixed_errors : each @add "string" table1; */
-
-/* Null/undefined handling */
-/* null_table : t.set null "key" "value"; */
-/* undefined_key : t.get person undefined; */
-
-/* ===== FINAL VALIDATION ===== */
-..assert "All table enhancement tests completed successfully!" == "All table enhancement tests completed successfully!";
-
-..out "=== TEST COMPLETION ===";
-..out "All table enhancement tests completed successfully!";
-..out "All assertions passed!"; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_table_enhancements_comprehensive.txt b/js/scripting-lang/scratch_tests/test_table_enhancements_comprehensive.txt
deleted file mode 100644
index 1464224..0000000
--- a/js/scripting-lang/scratch_tests/test_table_enhancements_comprehensive.txt
+++ /dev/null
@@ -1,90 +0,0 @@
-/* Comprehensive test for table enhancements */
-
-/* Basic table creation */
-numbers : {1, 2, 3, 4, 5};
-person : {name: "Alice", age: 30, active: true};
-
-/* Test enhanced map */
-double : x -> x * 2;
-doubled : map @double numbers;
-
-/* Test enhanced filter */
-isEven : x -> x % 2 == 0;
-even_numbers : filter @isEven numbers;
-
-/* Test enhanced reduce */
-sum : x y -> x + y;
-total : reduce @sum 0 numbers;
-
-/* Test t.map */
-t_doubled : t.map @double numbers;
-
-/* Test t.filter */
-t_even_numbers : t.filter @isEven numbers;
-
-/* Test t.reduce */
-t_total : t.reduce @sum 0 numbers;
-
-/* Test t.set */
-updated_person : t.set person "age" 31;
-
-/* Test t.delete */
-without_age : t.delete person "age";
-
-/* Test t.merge */
-merged : t.merge person {city: "New York", country: "USA"};
-
-/* Test t.pairs, t.keys, t.values, t.length */
-all_pairs : t.pairs person;
-all_keys : t.keys person;
-all_values : t.values person;
-table_size : t.length person;
-
-/* Test t.has and t.get */
-has_name : t.has person "name";
-has_email : t.has person "email";
-age_or_default : t.get person "age" 0;
-email_or_default : t.get person "email" "unknown";
-
-/* Test function composition with tables */
-transform : compose @t.map @double @t.filter @isEven;
-transformed : transform numbers;
-
-/* Output results */
-..out "=== COMPREHENSIVE TABLE ENHANCEMENTS ===";
-..out "Enhanced map:";
-..out doubled;
-..out "Enhanced filter:";
-..out even_numbers;
-..out "Enhanced reduce:";
-..out total;
-..out "t.map:";
-..out t_doubled;
-..out "t.filter:";
-..out t_even_numbers;
-..out "t.reduce:";
-..out t_total;
-..out "t.set:";
-..out updated_person;
-..out "t.delete:";
-..out without_age;
-..out "t.merge:";
-..out merged;
-..out "t.pairs:";
-..out all_pairs;
-..out "t.keys:";
-..out all_keys;
-..out "t.values:";
-..out all_values;
-..out "t.length:";
-..out table_size;
-..out "t.has name:";
-..out has_name;
-..out "t.has email:";
-..out has_email;
-..out "t.get age:";
-..out age_or_default;
-..out "t.get email:";
-..out email_or_default;
-..out "Function composition:";
-..out transformed; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_table_enhancements_final.txt b/js/scripting-lang/scratch_tests/test_table_enhancements_final.txt
deleted file mode 100644
index 79ae100..0000000
--- a/js/scripting-lang/scratch_tests/test_table_enhancements_final.txt
+++ /dev/null
@@ -1,84 +0,0 @@
-/* Final comprehensive test for table enhancements */
-
-/* Basic table creation */
-numbers : {1, 2, 3, 4, 5};
-person : {name: "Alice", age: 30, active: true};
-
-/* Test enhanced map */
-double : x -> x * 2;
-doubled : map @double numbers;
-
-/* Test enhanced filter */
-isEven : x -> x % 2 == 0;
-even_numbers : filter @isEven numbers;
-
-/* Test enhanced reduce */
-sum : x y -> x + y;
-total : reduce @sum 0 numbers;
-
-/* Test t.map */
-t_doubled : t.map @double numbers;
-
-/* Test t.filter */
-t_even_numbers : t.filter @isEven numbers;
-
-/* Test t.reduce */
-t_total : t.reduce @sum 0 numbers;
-
-/* Test t.set */
-updated_person : t.set person "age" 31;
-
-/* Test t.delete */
-without_age : t.delete person "age";
-
-/* Test t.merge */
-merged : t.merge person {city: "New York", country: "USA"};
-
-/* Test t.pairs, t.keys, t.values, t.length */
-all_pairs : t.pairs person;
-all_keys : t.keys person;
-all_values : t.values person;
-table_size : t.length person;
-
-/* Test t.has and t.get */
-has_name : t.has person "name";
-has_email : t.has person "email";
-age_or_default : t.get person "age" 0;
-email_or_default : t.get person "email" "unknown";
-
-/* Output results */
-..out "=== FINAL TABLE ENHANCEMENTS ===";
-..out "Enhanced map:";
-..out doubled;
-..out "Enhanced filter:";
-..out even_numbers;
-..out "Enhanced reduce:";
-..out total;
-..out "t.map:";
-..out t_doubled;
-..out "t.filter:";
-..out t_even_numbers;
-..out "t.reduce:";
-..out t_total;
-..out "t.set:";
-..out updated_person;
-..out "t.delete:";
-..out without_age;
-..out "t.merge:";
-..out merged;
-..out "t.pairs:";
-..out all_pairs;
-..out "t.keys:";
-..out all_keys;
-..out "t.values:";
-..out all_values;
-..out "t.length:";
-..out table_size;
-..out "t.has name:";
-..out has_name;
-..out "t.has email:";
-..out has_email;
-..out "t.get age:";
-..out age_or_default;
-..out "t.get email:";
-..out email_or_default; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_table_enhancements_minimal.txt b/js/scripting-lang/scratch_tests/test_table_enhancements_minimal.txt
deleted file mode 100644
index d8d4e02..0000000
--- a/js/scripting-lang/scratch_tests/test_table_enhancements_minimal.txt
+++ /dev/null
@@ -1,18 +0,0 @@
-/* Minimal test for table enhancements */
-
-/* Basic table creation */
-numbers : {1, 2, 3, 4, 5};
-
-/* Test enhanced map */
-double : x -> x * 2;
-doubled : map @double numbers;
-
-/* Test t.map */
-t_doubled : t.map @double numbers;
-
-/* Output results */
-..out "=== MINIMAL TABLE ENHANCEMENTS ===";
-..out "Enhanced map:";
-..out doubled;
-..out "t.map:";
-..out t_doubled; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_table_enhancements_working.txt b/js/scripting-lang/scratch_tests/test_table_enhancements_working.txt
deleted file mode 100644
index e73a6df..0000000
--- a/js/scripting-lang/scratch_tests/test_table_enhancements_working.txt
+++ /dev/null
@@ -1,102 +0,0 @@
-/* Test working table enhancements */
-
-/* Basic table creation */
-numbers : {1, 2, 3, 4, 5};
-person : {name: "Alice", age: 30, active: true};
-table1 : {a: 1, b: 2, c: 3};
-table2 : {a: 10, b: 20, c: 30};
-
-/* Test enhanced map (working) */
-double : x -> x * 2;
-doubled : map @double numbers;
-/* Expected: {1: 2, 2: 4, 3: 6, 4: 8, 5: 10} */
-
-/* Test enhanced filter (working) */
-isEven : x -> x % 2 == 0;
-even_numbers : filter @isEven numbers;
-/* Expected: {2: 2, 4: 4} */
-
-/* Test enhanced reduce (working) */
-sum : x y -> x + y;
-total : reduce @sum 0 numbers;
-/* Expected: 15 */
-
-/* Test t.map (working) */
-t_doubled : t.map @double numbers;
-/* Expected: {1: 2, 2: 4, 3: 6, 4: 8, 5: 10} */
-
-/* Test t.filter (working) */
-t_even_numbers : t.filter @isEven numbers;
-/* Expected: {2: 2, 4: 4} */
-
-/* Test t.reduce (working) */
-t_total : t.reduce @sum 0 numbers;
-/* Expected: 15 */
-
-/* Test t.set (working) */
-updated_person : t.set person "age" 31;
-/* Expected: {name: "Alice", age: 31, active: true} */
-
-/* Test t.delete (working) */
-without_age : t.delete person "age";
-/* Expected: {name: "Alice", active: true} */
-
-/* Test t.merge (working) */
-merged : t.merge person {city: "New York", country: "USA"};
-/* Expected: {name: "Alice", age: 30, active: true, city: "New York", country: "USA"} */
-
-/* Test t.pairs, t.keys, t.values, t.length (working) */
-all_pairs : t.pairs person;
-all_keys : t.keys person;
-all_values : t.values person;
-table_size : t.length person;
-
-/* Test t.has and t.get (working) */
-has_name : t.has person "name";
-has_email : t.has person "email";
-age_or_default : t.get person "age" 0;
-email_or_default : t.get person "email" "unknown";
-
-/* Test function composition with tables (working) */
-transform : compose @t.map @double @t.filter @isEven;
-transformed : transform numbers;
-/* Expected: {2: 4, 4: 8} */
-
-/* Output results */
-..out "=== WORKING TABLE ENHANCEMENTS ===";
-..out "Enhanced map:";
-..out doubled;
-..out "Enhanced filter:";
-..out even_numbers;
-..out "Enhanced reduce:";
-..out total;
-..out "t.map:";
-..out t_doubled;
-..out "t.filter:";
-..out t_even_numbers;
-..out "t.reduce:";
-..out t_total;
-..out "t.set:";
-..out updated_person;
-..out "t.delete:";
-..out without_age;
-..out "t.merge:";
-..out merged;
-..out "t.pairs:";
-..out all_pairs;
-..out "t.keys:";
-..out all_keys;
-..out "t.values:";
-..out all_values;
-..out "t.length:";
-..out table_size;
-..out "t.has name:";
-..out has_name;
-..out "t.has email:";
-..out has_email;
-..out "t.get age:";
-..out age_or_default;
-..out "t.get email:";
-..out email_or_default;
-..out "Function composition:";
-..out transformed; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_table_function.txt b/js/scripting-lang/scratch_tests/test_table_function.txt
deleted file mode 100644
index 8e019b8..0000000
--- a/js/scripting-lang/scratch_tests/test_table_function.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-/* Test function in table */
-
-// Just create a table with a function
-table : {
-    func: x -> x
-};
-
-// Test it
-..out "=== TABLE FUNCTION TEST ===";
-result : table.func 5;
-..out result; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_table_structure.txt b/js/scripting-lang/scratch_tests/test_table_structure.txt
deleted file mode 100644
index fc122eb..0000000
--- a/js/scripting-lang/scratch_tests/test_table_structure.txt
+++ /dev/null
@@ -1,16 +0,0 @@
-/* Test table structure */
-
-numbers : {1, 2, 3, 4, 5};
-first : numbers[1];
-second : numbers[2];
-..assert first = 1;
-..assert second = 2;
-
-double : x -> x * 2;
-doubled : map @double numbers;
-doubled_first : doubled[1];
-doubled_second : doubled[2];
-..assert doubled_first = 2;
-..assert doubled_second = 4;
-
-..out "Table structure test completed"; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_unary_minus.txt b/js/scripting-lang/scratch_tests/test_unary_minus.txt
deleted file mode 100644
index 18f6a29..0000000
--- a/js/scripting-lang/scratch_tests/test_unary_minus.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-/* Test unary minus parsing */
-x : -5;
-y : -3.14;
-z : -0;
-
-..out x;
-..out y;
-..out z; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_unary_plus.txt b/js/scripting-lang/scratch_tests/test_unary_plus.txt
deleted file mode 100644
index 66d978c..0000000
--- a/js/scripting-lang/scratch_tests/test_unary_plus.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-/* Unary minus followed by addition test */
-result : -5 + 3;
-..out result; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_when_debug.txt b/js/scripting-lang/scratch_tests/test_when_debug.txt
deleted file mode 100644
index 3a5f9cf..0000000
--- a/js/scripting-lang/scratch_tests/test_when_debug.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-/* Simple when expression test */
-
-grade : score -> 
-  when score is
-    90 then "A"
-    80 then "B"
-    70 then "C"
-    _  then "F";
-
-result : grade 95;
-..out result; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_when_in_table.txt b/js/scripting-lang/scratch_tests/test_when_in_table.txt
deleted file mode 100644
index 6d3591f..0000000
--- a/js/scripting-lang/scratch_tests/test_when_in_table.txt
+++ /dev/null
@@ -1,13 +0,0 @@
-/* Test when expression in table */
-
-// Simple when expression
-classifier : {
-    classify: x -> when x is
-        0 then "zero"
-        _ then "other"
-};
-
-// Test it
-..out "=== WHEN IN TABLE TEST ===";
-result : classifier.classify 0;
-..out result; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_when_in_table_simple.txt b/js/scripting-lang/scratch_tests/test_when_in_table_simple.txt
deleted file mode 100644
index 7ac89fc..0000000
--- a/js/scripting-lang/scratch_tests/test_when_in_table_simple.txt
+++ /dev/null
@@ -1,13 +0,0 @@
-/* Simple when expression in table test */
-
-// Test when expression in table
-test : {
-    classify: x -> when x is
-        0 then "zero"
-        _ then "other"
-};
-
-// Test it
-..out "=== WHEN IN TABLE SIMPLE TEST ===";
-result : test.classify 0;
-..out result; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_when_pattern_matching.txt b/js/scripting-lang/scratch_tests/test_when_pattern_matching.txt
deleted file mode 100644
index a9efad0..0000000
--- a/js/scripting-lang/scratch_tests/test_when_pattern_matching.txt
+++ /dev/null
@@ -1,25 +0,0 @@
-/* Test when expression pattern matching with tables */
-
-/* Test 1: Simple table pattern matching */
-test_value : { status: "placeholder", message: "test" };
-
-result1 : when test_value is
-    { status: "placeholder" } then "Pattern 1 matched"
-    { status: "active" } then "Pattern 2 matched"
-    _ then "No pattern matched";
-
-..out "Result 1:";
-..out result1;
-
-/* Test 2: ..listen pattern matching */
-state : ..listen;
-..out "State:";
-..out state;
-
-result2 : when state is
-    { status: "placeholder" } then "Placeholder pattern matched"
-    { status: "active" } then "Active pattern matched"
-    _ then "No pattern matched";
-
-..out "Result 2:";
-..out result2; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_when_simple.txt b/js/scripting-lang/scratch_tests/test_when_simple.txt
deleted file mode 100644
index 3180d51..0000000
--- a/js/scripting-lang/scratch_tests/test_when_simple.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-/* Test simple when expression */
-factorial : n -> 
-  when n is
-    0 then 1
-    _ then n * (factorial (n - 1));
-
-..out "when expression created successfully"; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_when_string_debug.txt b/js/scripting-lang/scratch_tests/test_when_string_debug.txt
deleted file mode 100644
index 247d3c0..0000000
--- a/js/scripting-lang/scratch_tests/test_when_string_debug.txt
+++ /dev/null
@@ -1,12 +0,0 @@
-getFunction : type -> 
-  when type is
-    "double" then @double
-    "square" then @square
-    _        then @add1;
-
-double : x -> x * 2;
-square : x -> x * x;
-add1 : x -> x + 1;
-
-result : getFunction "double";
-..out result; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_working_cases.txt b/js/scripting-lang/scratch_tests/test_working_cases.txt
deleted file mode 100644
index 80c4b63..0000000
--- a/js/scripting-lang/scratch_tests/test_working_cases.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-/* Test working precedence cases */
-
-test1 : 5 + 3;
-test2 : -5;
-test3 : 5 * -3;
-test4 : (-5) + 3;
-
-..out test1;
-..out test2;
-..out test3;
-..out test4; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/test_working_multiple.txt b/js/scripting-lang/scratch_tests/test_working_multiple.txt
deleted file mode 100644
index 66c796f..0000000
--- a/js/scripting-lang/scratch_tests/test_working_multiple.txt
+++ /dev/null
@@ -1,18 +0,0 @@
-/* Test multiple values using working syntax */
-
-compare : x y -> 
-  when x y is
-    0 0 then "both zero"
-    0 _ then "x is zero"
-    _ 0 then "y is zero"
-    _ _ then "neither zero";
-
-test1 : compare 0 0;
-test2 : compare 0 5;
-test3 : compare 5 0;
-test4 : compare 5 5;
-
-..out test1;
-..out test2;
-..out test3;
-..out test4; 
\ No newline at end of file
diff --git a/js/scripting-lang/scratch_tests/validate_table_scrap.txt b/js/scripting-lang/scratch_tests/validate_table_scrap.txt
deleted file mode 100644
index 0e937c9..0000000
--- a/js/scripting-lang/scratch_tests/validate_table_scrap.txt
+++ /dev/null
@@ -1,21 +0,0 @@
-/* Validate user input data */
-users : {
-  user1: {name: "Alice", email: "alice@example.com", age: 25},
-  user2: {name: "", email: "invalid-email", age: -5},
-  user3: {name: "Charlie", email: "charlie@test.com", age: 30}
-};
-
-/* Simple validation example */
-is_valid_name : user -> 
-  when user.name = "" is
-    true then false
-    _ then true;
-
-is_valid_age : user -> 
-  when user.age > 0 is
-    true then true
-    _ then false;
-
-/* Apply validation to all users */
-valid_names : map @is_valid_name users;
-valid_ages : map @is_valid_age users;