Skip to content

Commit 72adddd

Browse files
committed
Add Lisp file for lambda testing
1 parent c801b42 commit 72adddd

File tree

1 file changed

+43
-0
lines changed

1 file changed

+43
-0
lines changed

lisp/test_lambda_alias.lisp

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
; Test lambda as an alias for fn
2+
3+
(println "Testing lambda alias...")
4+
5+
; Test 1: lambda and fn produce identical functions
6+
(def square-fn (fn (n) (* n n)))
7+
(def square-lambda (lambda (n) (* n n)))
8+
9+
(if (= (square-fn 5) (square-lambda 5))
10+
(println "lambda and fn produce identical results")
11+
(println "lambda and fn differ"))
12+
13+
; Test 2: lambda with multiple parameters
14+
(def add (lambda (a b) (+ a b)))
15+
(if (= (add 3 4) 7)
16+
(println "lambda with multiple parameters works")
17+
(println "lambda with multiple parameters failed"))
18+
19+
; Test 3: lambda in higher-order functions
20+
(def apply-twice (lambda (f x) (f (f x))))
21+
(def double (lambda (n) (* n 2)))
22+
(if (= (apply-twice double 3) 12)
23+
(println "lambda works in higher-order functions")
24+
(println "lambda in higher-order functions failed"))
25+
26+
; Test 4: lambda with tail recursion
27+
(def sum-lambda (lambda (n acc)
28+
(if (<= n 0)
29+
acc
30+
(sum-lambda (- n 1) (+ acc n)))))
31+
32+
(if (= (sum-lambda 100 0) 5050)
33+
(println "lambda supports tail recursion")
34+
(println "lambda tail recursion failed"))
35+
36+
; Test 5: Mixed usage - fn calling lambda and vice versa
37+
(def fn-func (fn (x) (* x 2)))
38+
(def lambda-func (lambda (x) (fn-func (+ x 1))))
39+
(if (= (lambda-func 4) 10)
40+
(println "fn and lambda interoperate seamlessly")
41+
(println "fn/lambda interop failed"))
42+
43+
(println "All lambda alias tests passed!")

0 commit comments

Comments
 (0)