[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Scheme-reports] [scheme-reports-wg1] John Cowan's votes on the sixth ballot

Hash: SHA1

On 07/12/2012 10:04 PM, Alex Shinn wrote:

> Eval is in an optional library, there's no need to add it. The 
> undefined order is not broken since any order would be valid, but 
> we could certainly change it to shuffle once per call.  That's a 
> pretty minor point though.  You can argue you'd like to improve
> the semantics, I think claiming they are "broken" is extreme and 
> misleading.

It's reasonably simple to express in an operational semantics
that the order of evaluation specifically doesn't matter; you
need a class of evaluable things each associated with a priority,
and a reduction rule that selects any evaluable thing (of the
highest available priority) to evaluate.  In the course of
evaluating it of course you'll add more evaluable things (of
higher priority) to the class.  With a rule that makes
a function body into an evaluable thing once all the arguments
have been evaluated, a fully functional order-doesn't-matter
semantics falls out, which still fully evaluates one argument
before moving on to another (consistent with the requirement
that side effects appear as though there was *some* specific
order of evaluation).

My denotational-fu is not nearly so sharp as my operational-fu,
but I don't understand why the denotational semantics does the
shuffling thing instead.  It reads as though you would not
expect to get correct results unless your interpreter repeats
the shuffle and processes arguments in the exact same randomized
order. And we know that isn't what it really means.

> No, you're really not understanding.  The entire premise of the 
> module system is that the library declarations and Scheme code
> live in two fundamentally different spaces.

The module language is inseparable in practical terms from the
program code.  When someone is "learning the language" they are
learning both.  The treatment of them as separate creates
a language with unexpected context sensitivities and creates
the appearance of second-class constructs within Scheme.

I understand why people want it kept separate, too; if you
put it together with scheme, it would make the denotational
semantics at least an order of magnitude harder, and maybe
completely impossible.



Version: GnuPG v1.4.12 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/


Scheme-reports mailing list