Does anyone have any good, language agnostic resources for writing interpreters (not just for lisp)?
Wisp: Small-but-featureful embeddable Lisp interpreter written in Haskell
21–30 of 30 posts
Re: Wisp: Small-but-featureful embeddable Lisp interpreter written in Haskell
#22Re: Wisp: Small-but-featureful embeddable Lisp interpreter written in Haskell
#23Re: Wisp: Small-but-featureful embeddable Lisp interpreter written in Haskell
#24Earlier quoted context omitted.
Wrapping an if in a lambda is unlikely to work as expected.
((if foo + -) 4 6) Can be compiled to (function() if foo then return plus else return minus end end)()(4, 6) It is far too verbose to be used in manually crafted Lua, but acceptable if you treat it as a compiler target (with the caveat that the lambda creation will prevent LuaJIT from JITting that piece of code).
"A object-oriented, unicode-enabled lisp that compiles to and runs as fast as Lua. Equipped with macros and compile-time compiler manipulation. Comes with all built-in Lua functions."
Re: Wisp: Small-but-featureful embeddable Lisp interpreter written in Haskell
#25I pine for a Lisp with the embeddable ease of Lua.
While maybe not as tiny as Lua, it is designed to be embeddable out of the box.
The FFI is very simple.
Re: Wisp: Small-but-featureful embeddable Lisp interpreter written in Haskell
#26Re: Wisp: Small-but-featureful embeddable Lisp interpreter written in Haskell
#27Re: Wisp: Small-but-featureful embeddable Lisp interpreter written in Haskell
#28Re: Wisp: Small-but-featureful embeddable Lisp interpreter written in Haskell
#29Earlier quoted context omitted.
((if foo + -) 4 6) Can be compiled to (function() if foo then return plus else return minus end end)()(4, 6) It is far too verbose to be used in manually crafted Lua, but acceptable if you treat it as a compiler target (with the caveat that the lambda creation will prevent LuaJIT from JITting that piece of code).
Plug https://github.com/meric/l2l "A object-oriented, unicode-enabled lisp that compiles to and runs as fast as Lua. Equipped with macros and compile-time compiler manipulation. Comes with all built-in Lua functions."
I have a question regarding your implementation: why do you use `goto`s rather than `elseif` to compile `(cond)` blocks? For nested blocks?
Re: Wisp: Small-but-featureful embeddable Lisp interpreter written in Haskell
#30Earlier quoted context omitted.
Plug https://github.com/meric/l2l "A object-oriented, unicode-enabled lisp that compiles to and runs as fast as Lua. Equipped with macros and compile-time compiler manipulation. Comes with all built-in Lua functions."
Nice one! I started coding one after writing the above comment. I have a question regarding your implementation: why do you use `goto`s rather than `elseif` to compile `(cond)` blocks? For nested blocks?