|
||
---|---|---|
.forgejo/workflows | ||
assets | ||
src | ||
.gitignore | ||
Cargo.lock | ||
Cargo.toml | ||
README.md |
Holy Lisp
An opinionated lisp implementation developed in the most intuitive way I could come up with.
Features
Lists with a function as the first element are evaluated when needed
(print (add 1 2)) ; => 3
(print (1 2 3)) ; => (1 2 3)
Quoted lists are not evaluated
(print '(add 1 2)) ; => '(<function add> 1 2)
Elements within quoted lists can be unquoted
(print
'(add
1 ,(sub 3 1)
)
) ; => '(<function add> 1 2)
Maps can be indexed with .
; In this example, ball_pos is a map
(print ball_pos.x ball_pos.y)
; This is just syntax sugar for
(get ball_pos "x")
Functions can be defined and called like so
(fn hello(name) (
(print (concat "Hello, " name "!"))
))
(hello "Joe") ; => "Hello, Joe!"
; Anonymous function creation
(
(fn(x) (print x))
15
) ; => 15