Wayback Machine
JAN Nov Dec
Previous capture 18 Next capture
2007 2008 2009
50 captures
15 Dec 02 - 18 Nov 08
sparklines
Close Help
4  
io & amalthea  021126
A couple of years back I was reading through Raphael Finkel's book Advanced Programming Language Design. I thought the book an excellent and fun introduction to various programming language concepts and constructs, but the part that intrigued me the most was a section on continuations, a fundamental and powerful construct which can be used to express many more common language constructs. I was somewhat familiar with the concept prior to reading about them in APLD but the author used a programming language called Io to introduce the concept and this language struck me as both confounding and beautiful. The language is absolutely tiny, both in syntax and in the ammount of concepts supported. It really has nothing but continuations, both for flow control and data. Continuations are used for expressing conditional statements, functions, and even structured data types. List, tuples, trees, and so on can all be expressed using first class continuations.

Since the language so tickled my language nerve I wanted to try it out, play around a bit. Scouring the net with Google turned up very little, no implementations and no other references to the language than the one found in the aforementioned book. I asked around, still nothing. And so I concluded that there was no implementation available for this tiny language. I then let the subject be until I had to chose a project for a class, topics in computer languages. I decided my project should be an Io interpreter and I decided it should go by the name Amalthea (Amalthea is one of the smaller moons of Jupiter while Io is a large one).

amalthea  021126
Amalthea was made using OCaml, which I learned to make Amalthea. I was a mostly pleasurable experience even though OCaml's syntax is nowhere near as nice as Haskell's. I also didn't really exploit (or need) any of OCaml's OO or module features in making Amalthea, so a lot remains to be learned.

Amalthea is, as always with this kind of projects, heavily under development, whenever I get the urge to. I mean Amalthea to come with a small standard library, some detailed examples, and good documentation. What's here for you to download is a snapshot of the progress in each area. Most notable is the lack of any documentation on how to program Io. For now I'll have to refer anyone who downloads Amalthea with the intention of trying it out to Advanced Programming Language Design, available on the web.

download  030128
A new version, 0.874. It's added a bunch of stuff, including mutable variables and selective imports. Version 0.875 is merely a new distribution with a filename change to compile under *nix. The error reporting is a bit flakey in this release but improvements are comming along as I have the time and inclination. A Windows(tm) binary is included along with the sources, users of other OSs will have to compile it themselves using a recent version of OCaml. If anyone wants to make distributions for Linux, please do so and I'll put them up here.

Download Amalthea v0.875