-
Notifications
You must be signed in to change notification settings - Fork 1
Release Notes
P. Todd Decker edited this page Jan 12, 2016
·
5 revisions
Extended numbers to also handle reals (floating point):
- Additional primitive functions added include: 'real?'
- Extended basic math functions primitives ('+', '-', '*', 'quotient', and 'remainder') to support real numbers in addition to integers.
- IEEE 755 double precision floating point was implemented.
- Floating point numbers will automatically be converted back to integers if the floating point remainder is exactly zero.
- Math functions shift to floating point if any floating point number is present in the string of multiple arguments.
Added basic file I/O support:
- Additional primitive functions added include: 'load', 'open-input-port', 'close-input-port', 'eof-object?', 'open-output-port', 'close-output-port', 'input-port?', 'close-port?', 'peek-char', 'read-char', 'write-char', 'read', 'write', and 'error'.
A first cut at basic REPL functionality is complete. Provided functionality includes:
- No garbage collection -- you will eventually run the heap dry
- No file system -- you cannot yet save your work or load Scheme files
- Poor error handling -- sometimes the REPL knows how to recover, sometimes it doesn't
- Since no file system, no standard library -- what follows is what you've got to work with
- Primitive types supported include:
- boolean (examples: #t, #f)
- character (examples: #'x', #'\n')
- integer (examples: 1, 004, 78, -4)
- string (examples: "hello world")
- All embedded C-style escape characters are supported (examples: \a, \n, \t)
- Primitive symbols currently supported include: 'quote', 'define', 'set', 'if', 'lambda', 'begin', 'cond', 'else', 'let', 'and', and 'or'.
- Primitive functions currently supported include: 'null?', 'boolean?', 'symbol?', 'integer?', 'char?', 'string?', 'pair?', 'procedure?', 'char->integer', 'integer->char', 'number->string', 'string->number', 'symbol->string', 'string->symbol', '+', '-', '*', 'quotient', 'remainder', '=', '<', '>', 'cons', 'car', 'cdr', 'set-car!', 'set-cdr!', 'list', 'eq?', 'apply', 'interaction-environment', 'null-environment', 'environment', 'eval', and 'exit'.