Difference between revisions of "Pseudoconstructors over monadic values"

From HaskellWiki
Jump to navigation Jump to search
(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 existent
+
- 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.



Ro/Haskell Community by Dan Popa


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.