/gosick

Scheme implementation by Go language

Primary LanguageGoMIT LicenseMIT

Gosick

Scheme interpreter implemented by Golang.
This is started as a programming project for newcomers of my laboratory.

Installation

$ go get github.com/k0kubun/gosick

Usage

# Invoke interactive shell
$ gosick

# Excecute scheme source code
$ gosick source.scm

# One liner
$ gosick -e "(+ 1 2)"

# Dump AST of input source code
$ gosick -a

# Show help
$ gosick -h

Implemented syntax and functions

  • +, -, *, /, =, <, <=, >, >=
  • cons, car, cdr, list, length, last, append, set-car!, set-cdr!
  • if, cond, and, or, not, begin, do
  • memq, eq?, neq?, equal?
  • null?, number?, boolean?, procedure?, pair?, list?, symbol?, string?
  • string-append, symbol->string, string->symbol, string->number, number->string
  • let, let*, letrec, lambda, define, set!, quote
  • write, print, load

License

Gosick is released under the MIT License.