# Research area

### From HaskellWiki

(Rearch area = the golden mine of mine) |
(→. The key ideea) |
||

(20 intermediate revisions by one user not shown) | |||

Line 5: | Line 5: | ||

a type , without recompiling existing code, and while retaining static type safety." |
a type , without recompiling existing code, and while retaining static type safety." |
||

− | A new,simple and clear solution (2008) was given by Dan Popa in a speech scheduled for [[AngloHaskell/2008]] http://www.haskell.org/haskellwiki/AngloHaskell/2008 |
+ | [[Image:The_Expression_problem_Solved_untill_2008.png]] |

− | You may download the presentation from http://www.haskell.org/sitewiki/images/1/1d/Prezentare-Anglo-Haskell-2008-draft2-more-slides.pdf |
||

− | Why this solution is so interesting and so new: |
+ | Ten years later a simple and clear solution (2008) was given by Dan Popa [[User:Ha$kell]] in a speech scheduled for [[AngloHaskell/2008]] http://www.haskell.org/haskellwiki/AngloHaskell/2008 |

− | - it did not use a fixpoint operator !! |
+ | You may download the presentation from http://www.haskell.org/wikiupload/1/1d/Prezentare-Anglo-Haskell-2008-draft2-more-slides.pdf |

− | - it did not use a Maybe (high level embeded) type !! |
||

− | - it did not use '''data''' declaration 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 !! |
||

− | Why this solution is valuable: |
+ | ==. The key ideea == |

− | - 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 http://www.haskell.org/sitewiki/images/1/1d/Prezentare-Anglo-Haskell-2008-draft2-more-slides.pdf |
+ | Those monadic replacements for data constructors are simultaneously '''syntax and semantics''' and works with every monad ! |

− | - because it is modular |
+ | |

− | - because language construction tools are valuable software (1000$ a Licence for a good language generator.) |
+ | The main ideea is extremely simple: a data constructor as those defined in a data declaration can be replaced with something like: |

− | - 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 ...) |
+ | |

− | - 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. |
+ | <haskell> |

+ | |||

+ | plus x y = do { valueofx <- x; |
||

+ | valueofy <- y; |
||

+ | return (f x y) } |
||

+ | where (f) = (+) |
||

+ | |||

+ | </haskell> |
||

+ | |||

+ | See more examples here on the page of [[Modular Monadic Compilers for Programming Languages]]. |
||

+ | |||

+ | ==. 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: |
||

+ | ** evaluators |
||

+ | ** typecheckers : references will be added |
||

+ | ** compilers :[[Modular Monadic Compilers for Programming Languages]] |
||

+ | |||

+ | ==. 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 http://www.haskell.org/wikiupload/1/1d/Prezentare-Anglo-Haskell-2008-draft2-more-slides.pdf |
||

+ | * 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. |
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. |
Ill be back. Download and read the latest papers of Dan Popa from [[User:Ha$kell]]'s homepage. |
||

− | ==. Classic complex solutions == |
||

− | ... will be added |
||

− | ==. Monadic Interpretation == |
+ | ==. Modular Monadic Interpretation == |

− | ... will be added |
+ | See the [[Rodin]] project. |

+ | ... |
||

+ | Find some basics and news in [[Practica interpretarii monadice]]. (Ro - book) |
||

+ | |||

+ | ==. Modular Monadic Type-Checking == |
||

+ | Will be added... |
||

+ | |||

+ | ==. Modular Monadic Compilation == |
||

+ | See [[Modular Monadic Compilers for Programming Languages]], this page from 2011. |
||

==. References == |
==. References == |
||

− | ... will be added |
+ | 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: |

+ | [http://www.haskell.org/wikiupload/1/15/Paper-v5.sxw Download .sxw ] After loading the .sxw in the Open Office, press the PDF button from the toolbar to produce your own .pdf file. Or |
||

+ | [http://www.haskell.org/wikiupload/7/7d/POPA_D.pdf Official PDF of the paper for <DOWNLOAD> ], having the following title: |
||

− | ==. History of the domain == |
+ | 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: [http://www.haskell.org/wikiupload/5/57/Types2.ps 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. [http://www.haskell.org/wikiupload/7/7d/POPA_D.pdf http://www.haskell.org/wikiupload/7/7d/POPA_D.pdf]. 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 [http://www.haskell.org/wikiupload/5/57/Types2.ps <DOWNLOAD> in .ps format] |
||

+ | The paper was (on 27th of may 2011) presented to the NCMI 2011 Conference, in Bacau. |
||

+ | |||

+ | more |
||

... will be added |
... will be added |
||

+ | |||

+ | |||

+ | |||

+ | ==. 'Dotted' list of references: == |
||

+ | |||

+ | [1] http://www.haskell.org/haskellwiki/Pseudoconstructors_over_monadic_values |
||

+ | They have a page here, but only paragraph #7 is in English now. |
||

+ | |||

+ | [2] Something in English |
||

+ | http://www.haskell.org/haskellwiki/Research_area |
||

+ | |||

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

+ | http://www.haskell.org/wikiupload/7/7d/POPA_D.pdf |
||

+ | |||

+ | [4] The draft of a presentation |
||

+ | http://www.haskell.org/wikiupload/1/1d/Prezentare-Anglo-Haskell-2008-draft2-more-slides.pdf |
||

+ | (maybe a good point to start) |
||

+ | |||

+ | ... |
||

+ | |||

+ | ---- |
||

+ | [http://www.haskell.org/haskellwiki/Pseudoconstructors_over_monadic_values Go to Pseudoconstructors Page -> http://www.haskell.org/haskellwiki/Pseudoconstructors_over_monadic_values] |

## Latest revision as of 08:50, 26 July 2011

## Contents |

## [edit] 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."

Ten years later a simple and clear solution (2008) was given by Dan Popa User:Ha$kell in a speech scheduled for AngloHaskell/2008 http://www.haskell.org/haskellwiki/AngloHaskell/2008
You may download the presentation from http://www.haskell.org/wikiupload/1/1d/Prezentare-Anglo-Haskell-2008-draft2-more-slides.pdf

## [edit] 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.

## [edit] 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:
- evaluators
- typecheckers : references will be added
- compilers :Modular Monadic Compilers for Programming Languages

## [edit] 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 http://www.haskell.org/wikiupload/1/1d/Prezentare-Anglo-Haskell-2008-draft2-more-slides.pdf
- 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.

## [edit] 5 . Modular Monadic Interpretation

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

## [edit] 6 . Modular Monadic Type-Checking

Will be added...

## [edit] 7 . Modular Monadic Compilation

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

## [edit] 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. http://www.haskell.org/wikiupload/7/7d/POPA_D.pdf. 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

## [edit] 9 . 'Dotted' list of references:

[1] http://www.haskell.org/haskellwiki/Pseudoconstructors_over_monadic_values They have a page here, but only paragraph #7 is in English now.

[2] Something in English http://www.haskell.org/haskellwiki/Research_area

[3] A paper , where the main simple ideea is at the base of page http://www.haskell.org/wikiupload/7/7d/POPA_D.pdf

[4] The draft of a presentation http://www.haskell.org/wikiupload/1/1d/Prezentare-Anglo-Haskell-2008-draft2-more-slides.pdf (maybe a good point to start)

...