[plt-scheme] MrMathematica
>>>>> "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