ALU capability (was Re: [E-Lang] Authority -- what is its
Mark S. Miller
Wed, 17 Oct 2001 22:00:14 -0700
At 07:28 PM 10/17/2001 Wednesday, Jonathan A Rees wrote:
> Date: Wed, 17 Oct 2001 17:17:51 -0700
> From: "Mark S. Miller" <email@example.com>
> Also, in neither system, nor in any other
> capability system that I've ever heard of, does one require a capability to
> access one's own ALU.
>Just for the record, in Scheme 48 (which is similar to W7) it's easy
>to create an environment without + or any other arithmetic or logical
>operators. [...] This is because
>Scheme has bland syntax and no reserved words, syntactic or otherwise.
>LAMBDA is computationally universal (thanks to Church), so if you
>squint hard that's the only capability anyone really needs, but it
>needn't be made available. If you want to allow only primitive
>recursion and not while loops, that can be done. Etc.
Scheme must have changed some since I last paid attention. When last I knew
Scheme, "lambda" and the other keywords that introduced the special forms
were in some sense built in. I have followed the work on syntactic
environments some, but it hadn't occurred to me that a program could be
bound(??) (what's the verb? probably not "evaluated" or "bound") in a
syntactic environment that has no binding for "lambda". How does one do this?
E currently has no macros, so this isn't immediately relevant for E. But I
have reserved some productions in the grammar for supporting mostly
hygienic macros someday. So these matters may become relevant someday.
(I easily have five years of higher priority things to do on my agenda
before then, but someone else may pick this up and do it sooner.)
In any case, getting back to our original subject, I presume that even with
empty environments and empty anything else that may be emptied, that a
Scheme program may still "name" any literal data by including the literal
representation of that data in the source program. The reason this doesn't
make such programs non-vacuous *in Scheme* is that all the data types which
can be written literally in Scheme (numbers, characters, strings, vectors,
cons cells) are un-invokable. Part of what's meant by the oo mantra
"everything is an object" is that everything is invokable, and (ideally)
that the semantics of anything is only the semantics of invoking it. A
thing has no properties other than the behavior elicited by invocation. (To
my knowledge, only some Actors language and Joule achieve this ideal.
Smalltalk and E do not.)
None of this is to argue for or against anything, but merely to point out
the interactions between literal data types and these other issues.
>I don't know how useful any of this is, but it certainly contributes
>to the nit-like nature of this discussion.
>By the way, I created a W7-in-Scheme48 server back in August, along
>with some documentation for it (http://mumble.net/w7/), and would be
>happy to fire it up if anyone wants to give it a try. I didn't leave
>it up because I couldn't think of any good reason for it to exist.
>Sorry, I didn't get around to exporting the module system from Scheme
>48, so you can't do user-mode confinement and tricks like what I
>describe above, but this wouldn't be too difficult to do.
For promoting E, a naive analysis might say the less competition the better.
As you may infer from the way I've been promoting E, I believe quite the
opposite. We're not selling E, we're selling the paradigm shift to
capabilities, and selling E within that context. Besides looking good in
theory, for people to be willing to jump paradigms, it's good for the
paradigm to look like something that's happening. Buzz and all that.
To the degree that W7 can continue to look alive, or better, be alive, it
helps to broaden the appeal of capabilities. So I think it'd be great to
revive this server. It's been suggested that we put up such a server for E,
and this also would be a good idea.