Difference between revisions of "Research area"
(adding a new paper) 
(→. The key ideea) 

(15 intermediate revisions by the same user not shown)  
Line 9:  Line 9:  
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 
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/ 
+  You may download the presentation from http://www.haskell.org/wikiupload/1/1d/PrezentareAngloHaskell2008draft2moreslides.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: 

+  
+  <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]]. 

+  
⚫  
+  
+  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 19:  Line 37:  
* as a consequence it did not use Data Constructors 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 !! 
* 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 
+  ==. 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/ 
+  * because it works with just a bit overloading of the system : See final pages of http://www.haskell.org/wikiupload/1/1d/PrezentareAngloHaskell2008draft2moreslides.pdf 
* because it is modular 
* because it is modular 

* because language construction tools are valuable software (1000$ a Licence for a good language generator.) 
* 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 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. 
* 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. 

Line 31:  Line 55:  
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 == 
−  +  See the [[Rodin]] project. 

+  ... 

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

+  
+  ==. Modular Monadic TypeChecking == 

+  Will be added... 

+  
+  ==. Modular Monadic Compilation == 

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

==. References == 
==. 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: 
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/ 
+  [http://www.haskell.org/wikiupload/1/15/Paperv5.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/ 
+  [http://www.haskell.org/wikiupload/7/7d/POPA_D.pdf 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 
Direct modular evaluation of expressions using the monads and type classes in Haskell by DAN V. POPA 

Line 52:  Line 74:  
Nr. 18 (2008), pag. 233 – 248 
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/ 
+  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 Entrypointless 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] 
Adaptable Software  Modular Extensible Monadic Entrypointless 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 
more 

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

−  ==. History of the domain == 

+  
−  ... 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/PrezentareAngloHaskell2008draft2moreslides.pdf 

+  (maybe a good point to start) 

+  
+  ... 

 
 
Latest revision as of 08:50, 26 July 2011
Contents
. 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/PrezentareAngloHaskell2008draft2moreslides.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) = (+)
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/PrezentareAngloHaskell2008draft2moreslides.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.
. Modular Monadic Interpretation
See the Rodin project. ... Find some basics and news in Practica interpretarii monadice. (Ro  book)
. Modular Monadic TypeChecking
Will be added...
. Modular Monadic Compilation
See Modular Monadic Compilers for Programming Languages, this page from 2011.
. 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 Entrypointless 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 Entrypointless 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
. '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/PrezentareAngloHaskell2008draft2moreslides.pdf (maybe a good point to start)
...