Make JS improvements

This commit is contained in:
Justine Tunney 2021-12-09 17:34:04 -08:00
parent 6b5fbf22f0
commit 8ad3d4822f

View file

@ -43,7 +43,7 @@ function Car(x) {
if (x < 0) { if (x < 0) {
return Get(x); return Get(x);
} else { } else {
Throw(x); Throw(List(kCar, x));
} }
} }
@ -51,7 +51,7 @@ function Cdr(x) {
if (x < 0) { if (x < 0) {
return Get(x + 1); return Get(x + 1);
} else { } else {
Throw(x); Throw(List(kCdr, x));
} }
} }
@ -144,6 +144,10 @@ function Remove(x, y) {
return Cons(Car(y), Remove(x, Cdr(y))); return Cons(Car(y), Remove(x, Cdr(y)));
} }
function List(x, y) {
return Cons(x, Cons(y, 0));
}
function Define(x, y) { function Define(x, y) {
return Cons(Cons(x, Read()), Remove(x, y)); return Cons(Cons(x, Read()), Remove(x, y));
} }
@ -166,6 +170,7 @@ function Evlis(m, a) {
} }
function Pairlis(x, y, a) { function Pairlis(x, y, a) {
if (!!x ^ !!y) Throw(List(x, y));
return x ? Cons(Cons(Car(x), Car(y)), return x ? Cons(Cons(Car(x), Car(y)),
Pairlis(Cdr(x), Cdr(y), a)) : a; Pairlis(Cdr(x), Cdr(y), a)) : a;
} }