Bux fixes, more progress, beginnings of a tutorial

Brian Rice water@tunes.org
Sat Jun 2 17:15:02 2001


Okay, here's some much-fixed code for Arrows, along with a 
much-updated tests file. Everything in the tests works fine, along 
with a few other things. It also works as a small tutorial for basic 
arrow concepts. I suggest trying to use InductionGraph by making a 
new instance, assigning it to a variable, and then sending it some 
InductionGraph-y messages to test it out. I haven't tested the whole 
thing, but much of it works.

Incidentally, Arrow is very difficult to architecture: a lot of what 
it is is very related to a lot of AI projects of the past. A lot of 
the code has to resort to brute-force searching when the proper 
meta-information isn't there beforehand. So basically the coding aim 
is to make a lot of common programming language semantics available 
to be easily done within the framework, and to not prevent any other 
semantics.

As coding continues I am more convinced that an OCAML implementation 
would be ideal for achieving some good performance before 
self-hosting becomes feasible. This will take some time, but should 
also be quite as readable as the Smalltalk version (I hope so, 
anyway).

There are a few changes and architectural features I have not been 
showing, mostly because they have been in constant flux and often 
aren't very readable... they're mostly hack-based ideas, but should 
be coming together soon. As I study Maude more closely as well as a 
lot of the suggested resources mentioned here earlier, a strategy is 
starting to become clear (it only took 7 years :P).

One last note: Arrows is officially reflective, since recently I have 
changed the architecture to rely on reification of Smalltalk objects 
and literals, so SmalltalkMOP is now really a part of the Core 
package, although it obviously deals with a very specific set of 
information. It now works quite well, but beware when dealing with 
variable objects, as I have not worked out a system to deal with 
state effectively yet. (And monads and category theory are at the top 
of my mind recently of course.)

More to come of course.

Thanks,
~