about summary refs log tree commit diff stats
path: root/js/scripting-lang/c/tests/16_function_composition.txt
blob: 6b1b13fb38dc9cc17c99dc473e20f37bb9c6f014 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
/* Function Composition Test Suite */

/* Test basic function definitions */
double : x -> x * 2;
add1 : x -> x + 1;
square : x -> x * x;

/* Test 1: Basic composition with compose */
result1 : compose @double @add1 5;
..out result1;

/* Test 2: Multiple composition with compose */
result2 : compose @double (compose @add1 @square) 3;
..out result2;

/* Test 3: Function references */
ref1 : @double;
..out ref1;

/* Test 4: Function references in composition */
result3 : compose @double @add1 5;
..out result3;

/* Test 5: Pipe function (binary) */
result4 : pipe @double @add1 5;
..out result4;

/* Test 6: Compose function (binary) */
result5 : compose @double @add1 2;
..out result5;

/* Test 7: Multiple composition with pipe */
result6 : pipe @square (pipe @add1 @double) 2;
..out result6;

/* Test 8: Backward compatibility - arithmetic */
x : 10;
result7 : x + 5;
..out result7;

/* Test 9: Backward compatibility - function application */
result8 : double x;
..out result8;

/* Test 10: Backward compatibility - nested application */
result9 : double (add1 x);
..out result9;

/* Test 11: Backward compatibility - unary operators */
result10 : -x;
..out result10;

/* Test 12: Backward compatibility - logical operators */
result11 : not true;
..out result11;

/* Test 13: Complex composition chain */
result12 : compose @square (compose @add1 (compose @double @add1)) 3;
..out result12;