/* 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;