You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
-[x] Macros (`quasiquote`, threading via `->`. `->>`, and a host of other ones)
27
28
-[x] Tail call optimization
28
29
-[x] Lists with a core library that supports functional operations like `map`, `reduce`, `range` and several more
29
-
-[x]Hashmaps
30
+
-[x]Hash maps
30
31
31
32
## High Level Overview
32
33
Lispy is written as a tree-walk interpreter in Go with a recursive-descent parser. It also has a separate lexer, although most Lisp dialects are simple enough to parse that the lexing and parsing can be combined into one stage.
33
34
34
35
Because Lispy is interpreted, not compiled, it does not have a separate macro-expansion stage (that would typically be done before code is evaluated). Instead, Lispy handles macros as special functions, which it evaluates twice: once to generate the syntax of the code, and the second to run this generated syntax (as a macro would).
35
36
36
-
The interpreter code can be found at `pkg/lispy/`, the integration tests can be found at `tests/` and the main Lispy library at `lib/lispy.lpy`. Here's a short sample lispy in action:
37
+
The interpreter code can be found at `pkg/lispy/`, the integration tests can be found at `tests/` and the main Lispy library at `lib/lispy.lpy`. Here's a short sample of lispy in action:
0 commit comments