General

HOT Pickles

Alice ML team members Andreas Rossberg, Guido Tack & Leif Kornstaedt write about the implications of pickling for higher-order-type systems in their latest paper on HOT Pickles ...and how to serve them.

The need for flexible forms of serialisation arises under many circumstances, e.g. for doing high-level inter-process communication or to achieve persistence. Many languages, including variants of ML, thus offer pickling as a system service, but usually in a both unsafe and inexpressive manner, so that its use is discouraged. In contrast, safe generic pickling plays a central role in the design and implementation of Alice ML: components are defined as pickles, and modules can be exchanged between processes using pickling. For that purpose, pickling has to be higher-order and typed (HOT), i.e. embrace code mobility and involve runtime type checks for safety.

The paper makes the point that pickling should be considered an important aspect for programming language design. By making pickles first class, a number of related problems in open programming (serialization, distribution, modularity) can be directly addressed.

AngloHaskell 2007

Following on from last year, I've started organising an AngloHaskell event for 2007. It's early days yet, but planning is taking place on the haskell wiki at http://www.haskell.org/haskellwiki/AngloHaskell and on #anglohaskell on irc.freenode.net - anyone who might attend is welcome to join in the discussion.

Last year's event was good fun, featuring practically-oriented and hobbyist talks, punting and plenty of pub time. The organisation process may seem a little haphazard, but an important part of laziness is being able to evaluate things when they are in fact demanded! On that basis, a time and a venue are the first order of business.

Sun's new JavaFX Script language

Sun recently announced JavaFX Script, a new Java-based scripting language designed for use with Sun's nascent rich interactive application development platform, JavaFX. JavaFX Script is statically typed, but it seems heavily influenced by dynamic languages like Python and JavaScript.

JavaFX Script provides an unusual declarative syntax intended to facilitate rapid interface development and it has some interesting features like support for first-class functions and Pythonic list comprehensions. The language also has some really unusual array manipulation operators that are somewhat thought provoking.

Here are a few samples to consider:

var titleTracks =
  select indexof track + 1 from album in albums,
    track in album.tracks where track == album.title;

select n*n from n in [1..100];

function factors(n) {
  return select i from i in [1..n/2] where n % i == 0;
}

x = [1,2,3];
insert 10 as first into x; // yields [10,1,2,3]
insert 6 after x[. == 2]; // yields [10,1,2,6,3]

You can also find some good examples of the declarative interface design syntax in Sun's JavaFX Script tutorial for Swing developers.

-- Ryan Paul

The PLT Scheme weblog

The PLT Scheme folks now have a project blog.

Interactivity considered harmful

After reading many posts lauding interactive tools as an integral part of the next big thing in software development, I figured I could offer this as counterpoint. The paper Magic Ink: Information Software and the Graphical Interface very eloquently argues that most software today, especially information-intensive software (think IDEs and many other GUI-based PL tools) are really badly designed. The most memorable section subtitle being interactivity considered harmlful. This is a real treasure trove of wonderful design ideas for interfaces for information-rich applications.

This paper follows in the grand tradition of Edward Tufte, whose book The Visual Display of Quantitative Information was an incredible revelation for me.

Somehow, I do think that some of the ideas behind Intentional Software fit in here -- although I make no claim as to whether the actual implementation of those ideas is an appropriate realization.

R6RS Ratification

[T]his document describes a proposed ratification procedure. Discussion of this procedure is taking place on the ratification-discuss@r6rs.org mailing list. The discussion period ends on April 15th.

The Scheme Standardization Charter says that after the Editors submit a proposed final draft, "the Steering Committee should then choose either to finalize the draft or to restart the review process." This document describes how the Steering Committee will make that decision.

The ratification process proposed is somewhat unusual (e.g., a no vote will need to include an explanation), but this may change due to the comments sent to the mailing list.

I think many LtU readers should consider taking part in the vote, since as programming languages aficionados we cetainly have a stake in Scheme. Now is the chance to influence the procedural aspects of the ratification process.

Paul Cohen has died

Paul Cohen has passed away.

While not directly involved in programming languages, as far as I know, his seminal work in logic is certainly known and admired by many in the LtU community.

The new Ada is officially published

I am a little late in passing on these news, but the new ISO standard for Ada is now officially published.

We discussed the new features in this revision of the language a couple of times before, so search the archives if you are interested. Among the new things are interface (as in Java), a container library, and the ability to use the "distinguished receiver" or prefix style in method calls.

For the record, the the recommended informal name for the latest Ada standard is Ada 2005, not Ada 2007.

Google Summer of Code

Google Summer of Code 2007 is now on. Among the projects suggested by mentoring organizations, quite a few may be of interest to language hackers.

Here are some organizations that have interesting (language oriented) project ideas: Boost C++, Haskell.org, Jikes RVM, LLVM, PHP and Python.

CFP: Programming Languages for Mechanized Mathematics Workshop

Programming Languages for Mechanized Mathematics Workshop As part of Calculemus 2007 Hagenberg, Austria

The intent of this workshop is to examine more closely the intersection between programming languages and mechanized mathematics systems (MMS). By MMS, we understand computer algebra systems (CAS), [automated] theorem provers (TP/ATP), all heading towards the development of fully unified systems (the MMS), sometimes also called universal mathematical assistant systems (MAS) (see Calculemus 2007).

XML feed