Personal tools

Pseudoconstructors over monadic values

From HaskellWiki

(Difference between revisions)
Jump to: navigation, search
(. Proiecte)
 
(16 intermediate revisions by one user not shown)
Line 5: Line 5:
 
==. Introducere ==
 
==. Introducere ==
   
Uzual, constructia DSL-urilor - mici limbaje de programare specializate - se face pornind de la o semantica bazata pe sintaxa. Sintaxa abstracta este de ajuns, nu e nevoie de o sintaxa concreta.
+
Uzual, constructia DSL-urilor - mici limbaje de programare specializate - se face pornind de la o semantica bazata pe sintaxa. Sintaxa abstracta este de ajuns pentru a incepe proiectul, nu e nevoie de o sintaxa concreta din prima faza.
   
Ori sintaxa abstracta este strans legata de arborii sintactici abstracti si de arborii operatoriali.
+
Iar sintaxa abstracta este strans legata de arborii sintactici abstracti si de arborii operatoriali.
   
In Haskell, de obicei, acesti arbori sunt declarati folosind: data.
+
In Haskell, de obicei, acesti arbori sunt declarati folosind: ''data''.
   
Dezavantajul este ca aceste declaratii data nu sunt modulare. Efect: este greu sa implementam limbaje extensibile din cauza dificultatii de a extinde , printre altele, tipul de date al arborilor din reprezentarea intermediara.
+
Dezavantajul este ca aceste declaratii ''data'' nu sunt modulare. Efect: este greu sa implementam limbaje extensibile din cauza dificultatii de a extinde , printre altele, tipul de date al arborilor din reprezentarea intermediara.
   
 
Solutii diverse au fost, de-a lungul timpului, propuse:
 
Solutii diverse au fost, de-a lungul timpului, propuse:
Line 44: Line 44:
 
Concluzia: se pot inlocui CONSTRUCTORII de date ai declaratiilor data cu un simplu set de functii.
 
Concluzia: se pot inlocui CONSTRUCTORII de date ai declaratiilor data cu un simplu set de functii.
 
Concluzia a II-a: Atunci cand se implementeaza semantici monadice modulare aceste functii vor manipula valori monadice.
 
Concluzia a II-a: Atunci cand se implementeaza semantici monadice modulare aceste functii vor manipula valori monadice.
  +
  +
[[Image:The_Expression_problem_Solved_untill_2008.png]]
   
 
==. Sintaxa ==
 
==. Sintaxa ==
 
Pseudoconstructorii se folosesc ca si constructorii. Singura diferenta SINTACTICA este faptul ca fiind functii se vor scrie cu '''min'''uscula in loc de '''M'''ajuscula.
 
Pseudoconstructorii se folosesc ca si constructorii. Singura diferenta SINTACTICA este faptul ca fiind functii se vor scrie cu '''min'''uscula in loc de '''M'''ajuscula.
   
==. Transformarea Constrcutorilor in Pseudoconstructori ==
+
==. Transformarea Constructorilor in Pseudoconstructori ==
Simplu: Scrieti minuscula in loc de majuscula. Atat.
+
Pentru programator este simplu: Scrieti minuscula in loc de majuscula. Atat.
La semantici monadice: Scrieti minuscula in loc de majuscula in instructiunile return. Atat.
+
La semantici monadice: Scrieti minuscula in loc de majuscula in instructiunile return. Si, fireste nu uitati sa declarati functiile respective.
 
Si, fireste nu uitati sa declarati functiile respective.
 
   
 
==. Avantaje ==
 
==. Avantaje ==
Line 57: Line 59:
 
- complexitatea declaratiilor in aplicatie a structurilor de date ESTE EXACT ca la arbori (ca lungime a programului).
 
- complexitatea declaratiilor in aplicatie a structurilor de date ESTE EXACT ca la arbori (ca lungime a programului).
 
- alte cunostinte in plus decat notiunea de functie nu se cer
 
- alte cunostinte in plus decat notiunea de functie nu se cer
- Transformarea de la arbori uzuali la noile date / structuri este banala, vedeti mai sus, se schimba o litera.
+
- Transformarea de la arbori uzuali la noile date / structuri este banala, vedeti mai sus, se schimba o litera. De fapt este un izomorfism de arbori.
- lipsesc dificultatile de adaptare a software-ului existen
+
- lipsesc dificultatile de adaptare a surselor software-ului existent la noua implementare modulara a arborilor.
   
==. Paper concerning pseudoconstructors over monadic values 2008 ==
+
==. Dezavantaje ==
  +
  +
Prelucrarea acestor arbori in vederea optimizarii lor nu este integral studiata si este posibil sa puna noi probleme. Tema este deschisa.
  +
  +
