Difference between revisions of "Pseudoconstructors over monadic values"
Line 1: | Line 1: | ||
⚫ | |||
⚫ | |||
+ | ---- |
||
+ | |||
==. Introducere == |
==. Introducere == |
||
Line 42: | Line 46: | ||
==. 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 Constrcutorilor in Pseudoconstructori == |
||
Line 71: | Line 75: | ||
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/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]]. |
||
− | |||
− | |||
⚫ | |||
⚫ | |||
Revision as of 11:36, 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 Majuscula.
. 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.