E
- Not to be confused with E (eeEee).
- This article is not detailed enough and needs to be expanded. Please help us by adding some more information.
| Designed by | Miller et al. |
|---|---|
| Appeared in | 1996 |
| Computational class | Turing-complete |
| Reference implementation | E-on-Java 0.9.3d |
| Influenced by | Joule, Java |
| Influenced | Monte |
| File extension(s) | .emaker |
E is an object-capability language designed by Mark S. Miller in 1996 and implemented at Electric Communities by a team including Miller, Dan Bornstein, Chip Morningstar, and Douglas Crockford in 1997. It is notable for refining the unification of objects, capabilities, and actors pioneered by Joule; in E, a reference to an object is a capability to send messages to that object, and every object may be invoked asynchronously like an actor. E also introduced the concept of E-ordering of messages.
Hello World
The hello-world of object-capability languages is the following example, called "Simple Money" in Capability-based Financial Instruments but often unofficially called "The Mint".
def makeMint(name) :any {
def [sealer, unsealer] := makeBrandPair(name)
def mint {
to __printOn(out) :void { out.print(`<$name's mint>`) }
to makePurse(var balance :(int >= 0)) :any {
def decr(amount :(0..balance)) :void {
balance -= amount
}
def purse {
to __printOn(out) :void {
out.print(`<has $balance $name bucks>`)
}
to getBalance() :int { return balance }
to sprout() :any { return mint.makePurse(0) }
to getDecr() :any { return sealer.seal(decr) }
to deposit(amount :int, src) :void {
unsealer.unseal(src.getDecr())(amount)
balance += amount
}
}
return purse
}
}
return mint
}
Running E
Grab a pure-Java tarball like E-purej-0.9.3d.tar.gz from erights.org and extract it to a directory of your choice. Install a JRE (Java runtime environment) and also rlwrap. Then open a shell in the extracted directory and run:
$ rlwrap ./rune ?
You should get a "?" prompt. Try some arithmetic:
? 1 + 1 # value: 2
Related Links
- wikipedia:E (programming language)
- the E homepage, an important archeological dig site
- Miller 2006, Mark S. Miller's thesis "Robust Composition", which contrasts E with Java and explains how to safely load code