[Haskell-cafe] DSL in Haskell

CK Kashyap ck_kashyap at yahoo.com
Mon Nov 16 06:16:33 EST 2009

Thanks Don,

I read the PDF. I was not able to figure out how to get the BASIC module. Wanted to see a reference implementation.

The DSL I want to start with is a music generation DSL ... It should generate a wave file
with music data as input -> for example the input could contain
C3 D3 E3 ... -> should output a wave file with those notes ... some kind of mnemonics for tempo will also be there.
Later I'd like to incorporate parallel sequence generation -> where I could get chord effect etc ...
I had done a rudimentary implementation in C a while back -> 

I'd appreciate it very much if you could give me some pointers on getting started.


From: Don Stewart <dons at galois.com>
To: CK Kashyap <ck_kashyap at yahoo.com>
Cc: haskell-cafe at haskell.org
Sent: Mon, November 16, 2009 12:57:54 AM
Subject: Re: [Haskell-cafe] DSL in Haskell

> Hi All,
> I was reading a Ruby book and in that it was mentioned that its capability to
> dynamically query and modify classes makes it suitable for implementing DSL's
> ... I am referring to Ruby's reflection and methods like "method_missing" here.
> It can allow things like not having to define constants for all possible
> unicode code points etc...For example, first use of U0123 could bring such a
> constant definition into existence etc
> I see multiple search hits when I look for Haskell and DSL - can someone please
> point me to a good primer or explain to me how equivalent of above mentioned
> features in Ruby can be done in Haskell ... or the Haskell alternative for it.

The Haskell equivalent would be overloading, primarily via type classes.

See Lennart Augusston's BASIC for an example of this in the extreme:


That's BASIC syntax, in Haskell, relying on overloading numbers, strings
etc. And all statically typed.

For a survey of some of the more recent EDSLs in Haskell, see this brief


-- Don

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.haskell.org/pipermail/haskell-cafe/attachments/20091116/f6a3d05c/attachment.html

More information about the Haskell-Cafe mailing list