transl: allow rest args and improve validation in MQAPPLY lambda forms
commit3c2e3afb696a38a187ff5fc1e2fb493cf8a19c73
authorKris Katterjohn <katterjohn@gmail.com>
Fri, 22 Apr 2022 22:36:10 +0000 (22 18:36 -0400)
committerKris Katterjohn <katterjohn@gmail.com>
Fri, 22 Apr 2022 22:36:10 +0000 (22 18:36 -0400)
treefce777fae8d24b3396fa5c961effe5f963ce780e
parent19f30f877eb43383495682a99eaa080bccd07d67
transl: allow rest args and improve validation in MQAPPLY lambda forms

foo would fail to translate due to the rest arg:

    foo () := lambda ([[x]], x) (5)

but things like bar and baz would translate and work just fine:

    bar () := apply (lambda ([[x]], x), [5])
    baz () := block ([f : lambda ([[x]], x)], f (5))

Now rest args are allowed in MQAPPLY lambda forms.

Validation of lambda expressions (checks for an empty body, duplicate
parameters, etc.) in lambda forms has now also been improved.

No problems with the test suite, share test suite or rtest_translator.
New tests have been added to rtest_translator.
src/transl.lisp
tests/rtest_translator.mac