-
Notifications
You must be signed in to change notification settings - Fork 1
An R5RS Scheme in JavaScript.
License
erjiang/foxscheme
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
FoxScheme FoxScheme is a Scheme interpreter written in JavaScript. Some key points include: * Proper support for recursion FoxScheme does not use the native JavaScript stack, which is often too small for interesting recursive problems. * Minimal native (primitive) procedures Only procedures that must be implemented in JS out of necessity (cons) or obvious performance reasons (expt) are native. The rest is expected to be implemented in pure Scheme, which means fewer errors in native code. * Cleanliness and clarity FoxScheme is split into many discrete files, each being reasonably self-contained. The code attempts to be easily-readable where possible, and commented where not, allowing for easy modification and extension. * Self-contained FoxScheme tries to minimize its external dependencies, and does not rely on external libraries such as jQuery or Prototype.js. FoxScheme does its best not to pollute the global namespace or otherwise interfere with other JS software. There is no dependence on a browser; for example, early development was done using Rhino. This makes FoxScheme easy to embed in a web page. * Error-checking FoxScheme attempts to error-check as much of the user input as is reasonable. Many JS Schemes happily accept invalid syntax and other invalid input, which can be confusing to the user. * Unit testing FoxScheme has a growing unit-test suite using JSSpec that is run after every atomic change to the codebase. Known issues: * No arithmetic stack All numeric computation is done with JavaScript numbers, although bignum suppert could be added later. * Incomplete Currently, only a few native procedures are implemented for things like pairs, strings, vectors, and other basic values. There is currently no support for modules, macros, and so on. Stay tuned. Contact: Eric Jiang <erjiang@indiana.edu> Acknowledgements and References: Special thanks to Adam Foltzer and the people who frequent #scheme on FreeNode. BiwaScheme, by Yutaka Hara and the other BiwaScheme contributors, was an important inspiration and reference. Kent Dybvig's Petite Chez Scheme system and his assorted papers have been tremendously helpful. Also notable are Alex Yakovlev's jsScheme, Mark Probst's JScreme, and Jason Orendorff's Try Scheme, although no code from them was ultimately used. And, of course, The nice web-based REPL is Chris Done's jQuery Console. * #scheme on FreeNode irc://freenode.net/scheme * BiwaScheme http://www.biwascheme.org/ http://github.com/yhara/biwascheme * Chez Scheme http://scheme.com/ * R. Kent Dybvig http://www.cs.indiana.edu/~dyb/ * jsScheme http://web.archive.org/web/20080119020130/http://alex.ability.ru/scheme.html http://www.bluishcoder.co.nz/2006/05/scheme-implementation-in-javascript.html * JScreme http://schani.wordpress.com/2010/01/01/jscreme/ * Try Scheme http://tryscheme.sourceforge.net/ * jQuery Console https://github.com/chrisdone/jquery-console
About
An R5RS Scheme in JavaScript.
Topics
Resources
License
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published