Functional

Use Continuations to Develop Complex Web Applications

An introductory article from IBM developerWorks on Cocoon, continuation-based (sometimes called "modal") web applications, and such.

If you've ever developed a non-trivial Web application, you know that development complexity is increased by the fact that Web browsers allow users to follow arbitrary navigation paths through the application. No matter where the user navigates, the onus is on you, the developer, to keep track of the possible interactions and ensure that your application works correctly. While the traditional MVC approach does allow you to handle these cases, there are other options available to help resolve application complexity. Developer and frequent developerWorks contributor Abhijit Belapurkar walks you through a continuations-based alternative that could simplify your Web application development efforts.

via comp.lang.scheme

Hume Programming Language

Stumbled across the Hume Programming Language while looking for some ML info. Hadn't seen it discussed on LtU before:

Hume is a domain-specific language targeting real-time embedded systems. Hume provides a number of high level features including higher-order functions, polymorphic types, arbitrary but sized user-defined data structures, asynchronous processes, lightweight exception handling, automatic memory management and domain-specific metaprogramming features, whilst seeking to guarantee strong space/time behaviour and maintaining overall determinacy.

A bit too preliminary and research oriented for my tastes, but the main point of interest is the attempt to provide static guarantees of resource usage (time and memory). A binary version for Linux and Mac is available, but the source code is not available for other builds (written in GHC which I notice is now available for a number of target platforms since last i checked).

An Algebraic Theory of Polymorphic Temporal Media

Paul Hudak, An Algebraic Theory of Polymorphic Temporal Media

Temporal media is information that is directly consumed by a user, and that varies with time. Examples include music, digital sound files, computer animations,and video clips. In this paper we present a polymorphic data type that captures a broad range of temporal media. We study its syntactic, temporal, and semantic properties, leading to an algebraic theory of polymorphic temporal media that is valid for underlying media types that satisfy specific constraints. The key technical result is an axiomatic semantics for polymorphic temporal media that is shown to be both sound and complete.

The theoretical incarnation of Haskore.

Completeness is proved by establishing the existence of a normal form for polymorphic temporal media values.

VHS

The main purpose of this project is to provide an extension of Microsoft Visual Studio .NET development environment with support for the Haskell functional programming language, improve user experience and productivity related to implementation tasks.

Download and play, I say.

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.

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!

Skribe 1.2b released

(via comp.lang.scheme)

Erick Gallesio and Manuel Serrano have announced the release of version 1.2b of Skribe, a document processing language based on Scheme. From the home page:

Skribe is a text processor. Even [though] it is a general purpose tool, it best suits the writing of technical documents such as web pages or technical reports, API documentations, etc. At first glance, Skribe looks like a mark-up language à la HTML. So, there is no need to have developed computer programming skills to use Skribe.

A second look reveals that Skribe is actually a true programming language, provided with high level features (such as objects, higher order functions, regular and syntactic parsing, etc.). Skribe is based on the Scheme programming language.

From Skribe source files it is possible to produce various targets:

  • HTML pages that can be used to implement a web site (such as the Skribe Home Page).
  • XML files.
  • LaTeX files that can be used to produce high quality Postscript or PDF files.

What language enthusiast/researcher hasn't chafed at the language design of TeX? You should especially check out some of their cool examples.

Haskell Communities and Activities Report, Seventh Edition, November 2004

The November 2004 edition of the biannual Haskell Communities and Activities Report has been published. Lots of new stuff in the last six months, and some old stuff updated as well. The HC&AR has been steadily growing over the last three years, showing that FP is gaining users both professional and private.

Several of the HC&AR items are interesting enough to have their own LtU stories, which may appear shortly.

The Essential Haskell Compiler

On the same subject as the Scheme compiler in 90 Minutes, is the Essential Haskell Compiler. From the HC&AR summary:

The purpose of the EHC project is to provide a description a Haskell compiler which is as understandable as possible so it can be used for education as well as research


In order to avoid overwhelming the innocent reader, the description of the compiler is organised as a series of increasingly complex steps. Each step corresponds to a Haskell subset which itself is an extension of the previous step. The first step starts with the essentials, namely typed lambda calculus.



Sounds like BC Pierce's Types and Programming Languages.
Also notable is that EHC uses Utrecht's Attribute Grammars, which are interesting in their own right.

Ralf Hinze: An algebra of scans

Ralf Hinze. An algebra of scans. Proceedings of the Seventh International Conference on Mathematics of Program Construction (MPC 2004).

In this paper we show that parallel prefix circuits enjoy a very pleasant algebra. Using only two basic building blocks and four combinators all standard designs can be described succinctly and rigorously. The rules of the algebra allow us to prove the circuits correct and to derive circuit designs in a systematic manner.

Parallel prefix computations, or scans if you speak APL, determine the sums of all prefixes of a given sequence. Obviously the term sum is used loosely: scan is a high-order function, and any associative operation can be used. In J talk scan is an adverb.

I wonder when we will be seeing courses called Algebra Design in Computer Science departments around the world...

Ah right, just after all universities offer language design courses ;-)

XML feed