argumentcomputer / lurk-lisp

Lisp implementation of Lurk.
MIT License
67 stars 6 forks source link

Unbound variable in micro-tests (impl repl) #10

Closed porcuquine closed 2 years ago

porcuquine commented 3 years ago

Once #9 merges, there are still failures in examples — though some work.

After loading micro.lurk and micro-progs.lurk, loading micro-tests.lurk fails.

I've narrowed the first failure down to:

(car (((appendo '(a) '(b) '(a b)) empty-state)))
ERROR: Unbound variable #S(SYM :HASH 4544477808785593371 :VALUE X3)

The X3 was originally X2, but I substituted X3 in the definition of MPLUS to distinguish from the other occurrence.

So the implementation in lang.lisp is losing the binding.

I'm not sure whether it's better to try to debug this — or just to get tests in place then focus on turning lang.lisp into a more literal backport of eval.rs. Given that the latter works on these examples, I'm inclined to that.

The most cautious approach would be to ensure the test mechanism covers the Rust implementation also, to maximize confidence before starting down that path.

namin commented 2 years ago

lang.lisp has been deprecated.