Go to the first, previous, next, last section, table of contents.


Sizzle vs. R5RS

Sizzle is not a complete implementation of Scheme as defined in the Revised 5 Report on the Algorithmic Language Scheme (R5RS), but most of the standard procedures from that report and all data types except complex and rational numbers are supported. This chapter lists all differences between Sizzle and standard Scheme.

First of all, Sizzle does only support non-hygienic macros at all, and the high-level syntax definitions from R5RS are implemented a little bit shaky. call-with-current-continuation only works in upward direction properly, general continuations can be compiled in, but are buggy and will segfault in the current state. Besides of that, Sizzle is a quite useful language for embedding and higher-order functional programming purposes.

Standard Data Types

The following data types are implementd in Sizzle, including most standard procedures for manipulating objects of these types.

Whole numbers
Real numbers
Lists
Vectors
Strings
Characters
Boolean values

The numerical tower is not fully implemented, not available are the number types:

Rational numbers
Complex numbers

Standard Procedures

These are the standard procedures defined in Sizzle.

Supported Syntax

quote, quasiquote, unquote, unquote-splicing, lambda, if, cond, case, set!, and, or, do, let, let*, letrec, begin, define

Supported Procedures

eqv?, eq?, equal?, number?, complex?, real?, rational?, integer?, exact?, inexact?, zero?, positive?, negative?, odd?, even?, max, min, +, *, -, /, abs, quotient, remainder, modulo, floor, ceiling, truncate, round, exp, log, sin, cos, tan, asin, acos, atan, atan, sqrt, expt, exact->inexact, inexact->exact, number->string, number->string, string->number, string->number, gcd, lcm, not, boolean?, pair?, cons, car, cdr, set-car!, set-cdr!, caar, cadr, ..., cdddar, cddddr, null?, list?, list, length, append, reverse, list-tail, list-ref, memq, memv, member, assq, assv, assoc, symbol?, symbol->string, string->symbol, char?, char=?, char<?, char>?, char<=?, char>=?, char-ci=?, char-ci<?, char-ci>?, char-ci<=?, char-ci>=?, char-alphabetic?, char-numeric?, char-whitespace?, char-upper-case?, char-lower-case?, char->integer, integer->char, char-upcase char, char-downcase, string?, make-string, make-string, string, string-length, string-ref, string-set!, string=?, string<?, string>?, string<=?, string>=?, string-ci=?, string-ci<?, string-ci>?, string-ci<=?, string-ci>=?, substring, string-append, string->list, list->string, string-copy, string->fill!, vector?, make-vector, make-vector, vector, vector-length, vector-ref, vector-set!, vector->list, list->vector, vector-fill!, procedure?, apply, map, for-each, eval, interaction-environment, call-with-input-file, call-with-output-file, with-input-from-file, with-output-to-file, input-port?, output-port?, current-input-port, current-output-port, open-input-file, open-output-file, close-input-port, close-output-port, read, read-char, peek-char, write-char, eof-object?, write, display, newline, delay, force, values, call-with-values, dynamic-wind, transcript-on, transcript-off, null-environment, scheme-report-environment, char-ready?

Partly implemented

load
Implemented in the startup file `init.scm', but Sizzle has a builtin primitive procedure primitive-load, which works like load as defined in R5RS. The Scheme procedure load in Sizzle searches all directories listed in the variable %load-path as well as the current directory if the given filename is not absolute.
real-part imag-part magnitude angle
These work for integers and reals only, because complex numbers are not supported.
denominator numerator
These work for integers only, because rational numbers are not supported.
let-syntax letrec-syntax syntax-rules define-syntax
These are implemented, but are only usable for simple pattern-based macro substitution because they are not hygienic. Also vector patterns/templates are not allowed.
call-with-current-continuation
Only for escape procedures.

Not supported

rationalize, make-rectangular, make-polar


Go to the first, previous, next, last section, table of contents.