Personal tools

Pseudoconstructors over monadic values

From HaskellWiki

(Difference between revisions)
Jump to: navigation, search
(. Citari)
m (. Citari)
Line 110: Line 110:
 
problema propusa de Prof.P.Wadler, numita The Expression Problem, a fost difuzata:
 
problema propusa de Prof.P.Wadler, numita The Expression Problem, a fost difuzata:
 
http://wpedia.goo.ne.jp/enwiki/Expression_Problem
 
http://wpedia.goo.ne.jp/enwiki/Expression_Problem
-----
+
Pagina in dezvoltare... inca.
 
Pagina creata pe 20 iulie 2009 dupa o lucrare din ....iulie-august 2008.
 
   
 
4.Cam din vara lui 2011, dinainte de mutarea site-ului www.haskell.org pe alt server, dateaza si o citare din: Dbpedia.org.
 
4.Cam din vara lui 2011, dinainte de mutarea site-ului www.haskell.org pe alt server, dateaza si o citare din: Dbpedia.org.
Line 116: Line 116:
   
 
 
+
-----
  +
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]

Revision as of 20:16, 29 May 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.

The Expression problem Solved untill 2008.png

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

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

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


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.