Domain Specific Languages

Afp0405

6 july 2005
The scores for the exam are published. Contact me if you are interested in a meeting to discuss the questions of the exam (also possible after the summer vacation).

4 july 2005
The scores for the assignments have been updated (see Course Organization).

27 june 2005
The last part of the programming assignment must be submitted in three stages:

  • Wed: submit your .ant file for the tournament
  • Thu: short presentation (20 min)
  • Fri: submit final version

17 june 2005
Read the addendum to Exercise 4. The exam for AFP will be on 5-7-2005, 9:00-12:00, BBL-420 (see the Education Page).

14 june 2005
The first DSEL presentations are now online. The results of the Dazzle review exercise are published here (see attachment).

9 june 2005
Exercise 4 is published.

1 june 2005
The content of the exercises has changed.

26 may 2005
See MVC.hs on the Course Schedule for a (simple) implementation of the MVC paradigm.

18 may 2005
The grades for Exercise 1 can be found in the attachment on the Course Organization page.

12 may 2005
A hint on exercise 2 is added to the Discussion Forum. The selected papers on Functional Data Structures will be announced on the Course Literature page.

2 may 2005
Exercise 1 has been published. The submission deadline for this exercise is extended to May 9th (Monday).

29 apr 2005
We have three groups for the programming assignment, and the DSL topics have been assigned and scheduled. The ST Wiki has recently moved to a new server. This may explain some of the problems to access the wiki pages. Please make sure that you are able to modify the content of the Discussion Forum.

26 apr 2005
The slides of the first lecture are now available. The Course Literature page contains a zip file with all selected papers.

1 apr 2005
Set up of Afp0405 web (2004/2005)

Task Description

All students have to further investigate one domain specific language: the available topics are listed below, and these will be assigned in the first week. For each topic, a number of starting points (web sites, papers, etc.) are given. Given these starting points, try to find as much relevant information as possible about your assigned topic. The task consists of two parts:

  • One 30 minute presentation (in English). You are encouraged to download existing software, to experiment with it, and to show us a (small) demo.
  • A review report (about 2 pages). This report should contain at least the following ingredients.
    • a summary
    • the additional gain of embedding your assigned DSL in a functional language like Haskell.
    • your opinion about and experiences with the combinator library.

For this assignment, students may work in pairs. The assignment may also be completed individually, as long as there are enough topics available.

Topics

Subject Assigned to Presentation
Haskell DB Gerrit van den Geest + Huib van den Brink DSEL-haskelldb.pdf
Computer Music José Pedro Magalhães + Bogdan Dumitriu DSEL-music.zip
Fran Lee Provoost + Rinse van Hees DSEL-fran.zip
Financial Combinators Jacob Kleerekoper + Reinier Vis DSEL-financial.ppt
Pan# Huanwen Qu + Jinfeng Zhu DSEL-pan.zip
Lava Raymon van Wanrooij + Arie Middelkoop DSEL-lava.pdf
XML Tools -  
Yampa -  
(Pretty Printing) -  
(Parsing) -  

Haskell DB

(from the HaskellDB? homepage)

HaskellDB? is a combinator library for expressing queries and other operations on relational databases in a type safe and declarative way. All the queries and operations are completely expressed within Haskell, no embedded (SQL) commands are needed. This close integration makes it possible to do arbitrary computations on the database (like computing the transitive closure) and makes it very easy to combine HaskellDB? with other combinator libraries (like Erik Meijer's CGI library or John Hughes pretty printer).

Resources:

Computer Music

(from the Haskore Computer Music System homepage)

Haskore is a collection of Haskell modules designed for expressing musical structures in the high-level, declarative style of functional programming. In Haskore, musical objects consist of primitive notions such as notes and rests, operations to transform musical objects such as transpose and tempo-scaling, and operations to combine musical objects to form more complex ones, such as concurrent and sequential composition. From these simple roots, much richer musical ideas can easily be developed.

Resources:

Financial Combinators

(from Simon PJ's homepage)

Financial and insurance contracts do not sound like promising territory for functional programming and formal semantics, but in fact we have discovered that insights from programming languages bear directly on the complex subject of describing and valuing a large class of contracts.

We introduce a combinator library that allows us to describe such contracts precisely, and a compositional denotational semantics that says what such contracts are worth. We sketch an implementation of our combinator library in Haskell. Interestingly, lazy evaluation plays a crucial role.

Resources:

XML Tools

A number of Haskell libraries exist for processing XML. These libraries typically offer facilities such as parsing, filtering, transforming, validating, and generating XML documents. Two well-known combinator libraries for processing XML are HaXML? and The Haskell XML Toolbox.

Resources:

Pan#

(from the Pan# homepage)

Pan# combines basic mathematical operations with functional abstraction and a simple vocabulary of images. This language puts the tools of visualization in the hands of the student and instructor rather than hiding them deep inside bundled software. Images are defined in a very simple and direct way, free of the details that tell a computer how to display the image. Because images are described using mathematical functions, this language is entirely appropriate for anyone with knowledge of basic algebra.

Resources:

Lava

(from the Lava homepage)

Lava is a hardware description language based upon the functional programming language Haskell. Its main aim is to show that modern programming language features such as type inference, polymorphism, higher-order functions, type classes, and laziness are very useful even in hardware description.

Resources:

Yampa

(from the Yampa homepage)

Yampa is the culmination of our efforts to provide domain-specific embedded languages for the programming of hybrid systems using the concepts of Functional Reactive Programming (FRP). Yampa is structured using arrows, which greatly reduce the chance of introducing space- and time-leaks into reactive, time-varying systems.

Resources:

Fran

(from the Fran homepage)

(...) This article presents one approach to declarative programming of interactive content, as realized in a prototype system called Fran, for "Functional reactive animation" [Elliott and Hudak 1997, Elliott 1997]. Fran is a high level vocabulary that allows one to describe the essential nature of an animated model, while omitting details of presentation. Moreover, because this vocabulary is embedded in a modern functional programming language (Haskell), the animation models thus described are reusable and composable in powerful ways.

Resources:

(Pretty Printing)

(This can only be selected in case we run out of topics)

Resources:

(Parsing)

(This can only be selected in case we run out of topics)

Resources:


Topic attachments
I Attachment Action Size Date Who Comment
pptppt DSEL-financial.ppt manage 150.0 K 17 Jun 2005 - 07:08 BastiaanHeeren Financial Combinators
zipzip DSEL-fran.zip manage 420.1 K 17 Jun 2005 - 07:08 BastiaanHeeren Functional Reactive Animations
pdfpdf DSEL-haskelldb.pdf manage 498.3 K 14 Jun 2005 - 12:54 BastiaanHeeren HaskellDB?
pdfpdf DSEL-lava.pdf manage 968.2 K 17 Jun 2005 - 07:08 BastiaanHeeren Lava
zipzip DSEL-music.zip manage 179.8 K 14 Jun 2005 - 12:54 BastiaanHeeren Haskore Computer Music
zipzip DSEL-pan.zip manage 2358.9 K 17 Jun 2005 - 07:09 BastiaanHeeren Pan#