Skip to content

Commit c3da9d5

Browse files
committed
test assert-same & assert-not-same
1 parent e2f3c10 commit c3da9d5

File tree

4 files changed

+40
-3
lines changed

4 files changed

+40
-3
lines changed

TODO.md

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
test `assert-same` & `assert-not-same`
2-
31
`equalInCtx` with `ctx.trail` handle recursive function
42
`equalInCtx` call `applyOneStep`
53

File renamed without changes.

examples/tests/assert-same.lisp

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
(assert-same
2+
(lambda (x) x)
3+
(lambda (y) y))
4+
5+
(assert-same
6+
(lambda (x y) (x y))
7+
(lambda (y x) (y x)))
8+
9+
(assert-not-same
10+
(lambda (x y) (x y))
11+
(lambda (x y) (y x)))
12+
13+
(define (id1 x) x)
14+
(define (id2 x) x)
15+
16+
(assert-same id1 id1)
17+
(assert-same id2 id2)
18+
(assert-not-same id1 id2)
19+
20+
(assert-same
21+
(lambda (x) (id2 x))
22+
(lambda (x) (id2 x)))
23+
24+
;; partial evaluation for unnamed lambda:
25+
(assert-same
26+
(lambda (x) ((lambda (x) (id2 x)) x))
27+
(lambda (x) (id2 x)))
28+
29+
(assert-not-same
30+
id1
31+
(lambda (x) (id1 x)))
32+
33+
(assert-not-same
34+
(lambda (x) (id2 x))
35+
(lambda (x) (id1 x)))

src/lang/same/sameInCtx.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,11 @@ export function sameInCtx(ctx: Ctx, left: Value, right: Value): boolean {
1414
}
1515

1616
if (left.kind === "Lambda" && right.kind === "Lambda") {
17-
if (left.definedName === right.definedName) {
17+
if (
18+
left.definedName !== undefined &&
19+
right.definedName !== undefined &&
20+
left.definedName === right.definedName
21+
) {
1822
return true
1923
}
2024
}

0 commit comments

Comments
 (0)