/LoLi

A Lisp Dialect

Primary LanguageC++GNU General Public License v3.0GPL-3.0

LoLi


LoLi is a LISP Dialect.

LoLi

Image from the internet

Why LoLi


I'm a LOLICON! LOLI is the JUSTICE!

What is LoLi


I intended to implement a Lisp dialect that combines the features of both Lisp - 1 and Lisp - 2 that means, LoLi will have one name space like in Scheme but data with the same names can exist at the same time like in Common Lisp and the interpreter will choose which one to eval according to the context, for example:

(get-func 'foo)

=> #<PROCEDURE> ;;(def foo (x) (+ 1 x))

(get-sym 'foo)

=> '(foo . 1)

(foo foo)

=> 2

and other features like the interpreter itself can eval an expression without getting into the REPL:

& ./loli --eval “(+ 1 2)”

3

and even more complicated:

& ./loli --eval “(def foo (x) (.\ (y) (+ y x))) (def bar (foo 2)) (bar 3)”

5

Also, LoLi contains some features from other language, for example, the .. operator from Haskell:

(.. 1 5)

=>'(1 2 3 4 5)

(.. 1 5 2)

=>'(1 3 5)

LoLi even has a fault tolerance mechanism that makes life easier:

(+ 1 "a" 5)

=>6

JOIN US (ME) PLEASE


If you are not satisfied with current Lisp dialects, or if you have some great ideas want to make them into a programming language, then just fork and send me a pull request, any help is appreciated.