-
+ 1E6959CA3EC52251E162D6C766CAF558F6FC222D337DBBCB313807C0B7F555F508E05865176D3DF5E92C8A2AA94E27529323A8A2E2F4264FDC1256276CF6B63B
bitcoin/src/shiva/MiniSCHEMETribute.txt
(0 . 0)(1 . 88)
1943 TinyScheme would not exist if it wasn't for MiniScheme. I had just
1944 written the HTTP server for Ovrimos SQL Server, and I was lamenting the
1945 lack of a scripting language. Server-side Javascript would have been the
1946 preferred solution, had there been a Javascript interpreter I could
1947 lay my hands on. But there weren't. Perl would have been another solution,
1948 but it was probably ten times bigger that the program it was supposed to
1949 be embedded in. There would also be thorny licencing issues.
1950
1951 So, the obvious thing to do was find a trully small interpreter. Forth
1952 was a language I had once quasi-implemented, but the difficulty of
1953 handling dynamic data and the weirdness of the language put me off. I then
1954 looked around for a LISP interpreter, the next thing I knew was easy to
1955 implement. Alas, the LeLisp I knew from my days in UPMC (Universite Pierre
1956 et Marie Curie) had given way to Common Lisp, a megalith of a language!
1957 Then my search lead me to Scheme, a language I knew was very orthogonal
1958 and clean. When I found Mini-Scheme, a single C file of some 2400 loc, I
1959 fell in love with it! What if it lacked floating-point numbers and
1960 strings! The rest, as they say, is history.
1961
1962 Below are the original credits. Don't email Akira KIDA, the address has
1963 changed.
1964
1965 ---------- Mini-Scheme Interpreter Version 0.85 ----------
1966
1967 coded by Atsushi Moriwaki (11/5/1989)
1968
1969 E-MAIL : moriwaki@kurims.kurims.kyoto-u.ac.jp
1970
1971 THIS SOFTWARE IS IN THE PUBLIC DOMAIN
1972 ------------------------------------
1973 This software is completely free to copy, modify and/or re-distribute.
1974 But I would appreciate it if you left my name on the code as the author.
1975
1976 This version has been modified by R.C. Secrist.
1977
1978 Mini-Scheme is now maintained by Akira KIDA.
1979
1980 This is a revised and modified version by Akira KIDA.
1981 current version is 0.85k4 (15 May 1994)
1982
1983 Please send suggestions, bug reports and/or requests to:
1984 <SDI00379@niftyserve.or.jp>
1985
1986
1987 Features compared to MiniSCHEME
1988 -------------------------------
1989
1990 All code is now reentrant. Interpreter state is held in a 'scheme'
1991 struct, and many interpreters can coexist in the same program, possibly
1992 in different threads. The user can specify user-defined memory allocation
1993 primitives. (see "Programmer's Reference")
1994
1995 The reader is more consistent.
1996
1997 Strings, characters and flonums are supported. (see "Types")
1998
1999 Files being loaded can be nested up to some depth.
2000
2001 R5RS I/O is there, plus String Ports. (see "Scheme Reference","I/O")
2002
2003 Vectors exist.
2004
2005 As a standalone application, it supports command-line arguments.
2006 (see "Standalone")
2007
2008 Running out of memory is now handled.
2009
2010 The user can add foreign functions in C. (see "Foreign Functions")
2011
2012 The code has been changed slightly, core functions have been moved
2013 to the library, behavior has been aligned with R5RS etc.
2014
2015 Support has been added for user-defined error recovery.
2016 (see "Error Handling")
2017
2018 Support has been added for modular programming.
2019 (see "Colon Qualifiers - Packages")
2020
2021 To enable this, EVAL has changed internally, and can
2022 now take two arguments, as per R5RS. Environments are supported.
2023 (see "Colon Qualifiers - Packages")
2024
2025 Promises are now evaluated once only.
2026
2027 (macro (foo form) ...) is now equivalent to (macro foo (lambda(form) ...))
2028
2029 The reader can be extended using new #-expressions
2030 (see "Reader extensions")