/metal-scheme

Scheme implementation in Rust

Primary LanguageC

Scheme Lisp interpreter written in Rust.

Overall, 4.58% of r5rs's standard functions are implemented.

Function Implemented Tests passing
* + +
+ + +
- + +
/ + +
< + +
<= + +
= + +
=> - -
> + +
>= + +
abs - -
acos - -
and - -
angle - -
append - -
apply - -
asin - -
assoc - -
assq - -
assv - -
atan - -
#b - -
begin - -
boolean? - -
bound - -
caar - -
cadr - -
call-with-current-continuation - -
call-with-input-file - -
call-with-output-file - -
call-with-values - -
car - -
case - -
catch - -
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 - -
combination - -
comma - -
comment - -
complex? - -
cond - -
cons - -
constant - -
continuation - -
cos - -
current-input-port - -
current-output-port - -
#d - -
define - -
define-syntax - -
definition - -
delay - -
denominator - -
display - -
do - -
dotted - -
dynamic-wind - -
#e - -
Index - -
else - -
empty list - -
eof-object? - -
eq? - -
equal? - -
equivalence predicate - -
eqv? - -
error - -
escape procedure - -
eval - -
even? - -
exact - -
exact->inexact - -
exact? - -
exactness - -
exp - -
expt - -
#f - -
false - -
floor - -
for-each - -
force - -
gcd - -
hygienic - -
#i - -
identifier - -
if - -
imag-part - -
immutable - -
implementation restriction - -
improper list - -
inexact - -
inexact->exact - -
inexact? - -
input-port? - -
integer->char - -
integer? - -
interaction-environment - -
lambda - -
lcm - -
length - -
let - -
let* - -
let-syntax - -
letrec - -
letrec-syntax - -
library - -
list - -
list->string - -
list->vector - -
list-ref - -
list-tail - -
list? - -
load - -
location - -
log - -
make-polar - -
make-rectangular - -
make-string - -
make-vector - -
map - -
max + +
member - -
memq - -
memv - -
min + +
modulo - -
mutable - -
negative? - -
newline - -
nil - -
not - -
null-environment - -
null? - -
number - -
number->string - -
number? - -
numerator - -
#o - -
object - -
odd? - -
open-input-file - -
open-output-file - -
optional - -
or - -
output-port? - -
pair - -
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! - -
setcar - -
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 - -
#t - -
tan - -
transcript-off - -
transcript-on - -
truncate - -
unquote - -
unquote-splicing - -
values - -
vector - -
vector->list - -
vector-fill! - -
vector-length - -
vector-ref - -
vector-set! - -
vector? - -
with-input-from-file - -
with-output-to-file - -
write - -
write-char - -
#x - -
zero? - -