[plt-scheme] MrMathematica

From: Michael Sperber (sperber at informatik.uni-tuebingen.de)
Date: Sat Jun 12 02:52:31 EDT 2004

>>>>> "Matthias" == Matthias Felleisen <matthias at ccs.neu.edu> writes:

Matthias> Mike, from a historical perspective this advice wasn't used and wasn't
Matthias> useful. The lambda calculus was designed without knowledge of
Matthias> Schoenfinkel's S/K basis and Curry re-invented these things later
Matthias> on. Do you really believe that combinators would have been better?

No---as you note below, I could have used the term "functions" (or
"procedures").  It's just that the name "combinator library" has come
to be en vogue in recent years, and with the meaning I ascribe to it.

Matthias> Having said I think what you're saying in general could be this:

Matthias> 1. When you add a language, think of it as the API of a
Matthias>    library.

I'm reluctant to use the terms "API" or "library," as they don't have
clearly defined meaning.

Matthias> 2. Develop it to figure out the proper functional framework.
Matthias> 3. If you discover the need for syntax (binding, quoting, ordering),
Matthias> develop it around this API.

Yes.  Above all:

- provide the functional framework, too
- develop the additional syntax using design-recipe-style abstraction

Matthias> In other words, languages are lurking in APIs so why not use the
Matthias> development of APIs to grow languages carefully.

That's a way to say it.  I would say:

Algebras are lurking in domain-specific models, so why not identify
the algebra, thus identifying the functions needed to construct it.

Scsh suffers from the lack of all of these guidelines:

- The algebras weren't properly identified.
- The functional API aka combinator library isn't available.
- The syntax was designed haphazardly.

(SICP, while failing on many other fronts, contains
an---IMHO---excellent introduction on the design of domain-specific
models via combinator libraries / APIs / whatever.)

-- 
Cheers =8-} Mike
Friede, Völkerverständigung und überhaupt blabla



Posted on the users mailing list.