==. Papers concerning pseudoconstructors over monadic values ==
   
 
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. - acceptat spre publicare . An Open Office (.sxw) file 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. - acceptat spre publicare . An Open Office (.sxw) file is available here:
[http://www.haskell.org/sitewiki/images/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/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/sitewiki/images/7/7d/POPA_D.pdf Official PDF of the paper for <DOWNLOAD> ], having the following title:
+
[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 72: 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/sitewiki/images/7/7d/POPA_D.pdf http://www.haskell.org/sitewiki/images/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. [[2008/Rezumat1]].
+
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. [[2008/Rezumat1]].
   
  +
==.Prezentari / Slideshow in .pdf format ==
   
Pagina creata pe 20 iulie 2009 dupa o lucrare din ....iulie-august 2008.
+
O prima idee despre pseudoconstructori va puteti face din aceasta prezentare planificata pentru Anglo Haskell 2008 dar netinuta din motive de nefinantare a calatoriei. Adica autorul a fost "bolnav de portofel" asa cum Solomon Marcus a fost "bolnav de pasaport", in epoca Ceausescu.
  +
http://www.haskell.org/wikiupload/1/1d/Prezentare-Anglo-Haskell-2008-draft2-more-slides.pdf
   
 
==. Proiecte ==
 
==. Proiecte ==
Am experimentat folosirea acestor pseudoconstructori in cadrul Proiectului [Rodin], un mic DSL dedicat predarii informaticii in limba romana.
+
Am experimentat folosirea acestor pseudoconstructori in cadrul Proiectului [[Rodin]], un mic DSL dedicat predarii informaticii in limba romana.
Detalii vor aparea in [[2009/Rodin Technical Report]] care va fi publicat in toamna in volumul de Studii si Cercetari Stiintifice - Seria Matematica-Informatica de la [http://stiinte.ub.ro Univ. din Bacau, facultatea de Stiinte. ]
+
Detalii au aparut in toamna in volumul de Studii si Cercetari Stiintifice - Seria Matematica-Informatica de la [http://stiinte.ub.ro Univ. din Bacau, facultatea de Stiinte. ]
  +
De adaugat referinta: Lucarile sunt in Arhiva [[ExperimentExp12]] de pe pagina [[Rodin]] sau de pe [[Rodin/Download]].
   
  +
'''7 ian 2011'''. Studiem acum folosirea pseudoconstructorilor in cadrul temei "TypeChecking" - verificare statica a tipurilor. Rezultatele vor fi publicate. Pseudoconstructorii sunt la fel de buni pentru "typecheckers" verificatoarele de tipuri asociate termilor cum sunt si pentru evaluatoare.
  +
  +
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]
  +
  +
'''iunie 2011''' Acesti Pseudoconstructori peste valori monadice s-au dovedit instrumente utile si la realizarea compilatoarelor. Vedeti si: [[Modular Monadic Compilers for Programming Languages]].
  +
  +
'''13 iulie 2011''' Congresul ARA de la Timisoara se apropie.(http://ara.mec.upt.ro/abslist.html) Am reusit sa programam sustinerea unei lucrari despre limbaje modularizate orizontal, in care si typecheckerul si evaluatorul (care poate fi foarte bine si un interpretor si un compilator) sunt taiate "pe orizontala" in instructiuni separate care pot fi adaugate modular. Lucrarea, cu titlul "Adaptable Software – Modular extensible monadic evaluator and typechecker based on pseudoconstructors" are codul ARA35-119. Un draft al lucrarii, scris pe 16 mai 2011 va punem la dispozitie si prin site-ul Ro/Haskell. [[http://www.haskell.org/wikiupload/7/78/Popa_Dan_fullpaper_template.pdf.zip Download a draft from http://www.haskell.org/wikiupload/7/78/Popa_Dan_fullpaper_template.pdf.zip]]
  +
  +
==. Citari ==
  +
  +
1. Am avut bucuria de a gasi o lucrare de mai sus preluata de Mendeley.Com care se autodescrie ca:
  +
"Mendeley is a free reference manager and academic social network that can help you organize your research, collaborate with others online, and discover the latest research."
  +
  +
http://www.mendeley.com/research/direct-modular-evaluation-expressions-using-monads-type-classes-haskell/
  +
  +
2. Aceeasi lucrare este acum indexata si de Google scholar:
  +
http://scholar.google.co.uk/scholar?as_q=Direct+Modular+Evaluation+of+Expressions+using+the+Monads+and+Type+Classes+in+Haskell
  +
  +
3. Si in Japonia, solutia noastra cu pseudoconstructori data pentru
  +
problema propusa de Prof.P.Wadler, numita The Expression Problem, a fost difuzata:
  +
http://wpedia.goo.ne.jp/enwiki/Expression_Problem
  +
  +
  +
4.Cam din vara lui 2011, dinainte de mutarea site-ului www.haskell.org pe alt server, dateaza si o citare din: Dbpedia.org.
  +
http://dbpedia.org/page/Expression_Problem
  +
  +
 
-----
 
-----
Pagina in dezvoltare... inca.
+
Pagina in dezvoltare... inca.
  +
Pagina creata pe 20 iulie 2009 dupa o lucrare din ....iulie-august 2008.
 
----
 
----
 
Pagina indexata la indexul [[Category:Ro]] [http://www.haskell.org/haskellwiki/Category:Ro Categories:Ro]
 
Pagina indexata la indexul [[Category:Ro]] [http://www.haskell.org/haskellwiki/Category:Ro Categories:Ro]
 
----
 
----
  +
[http://www.haskell.org/haskellwiki/Research_area <= Inapoi la "Research Area "]
 
[http://www.haskell.org/haskellwiki/Ro/Haskell <= Inapoi la pagina principala Ro/Haskell. ]<br> <br>
 
[http://www.haskell.org/haskellwiki/Ro/Haskell <= Inapoi la pagina principala Ro/Haskell. ]<br> <br>
 
[http://www.haskell.org/haskellwiki/Intrebarile_incepatorului <'''-''' Inapoi la Intrebarile incepatorului Ro/Haskell. ]
 
[http://www.haskell.org/haskellwiki/Intrebarile_incepatorului <'''-''' Inapoi la Intrebarile incepatorului Ro/Haskell. ]

Latest revision as of 18:03, 13 July 2011


Ro/Haskell Community by Dan Popa

Contents

[edit] 1 . Introducere

Uzual, constructia DSL-urilor - mici limbaje de programare specializate - se face pornind de la o semantica bazata pe sintaxa. Sintaxa abstracta este de ajuns pentru a incepe proiectul, nu e nevoie de o sintaxa concreta din prima faza.

Iar sintaxa abstracta este strans legata de arborii sintactici abstracti si de arborii operatoriali.

In Haskell, de obicei, acesti arbori sunt declarati folosind: data.

Dezavantajul este ca aceste declaratii data nu sunt modulare. Efect: este greu sa implementam limbaje extensibile din cauza dificultatii de a extinde , printre altele, tipul de date al arborilor din reprezentarea intermediara.

Solutii diverse au fost, de-a lungul timpului, propuse:

- Structuri compuse cu ajutorul tipului MayBe Referinte:... se vor adauga

- Structuri de date compuse cu operatori din teoria categoriilor. Referinte: se vor adauga

- Turnuri de date utilizate impreuna cu pseudomonade Referinte: ... se vor adauga

- Extinderea limbajului Haskell cu un nou fel de declaratii de arbori. Asa numitele Open Data Types - Tipuri de date deschise Referinte: ... se vor adauga

Toate aveau dezavantaje cum ar fi: - complexitatea declaratiilor structurilor de date mai mare ca la arbori (ca lungime a programului) - operatii si operatori care presupuneau cunostinte in plus - dificultati de traducere de la arbori uzuali la noile date (nu era evidenta transformarea) - deci si dificultati de adaptare a software-ului existent

[edit] 2 . Noutatea: Pseudoconstructorii sunt functii

Toate abordarile anterioare propuneau structuri de date omitand cateva aspecte importante: - Haskell este un limbaj FUNCTIONAL deci putem opera cu functii - Constructorii tipurilor data sunt similari unor functii - au si semnatura / tip - Haskell fiind limbaj cu LAZY-EVALUATION - un set de apeluri de functii succesive (sau compuse explicit) va ramane in acea forma - arborescenta - sau intr-o forma izomorfa pina va fi absoluta nevoie sa fie evaluat. Deci va fi practic un arbore stocat.

Concluzia: se pot inlocui CONSTRUCTORII de date ai declaratiilor data cu un simplu set de functii. Concluzia a II-a: Atunci cand se implementeaza semantici monadice modulare aceste functii vor manipula valori monadice.

The Expression problem Solved untill 2008.png

[edit] 3 . Sintaxa

Pseudoconstructorii se folosesc ca si constructorii. Singura diferenta SINTACTICA este faptul ca fiind functii se vor scrie cu minuscula in loc de Majuscula.

[edit] 4 . Transformarea Constructorilor in Pseudoconstructori

Pentru programator este simplu: Scrieti minuscula in loc de majuscula. Atat. La semantici monadice: Scrieti minuscula in loc de majuscula in instructiunile return. Si, fireste nu uitati sa declarati functiile respective.

[edit] 5 . Avantaje

Deoarece au sintaxa cvasi-similara cu a Constructorilor rezulta: - complexitatea declaratiilor in aplicatie a structurilor de date ESTE EXACT ca la arbori (ca lungime a programului). - alte cunostinte in plus decat notiunea de functie nu se cer - Transformarea de la arbori uzuali la noile date / structuri este banala, vedeti mai sus, se schimba o litera. De fapt este un izomorfism de arbori. - lipsesc dificultatile de adaptare a surselor software-ului existent la noua implementare modulara a arborilor.

[edit] 6 . Dezavantaje

Prelucrarea acestor arbori in vederea optimizarii lor nu este integral studiata si este posibil sa puna noi probleme. Tema este deschisa.

[edit] 7 . Papers concerning pseudoconstructors over monadic values

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. - acceptat spre publicare . An Open Office (.sxw) file 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Ă 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. 2008/Rezumat1.

[edit] 8 .Prezentari / Slideshow in .pdf format

O prima idee despre pseudoconstructori va puteti face din aceasta prezentare planificata pentru Anglo Haskell 2008 dar netinuta din motive de nefinantare a calatoriei. Adica autorul a fost "bolnav de portofel" asa cum Solomon Marcus a fost "bolnav de pasaport", in epoca Ceausescu. http://www.haskell.org/wikiupload/1/1d/Prezentare-Anglo-Haskell-2008-draft2-more-slides.pdf

[edit] 9 . Proiecte

Am experimentat folosirea acestor pseudoconstructori in cadrul Proiectului Rodin, un mic DSL dedicat predarii informaticii in limba romana. Detalii au aparut in toamna in volumul de Studii si Cercetari Stiintifice - Seria Matematica-Informatica de la Univ. din Bacau, facultatea de Stiinte. De adaugat referinta: Lucarile sunt in Arhiva ExperimentExp12 de pe pagina Rodin sau de pe Rodin/Download.

7 ian 2011. Studiem acum folosirea pseudoconstructorilor in cadrul temei "TypeChecking" - verificare statica a tipurilor. Rezultatele vor fi publicate. Pseudoconstructorii sunt la fel de buni pentru "typecheckers" verificatoarele de tipuri asociate termilor cum sunt si pentru evaluatoare.

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

iunie 2011 Acesti Pseudoconstructori peste valori monadice s-au dovedit instrumente utile si la realizarea compilatoarelor. Vedeti si: Modular Monadic Compilers for Programming Languages.

13 iulie 2011 Congresul ARA de la Timisoara se apropie.(http://ara.mec.upt.ro/abslist.html) Am reusit sa programam sustinerea unei lucrari despre limbaje modularizate orizontal, in care si typecheckerul si evaluatorul (care poate fi foarte bine si un interpretor si un compilator) sunt taiate "pe orizontala" in instructiuni separate care pot fi adaugate modular. Lucrarea, cu titlul "Adaptable Software – Modular extensible monadic evaluator and typechecker based on pseudoconstructors" are codul ARA35-119. Un draft al lucrarii, scris pe 16 mai 2011 va punem la dispozitie si prin site-ul Ro/Haskell. [Download a draft from http://www.haskell.org/wikiupload/7/78/Popa_Dan_fullpaper_template.pdf.zip]

[edit] 10 . Citari

1. Am avut bucuria de a gasi o lucrare de mai sus preluata de Mendeley.Com care se autodescrie ca: "Mendeley is a free reference manager and academic social network that can help you organize your research, collaborate with others online, and discover the latest research."

http://www.mendeley.com/research/direct-modular-evaluation-expressions-using-monads-type-classes-haskell/

2. Aceeasi lucrare este acum indexata si de Google scholar: http://scholar.google.co.uk/scholar?as_q=Direct+Modular+Evaluation+of+Expressions+using+the+Monads+and+Type+Classes+in+Haskell

3. Si in Japonia, solutia noastra cu pseudoconstructori data pentru problema propusa de Prof.P.Wadler, numita The Expression Problem, a fost difuzata: http://wpedia.goo.ne.jp/enwiki/Expression_Problem


4.Cam din vara lui 2011, dinainte de mutarea site-ului www.haskell.org pe alt server, dateaza si o citare din: Dbpedia.org. http://dbpedia.org/page/Expression_Problem



Pagina in dezvoltare... inca. Pagina creata pe 20 iulie 2009 dupa o lucrare din ....iulie-august 2008.


Pagina indexata la indexul Categories:Ro


<= Inapoi la "Research Area " <= Inapoi la pagina principala Ro/Haskell.

<- Inapoi la Intrebarile incepatorului Ro/Haskell.