Personal tools

Pseudoconstructors over monadic values

From HaskellWiki

(Difference between revisions)
Jump to: navigation, search
m (working)
Line 67: Line 67:
   
 
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 76: Line 76:
 
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]].
   
   
Line 84: Line 84:
 
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 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. ]
 
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....
+
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.
   
 
-----
 
-----

Revision as of 00:15, 9 February 2011


Ro/Haskell Community by Dan Popa

Contents

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

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.

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.

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.

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.

6 . Dezavantaje

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

7 . Paper concerning pseudoconstructors over monadic values 2008

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.


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

8 . 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.


Pagina in dezvoltare... inca.


Pagina indexata la indexul Categories:Ro


<= Inapoi la pagina principala Ro/Haskell.

<- Inapoi la Intrebarile incepatorului Ro/Haskell.