Awesome
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
License
Copyright (c) 2015 Tatsuya Watanabe. See the LICENSE file for license rights and limitations (MIT).