Erlang REPOS 1.0

REPOS stands for Repository of Erlang-Projects.Org Software selection. It is a collection of major ready-to-work Erlang software. REPOS is distributed as a CDROM image (ISO). You can use every software included in the REPOS environment either directly from CDROM from your hard-drive or from a USB key.

Seems like a nice distribution technique for non-mainstream languages.

The distribution includes several software packages along with erlang, among them Xmerl, Yaws and Wings 3D.

Bitsavers' Archive

Via Dusty Decks we find bitsavers.org which contains scanned copies of manuals as well as historic source code and software.

Some of the manuals are for programming languages like Algol and Fortran, of course.

Seems like a good site to bookmark.

Practical Common Lisp

Practical Common Lisp by Peter Seibel was mentioned here in the past, but not on the home page if I am not mistaken.

You can download all but three chapters from the website, and seeing as Lisp is an important and somewhat unique language, you might want to do just that.

The chapters I read were well written and funny at times. What's not to like?

The OO chapters offer a nice intro to CLOS, which might interest those with OO experience seeing as CLOS doesn't resemble your average OOPL.

I must say that it's nice to see "practical" how-to books written for non-mainstream languages.

OO Programming Styles in ML

OO Programming Styles in ML, Bernard Berthomieu.

It is shown that the essential OO concepts and idioms, including inheritance and dynamic dispatch, can be encoded in this well understood framework, without requiring any operational or typing extensions of ML...

[The encodings] do not rely on subtyping and subsumption, but on an encoding of inheritance polymorphism into paramteric polymorphism.

This isn't new (it is dated March 2000), but seems interesting.

The ML module language put to good use!

Thanks Henry!

The IDE Divide

(via Keith)

Oliver Steele:

The developer world is divided into two camps. Language mavens wax rhapsodic about the power of higher-level programming — first-class functions, staged programming, AOP, MOPs, and reflection. Tool mavens are skilled at the use of integrated build and debug tools, integrated documentation, code completion, refactoring, and code comprehension....

You can be the only one on a team to use Eclipse. If you’re the only one on your team using Haskell, something is probably wrong.

It has been awhile sine we had a good IDE war er.. discussion...

The distinction between language mavens and tool mavens rings true. It shouldn't be too hard to guess to which camp I belong... I rarely spend time thinking about IDE issues if I can only help it.

Denotational Semantics: A Methodology for Language Development

Denotational Semantics: A Methodology for Language Development. David Schmidt, Kansas State University.

I don't recall seeing this book mentioned on LtU before. The entire book is online and seems quite detailed and understandable. Each chapter ends with exercises for the reader and suggested readings.

Thanks, Henry!

Edublog Awards

Do you think LtU deserves to get an Edublog Award (recall I started LtU when designing an EOPL course and that quite a few around here are graduate students)?

If you do, click over and nominate us!

Darcs: an open source version control system implemented in Haskell

Slashdot today links to an interview with David Roundy, the author of darcs, one of a number of proposed replacements for CVS. Darcs is, rather thrillingly, based on a theory of patches with roots in quantum mechanics, a notion which Roundy brings down to earth a little in the interview:

At its most basic level, the theory of patches is about the commutation, or reordering, of changes in such a way that their meaning doesn't change. The rules of commutation tell us when, for example, one patch requires another, since dependent patches cannot be commuted. Once the commutation primitives have been worked out, one can do all sorts of interesting (and useful) operations, such as merging. And such operations can be shown to be independent of order, i.e. it doesn't matter whether you merge patch A or patch B first, you'll get the same result.

Also interesting is his choice of Haskell for an implementation language, and the reasons he gives for this:

Haskell is just a great language in which to program. It is purely functional, and lazy, both of which allow you to do really cool tricks. For example, by using lazy IO I can cleanly separate the file and directory reading, from the patch-applying (which is pure functional code), from the file or directory writing. Haskell also is a really good match for implementing the primitive patch operations, with its pattern-matching syntax and higher order functions.

Roundy also notes that he has had no difficulty finding Haskell coders to help with the project:

There seem to be quite a few people out there just looking for somewhere to use Haskell! And in fact, there have also been developers who learned Haskell expressly for the purpose of contributing to darcs.

Jon Udell: interview with Ward Cunningham and Jack Greenfield

Jon Udell's interview with Ward Cunningham and Jack Greenfield might help understand Microsoft's methodology of software factories and DSLs.

The interview is available as a 54 minute MP3 file. The notion of language as abstraction mechanism and explanation of the part played by DSLs appear towards the second half of the conversation.

Python, metaprogramming, and macros

A nice blogpost from Ian Bicking.