Pseudo Scheme: Scheme Implemented on Top of Common Lisp
cs.cmu.edu
cs.cmu.edu
22 Scheme: An Uncommon Lisp[what a pun!] https://github.com/norvig/paip-lisp/blob/main/docs/chapter22...
23 Compiling Lisp [Scheme] https://github.com/norvig/paip-lisp/blob/main/docs/chapter23...
https://github.com/egallesio/STk
I like Common Lisp too, although not as much as Scheme day-to-day--it is nice now to have both. I was thinking about adding a TinyCLOS using Common Lisp. Pseudo Scheme transpiles source to CL, so I might be able to do it with CLOS underlying it instead of how TinyCLOS does it.
Jonathan Rees, the original author, has a Pseudo Scheme repo up on Github, with a branch that uses ASDF (which I am testing with SBCL).
https://github.com/jar398/pseudoscheme
Thanks for your comment, and thanks to the maintainers of both of the linked Scheme implementations.
Yes!
LispWorks and Allegro CL as shared libraries in various environments. LispWorks in iOS and Android Apps.
SBCL, I think, now possibly works also as a shared library.
In have an implementation of tagbody for guile scheme somewhere, using delimited continuations. I have seen it for racket as well. There is an implementation of loop for racket, but it relies heavily on set! which will tank performance, since chez and racket (and many schemes) is pretty bad at not boxing mutable values.
I wrote this which is definitely not as powerful as loop, but definitely more powerful than rackets for loops: https://git.sr.ht/~bjoli/goof-loop
1: http://scheme2011.ucombinator.org/papers/Barzilay2011.pdf
SLIB has an implementation of pretty much the entirety of CL's `format` that I ported to Racket: https://docs.racket-lang.org/slib-format/index.html
I also implemented a bunch of other CL stuff for Racket in https://docs.racket-lang.org/soup-lib/index.html (but not `tagbody`. Yet.)
If you ship a program that includes this, it is tainted.
Possibly, the code generated by the loop macro doesn't fall under the license, but you still have to ensure that the macro itself is scrubbed from your application.
22.5 An Interpreter Supporting Call/cc
https://github.com/norvig/paip-lisp/blob/main/docs/chapter22...
23.2 Introducing Call/cc [see the next chapter, 23.3 The Abstract Machine, for the implementation in bytecode]
https://github.com/norvig/paip-lisp/blob/main/docs/chapter23...