# [plt-scheme] Smallest set of operators

On 2/2/07, Paulo J. Matos <pocm at soton.ac.uk> wrote:
>*
*>* I'm really sorry but I really can't grasp what's so hard to understand
*>* in my question. I keep saying that the set of primitive values (let's
*>* call it this instead of operators) needs to belong to scheme. So, no
*>* C, no lambda calculus, no whatever complicated name, logic or
*>* calculus... Scheme!!! You get a set of scheme primitives to implement
*>* the rest of the language. Which ones do you pick for a minimal set???
*>* Is this too vague?
*
Well it seems clear to me what you mean. You want to start with a
minimal subset of Scheme such that you can introduce the rest of the
standard Scheme bindings just by programming in that subset. So C
isn't good enough because it's not a subset of Scheme, the lambda
calculus isn't good enough because it can simulate, but not provide,
the Scheme primitives, and so forth.
In general, you'll need the most primitive constructors, accessors,
and mutators for primitive types, the most expressive constructs for
control flow (conditionals, continuations, etc.) and data flow
(multiple values, etc.), and of course the macro system. Some
features might be expressible as others, but fundamental types that
are guaranteed to be distinct must be provided natively, and
fundamental language operations can't be simulated.
I don't know that my answer is terribly illuminating - these
guidelines seem pretty obvious to me - and I'm not going to take the
time to actually go through the list and pick a "basis" for the
bindings. But this is the general process I'd go through if I did.
--
Carl Eastlund