/minischeme

Mini-Scheme Interpreter with Copying GC

Primary LanguageCMIT LicenseMIT

minischeme

Mini-Scheme Interpreter with Copying GC

Features

  • based on Mini-Scheme 0.85k4-a
  • bignum (multi-precision integer) operations supported
  • continuations support without using 'SCHEME STACK' (#undef USE_SCHEME_STACK)
  • implemented a Copying GC using the Cheney's algorithm (#define USE_COPYING_GC)
  • implemented Hygienic macro 'syntax-rules' (supports SRFI 46)
  • implemented Legacy macro 'define-macro' ('gensym' also implemented)
  • supports UTF-8 multibyte characters (limitations: NO normalization nor toupper/tolower, ...)
  • reinventing the tinyscheme :)

Build (with MSVC)

Install "Visual C++ 2015" or later.

  • I compiled using "Microsoft Visual C++ 2015", but "2013" or earlier maybe OK.

Setting up environemt

Open the Visual Studio command prompt, or open Normal command prompt then run

> (Visual Studio installed path)\VC\vcvarsall.bat

and change directory to unpacking source files.

> cd src

Build an executable

To build an executable, just run

> msvcbuild.bat

and you'll get

> bin\minischeme.exe

Build a static library

To build as a static library, run with "static" option

> msvcbuild.bat static

and you'll get

> lib\minischeme.lib

R5RS standard compatibility

  • +
  • *
  • -
  • /
  • =
  • <
  • >
  • <=
  • >=
  • abs
  • acos
  • and
  • angle
  • append
  • apply
  • asin
  • assoc
  • assq
  • assv
  • atan
  • begin
  • boolean?
  • caaaar
  • caaadr
  • caaar
  • caadr
  • caadar
  • caaddr
  • caar
  • cadaar
  • cadadr
  • cadar
  • caddr
  • caddar
  • cadddr
  • cadr
  • call-with-current-continuation
  • call-with-input-file
  • call-with-output-file
  • call-with-values
  • car
  • case
  • cdar
  • cdaar
  • cdaaar
  • cdaadr
  • cdadar
  • cdaddr
  • cdadr
  • cddr
  • cddar
  • cddaar
  • cddadr
  • cdddr
  • cdddar
  • cddddr
  • cdr
  • ceiling
  • char->integer
  • char-alphabetic?
  • char-ci<=?
  • char-ci<?
  • char-ci=?
  • char-ci>=?
  • char-ci>?
  • char-downcase
  • char-lower-case?
  • char-numeric?
  • char-ready?
  • char-upcase
  • char-upper-case?
  • char-whitespace?
  • char<=?
  • char<?
  • char=?
  • char>=?
  • char>?
  • char?
  • close-input-port
  • close-output-port
  • complex?
  • cond
  • cons
  • cos
  • current-input-port
  • current-output-port
  • define
  • define-syntax
  • delay
  • denominator
  • display
  • do
  • dynamic-wind
  • else
  • eof-object?
  • eq?
  • equal?
  • eqv?
  • eval
  • even?
  • exact->inexact
  • exact?
  • exp
  • expt
  • floor
  • for-each
  • force
  • gcd
  • if
  • imag-part
  • inexact->exact
  • inexact?
  • input-port?
  • integer->char
  • integer?
  • interaction-environment
  • lambda
  • lcm
  • length
  • let
  • let*
  • let-syntax
  • letrec
  • letrec-syntax
  • list
  • list->string
  • list->vector
  • list-ref
  • list-tail
  • list?
  • load
  • log
  • magnitude
  • make-polar
  • make-rectangular
  • make-string
  • make-vector
  • map
  • max
  • member
  • memq
  • memv
  • min
  • modulo
  • negative?
  • newline
  • not
  • null-environment
  • null?
  • number->string
  • number?
  • numerator
  • odd?
  • open-input-file
  • open-output-file
  • or
  • output-port?
  • pair?
  • peek-char?
  • port?
  • positive?
  • procedure?
  • quasiquote
  • quote
  • quotient
  • rational?
  • rationalize
  • read
  • read-char
  • real-part
  • real?
  • remainder
  • reverse
  • round
  • scheme-report-environment
  • set!
  • set-car!
  • set-cdr!
  • sin
  • sqrt
  • string
  • string->list
  • string->number
  • string->symbol
  • string-append
  • string-ci<=?
  • string-ci<?
  • string-ci=?
  • string-ci>=?
  • string-ci>?
  • string-copy
  • string-fill!
  • string-length
  • string-ref
  • string-set!
  • string<=?
  • string<?
  • string=?
  • string>=?
  • string>?
  • string?
  • substring
  • symbol->string
  • symbol?
  • syntax-rules
  • tan
  • transcript-off
  • transcript-on
  • truncate
  • values
  • vector
  • vector->list
  • vector-fill!
  • vector-length
  • vector-ref
  • vector-set!
  • vector?
  • with-input-from-file
  • with-output-to-file
  • write
  • write-char
  • zero?

Links

D. Souflis, J. Shapiro - TinyScheme Home

Visual Studio Downloads

License

Copyright (c) 2015 Tatsuya Watanabe. See the LICENSE file for license rights and limitations (MIT).