Io programming language

Brian Rice water at
Mon Mar 28 20:49:21 PST 2005

On Mar 28, 2005, at 8:38 PM, Bill Sun wrote:

> Has anyone looked at Io (

I met the author in 2002. We had a discussion with David Ungar about  
language design.

> I found out about the language a few weeks ago.  It's a relatively
> young language having started at 2002. I haven't tried it yet, but read
> a few articles and tutorials here and there.  It's also prototyped
> based, also inspired by a similar set of language that inspired the
> creation of Slate.

Io's grammar is ambiguous, and it's hard to reason about programs in  
Io. Io does /not/ use the same notion of prototype / inheritance that  
Slate or Self do. Io does not have the library potential (or the  
libraries) that Slate does or can have.

> But I think what stands out about the language is its concurrency
> implementation. It implements an "actor-based concurrency using
> coroutines/light weight threads", which can be read here:
> IoProgrammingGuide.html#Concurrency

Multi-method dispatch and actor-based programming don't go together,  
because we don't designate a special receiver. I am more inclined to  
use the E model (, which is safer  
even though it still uses the special-receiver idea (which is the major  
source of headaches in trying to integrate it into Slate) - E's idea  
just makes macro-level actors called Vats which totally isolate groups  
of objects, and run single-threaded turn-based within (although you can  
do things like continuations and coroutines inside them). And E's  
asynchronous message results are promises which perform  
message-pipelining, much simpler to work with than the core actor  
model. Io's coroutines / yields also do not scale well.

Brian T. Rice
LOGOS Research and Development

More information about the Slate mailing list