Difference between revisions of "Research area"
(developing ther page) |
|||
Line 11: | Line 11: | ||
You may download the presentation from http://www.haskell.org/wikiupload/1/1d/Prezentare-Anglo-Haskell-2008-draft2-more-slides.pdf |
You may download the presentation from http://www.haskell.org/wikiupload/1/1d/Prezentare-Anglo-Haskell-2008-draft2-more-slides.pdf |
||
+ | ==. 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) = (+) |
||
+ | |||
+ | |||
⚫ | |||
+ | |||
+ | And why it is so simple and clear ?Let's see: |
||
* it did not use a fixpoint operator !! |
* it did not use a fixpoint operator !! |
||
* it did not use a Maybe (high level embeded) type !! |
* it did not use a Maybe (high level embeded) type !! |
||
Line 20: | Line 33: | ||
* 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 !! |
* 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 |
+ | ==. Why this solution is valuable .== |
* because we have already built modular languages like [[Rodin]] using it. |
* 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 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 |
||
Line 62: | Line 75: | ||
==. History of the domain == |
==. History of the domain == |
||
... will be added |
... will be added |
||
+ | |||
+ | |||
+ | |||
+ | ==. 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) |
||
+ | |||
+ | |||
---- |
---- |
Revision as of 09:42, 29 May 2011
. 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
. 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) = (+)
. 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 !!
. 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 ...)
- 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.
. Classic complex solutions
... will be added
. Monadic Interpretation
... will be added
. 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
more ... will be added
. History of the domain
... will be added
. 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)