Skip to content

ka1han/LoLi

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

97 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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)

=> #<USER DEFINED FUNCTION> ;;(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 top-level:

& ./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.

About

A Lisp Dialect

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published