Also just re-write eval using the parital_eval wrapper, enforce it taking in total-values.
In the future, can allow more partial eval
1) veval, returned from eval and posssibly others, essentailly (unwrap eval), which allows embedding partially-complete evals places without having to do something ugly like (eval (ensure_val partially_evaluated))
2) Relax paramter is total-value to head-value and check for env_id inside it
Immediatly: Debug bad partial evaluation on main test cases & crash with list index out of range
Kraken
The Kraken Programming Language
(more information online at http://www.kraken-lang.org/ which is also under construction / needs to be updated / has a try-it-online feature for an older version without partial evaluation)
Currently developing the third iteration, a Scheme-like based on a functional Vau calculus partially-evaluated for efficency and compiling to WebAssembly.
Heavily inspiried by John Shutt's thesis: https://web.wpi.edu/Pubs/ETD/Available/etd-090110-124904/unrestricted/jshutt.pdf with partial evaluation during compilation to make it efficient.
Licensed under SPDX-License-Identifier: BSD-2-Clause-Patent
Note: This license is designed to provide: a) a simple permissive license; b) that is compatible with the GNU General Public License (GPL), version 2; and c) which also has an express patent grant included.
(Note taken from https://opensource.org/licenses/BSDplusPatent )