Dolphin runs under Wine

Folks,
As promised I have put up a blog post on how to get Dolphin running native under Wine (in this particular case on Mac OSX using a free product called WineSkin). You can find the blog at:
http://object-arts.com/blog/blog.html
There are a few videos to go along with the blog and these can be found in the OA video library at:
http://object-arts.com/support/videos.html
Best regards
Andy Bower

(via comp.lang.smalltalk.dolphin)

A Slow Study Group for ML

Hi,
I’m going to work through
http://www.ccs.neu.edu/home/matthias/BTML/
and
http://www.cl.cam.ac.uk/~lp15/MLbook/
using
http://www.smlnj.org/
SLOWLY over MANY MONTHS.
The reason is that I’ve never learned a statically typed functional programming language, I feel weak on recursive data type definitions, and I am curious about compiler and interpreter construction. So, I’m looking for a way to learn about all 3 at once.
Why ML?

  1. Proven, excellent pedagogical language with great resources.
  2. Smaller than OCaml, F#, and Haskell; so I won’t get distracted with tons of “stuff”
  3. Puts me in a good position if I wanted to use it “for real” that OCaml, F#, Haskell, or even Scala and some other ML in Java languages would be a good follow up path in terms of leveraging the investment.

Basically when I sit down to learn the basics of anything from #2 I feel like they assume you know the basics of ML, and well, I don’t!
Let me know if you want to review problems together.

Whalesong: a Racket to JavaScript compiler

Whalesong is a compiler from Racket to JavaScript; it takes Racket programs and translates them so that they can run stand-alone on a user’s web browser. It should allow Racket programs to run with (hopefully!) little modification, and provide access through the foreign-function interface to native JavaScript APIs. The included runtime library supports the numeric tower, an image library, and a framework to program the web in functional event-driven style.

The rational for returning the identity for expressions such as (*) and (+)

This post in comp.lang.scheme brings up a question that inevitably everyone asks.
Suppose the answer is obvious but John summed it up well:

Well, if you interpret (apply + some-list) and (apply * some-other-list) as left-folds, then a starting point is needed, something to begin accumulating from. The identity is the only value that works correctly, so it’s what gets returned when the list being folded over has length 0. Nobody would write (+) or (*) explicitly, but having them return the identity is the Right Thing nevertheless.
The same argument applies when expanding macros: in a degenerate case, a macro may expand to (+) or (*), and it’s usually not appropriate to raise an exception.

Destructuring Lists Using CA*D*R vs First, Second, … vs Pattern Matching

This thread discusses the pros and cons of using the CA*D*R functions vs named first, second, third, list-tail, … and so on vs pattern matching for the same task.
I thought that pattern-matching was the best way to do it; and now I’m curious about why CA*D*R is better.