Difference between revisions of "Pseudoconstructors over monadic values"
(working...on pseudoconstructors over monadic values page) |
|||
Line 1: | Line 1: | ||
− | == 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, nu e nevoie de o sintaxa concreta. |
||
Line 56: | Line 56: | ||
- 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. |
||
− | - lipsesc dificultatile de adaptare a software-ului |
+ | - lipsesc dificultatile de adaptare a software-ului existen |
+ | ==. Paper concerning pseudoconstructors over monadic values 2008 == |
||
− | Detalii in lucrarea: |
||
+ | 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/sitewiki/images/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 |
||
+ | 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/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]]. |
||
+ | |||
+ | |||
+ | ---- |
||
+ | [[Image:Haskelllogo-small-flag-RO-8.jpg|center|Ro/Haskell Community by Dan Popa]] |
||
− | Dan Popa |
||
Pagina creata pe 20 iulie 2009 dupa o lucrare din .... |
Pagina creata pe 20 iulie 2009 dupa o lucrare din .... |
||
----- |
----- |
||
Pagina in dezvoltare... inca. |
Pagina in dezvoltare... inca. |
||
+ | ---- |
||
+ | Pagina indexata la indexul [[Category:Ro]] [http://www.haskell.org/haskellwiki/Category:Ro Categories:Ro] |
||
+ | ---- |
||
+ | [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. ] |
Revision as of 11:33, 20 July 2009
. 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.
Ori 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
. 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.
. Sintaxa
Pseudoconstructorii se folosesc ca si constructorii. Singura diferenta SINTACTICA este faptul ca fiind functii se vor scrie cu minuscula in loc de M'ajuscula.
. Transformarea Constrcutorilor in Pseudoconstructori
Simplu: Scrieti minuscula in loc de majuscula. Atat. La semantici monadice: Scrieti minuscula in loc de majuscula in instructiunile return. Atat.
Si, fireste nu uitati sa declarati functiile respective.
. 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. - lipsesc dificultatile de adaptare a software-ului existen
. 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/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.
Pagina creata pe 20 iulie 2009 dupa o lucrare din ....
Pagina in dezvoltare... inca.
Pagina indexata la indexul Categories:Ro
<= Inapoi la pagina principala Ro/Haskell.
<- Inapoi la Intrebarile incepatorului Ro/Haskell.