Why Scheme?
An undergrad asked me `Why Scheme? Why not C?'.
It seemed an odd question, but to the uninitiated, a natural one.
Lisp Machine Lore
Part of the underlying motivation for FunOS is to revive the legacy of the Lisp Machine.
These were $100k single-user high-end workstations from the mid 1980s.
They had many of the features this project would like to have.
Rainer Joswig (before his site went down) had a nice
description of Lisp Machines.
Reflection
Reflection is the ability for the user to modify the system of the underlying machine
without leaving the system. For example, with Linux, you can edit the source code
of the kernel networking code, recompile and reboot. With a reflective system, you
can modify the code (even kernel code), compile it, and replace the running system code
without leaving your editor.
Scheme, and Lisp languages in general, have a very fluid transition between high
level and low level. They have a dynamic quality that allows the creation
or redefinition of functions.
The Little Language Problem
Olin Shivers has a paper [Shivers1996]
on the Little Languages Problem.
The goal is to have one, universal language so that people aren't writing all of
C, cpp, sh, sed, awk, perl, <your-favorite-config-file-format>, etc.
You can also send Scheme as your network protocol (see `Mobile Code,' below).
[Shivers1996]
A universal scripting framework, or Lambda: the ultimate ``little language.''
Concurrency and Parallelism, Programming, Networking, and Security,
Lecture Notes in Computer Science #1179, pages 254-265,
Editors Joxan Jaffar and Roland H. C. Yap, 1996, Springer.
Mobile Code
You can send Scheme code over the network to a receiver who can interpret
it or even compile it first.
The code can be examined and rejected if it will try to perform potentially
harmful side effects.
For example, NeWS is a window system developed at Sun that used PostScript as
its display language. It allowed a client to send, in a sense, a PostScript
callback to the server so that when the user tickled that action, it could be
handled without the network burden of talking to the client.
Potentially of spectacular interest is sending closures and continuations over
the network. See Kali Scheme.