Skip to content

sheik/golisp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

golisp

LISP interpreter written in Go. See CHANGELOG.md for recent changes.

It currently supports a subset of LISP, but important features already work:

golisp> (define r 10)
10
golisp> (* pi (* r r))
314.1592654
golisp> (define fact (lambda (n) (if (<= n 1) 1 (* n (fact (- n 1))))))
0x403320
golisp> (fact 3)
6
golisp> (fact 5)
120
golisp> (fact 120)
6.689502913449124e+198
golisp> (define circle-area (lambda (r) (* pi (* r r))))
0x403320
golisp> (circle-area (fact 5))
45238.9342176
golisp> 

It is also pretty fast:

[jar@cyprus golisp]$ golisp -profile
golisp> (define fact (lambda (n) (if (<= n 1) 1 (* n (fact (- n 1))))))
0x403b60
Execution took 284.094µs
golisp> (fact 100)
9.33262154439441e+157
Execution took 3.127316ms
golisp> (fact 100)
9.33262154439441e+157
Execution took 1.614446ms

About

LISP interpreter written in Go

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages