Personal tools

Research area

From HaskellWiki

Jump to: navigation, search


1 . The Expression Problem

In 1998 P.Wadler had defined "The Expresion Problem" (accordingly to Wouter Swierstra - Data types a la carte ).

"The goal is to define a data type by case, where one can add new cases to the data type and new functions over the dat a type , without recompiling existing code, and while retaining static type safety."

The Expression problem Solved untill 2008.png

Ten years later a simple and clear solution (2008) was given by Dan Popa User:Ha$kell in a speech scheduled for AngloHaskell/2008 You may download the presentation from

2 . The key ideea

Those monadic replacements for data constructors are simultaneously syntax and semantics and works with every monad !

The main ideea is extremely simple: a data constructor as those defined in a data declaration can be replaced with something like:

plus x y = do { valueofx <- x;
                valueofy <- y;
                return (f x y) }
                 where (f) = (+)

See more examples here on the page of Modular Monadic Compilers for Programming Languages.

3 . Why this solution is so interesting

And why it is so simple and clear ?Let's see:

  • it did not use a fixpoint operator !!
  • it did not use a Maybe (high level embeded) type !!
  • it did not propose a Haskell extension !!
  • it did not use data declaration anymore !!
  • as a consequence it did not use Data Constructors anymore !!
  • it is introducing pseudoconstructors over monadic values because the chain of unevaluated (yet) functions is actually forming a datastructure . do not forget that Haskell is a lazy evaluation language !!
  • because it is usable in a large sort of projects involving modular trees and modular monadic semantics (on every monad)
  • because we used it succesfuly for modular:

4 . Why this solution is valuable .

  • because we have already built modular languages like Rodin using it.
  • because it works with just a bit overloading of the system : See final pages of
  • because it is modular
  • because language construction tools are valuable software (1000$ a Licence for a good language generator.)
  • because it fits in the previous kind of systems with truee small modifications (just replace a single letter of a data constructor to transform it in a pseudoconstructor ...)
  • the modular typecheckers can also be build using this tech.
  • because my Ph.D Superviser is wishing to sell custom languages with a price of aprox 10 000$ / language - or at least he declared this some times ago.

References: see the .pdf of the latest papers from User:Ha$kell's homepage. Ill be back. Download and read the latest papers of Dan Popa from User:Ha$kell's homepage.

5 . Modular Monadic Interpretation

See the Rodin project. ... Find some basics and news in Practica interpretarii monadice. (Ro - book)

6 . Modular Monadic Type-Checking

Will be added...

7 . Modular Monadic Compilation

See Modular Monadic Compilers for Programming Languages, this page from 2011.

8 . References

Dan Popa, "Modular evaluation and interpreters using monads and type classes in Haskell" , Studii si Cercetari Ştiinţifice, Seria Matematica, Univ. Bacău, (18) 2008. An Open Office (.sxw) file including example code is available here: Download .sxw After loading the .sxw in the Open Office, press the PDF button from the toolbar to produce your own .pdf file. Or Official PDF of the paper for <DOWNLOAD> , having the following title:

Direct modular evaluation of expressions using the monads and type classes in Haskell by DAN V. POPA UNIVERSITATEA DIN BACĂU STUDII ŞI CERCETĂRI ŞTIINŢIFICE Seria: MATEMATICĂ Un draft al lucrarii Adaptable Software - Modular Extensible Monadic Entry-pointless Type Checker in Haskell by Dan Popa , Ro/Haskell Group, Univ. “V.Alecsandri”, Bacau este aici: download Nr. 18 (2008), pag. 233 – 248

The paper is introducing Pseudoconstructors over monadic values as a way of building modular trees without data or Haskell extensions. Modular adaptable interpreters for extensible languages - like Rodin - become now easy to build, without the need of any Haskell extensions.

Adaptable Software - Modular Extensible Monadic Entry-pointless Type Checker in Haskell by Dan Popa , Ro/Haskell Group, Univ. “V.Alecsandri”, Bacau <DOWNLOAD> in .ps format The paper was (on 27th of may 2011) presented to the NCMI 2011 Conference, in Bacau.

more ... will be added

9 . 'Dotted' list of references:

[1] They have a page here, but only paragraph #7 is in English now.

[2] Something in English

[3] A paper , where the main simple ideea is at the base of page

[4] The draft of a presentation (maybe a good point to start)


Go to Pseudoconstructors Page ->