Difference between revisions of "Ro/Haskell"

From HaskellWiki
Jump to: navigation, search
m
Line 14: Line 14:
   
   
Ultimele stiri:
 
  +
Ultimele stiri: Gasiti in minibiblioteca de mai jos si o versiune in limba franceza a celebrei "Gentle Introduction ...".
 
<br> '''noiembrie''': Am reorganizat [[Intrebarile incepatorului]]. Intre timp pagina a fost accesata a 3100-a oara.
 
<br> '''noiembrie''': Am reorganizat [[Intrebarile incepatorului]]. Intre timp pagina a fost accesata a 3100-a oara.
 
<br>'''2-3 octombrie''': Un curs optional de [[Programare functionala]] (cealalta optiune fiind Semantici ale limbajelor) cu aplicatii in Haskell a inceput la Universitatea Bacau. Studentii au optat in majoritate covarsitoare pentru [[Programare functionala]] in Haskell.
 
<br>'''2-3 octombrie''': Un curs optional de [[Programare functionala]] (cealalta optiune fiind Semantici ale limbajelor) cu aplicatii in Haskell a inceput la Universitatea Bacau. Studentii au optat in majoritate covarsitoare pentru [[Programare functionala]] in Haskell.
Line 27: Line 27:
   
 
==. Stiri Ro/Haskell ==
 
==. Stiri Ro/Haskell ==
Pagina de stiri a grupului Ro/Haskell este aici:[[Stiri Ro/Haskell]]. Vor ramane probabil doar ultimele stiri la inceputul paginii principale. Daca va intereseaza limbajul Haskell si nu activitatea comunitatii cititi paragrafele urmatoare. (Nota: link-urile rosii catre pagini in constructie, nu va mai obositi sa dati click pe ele.)
+
Pagina de stiri a grupului Ro/Haskell este aici:[[Stiri Ro/Haskell]]. Vor ramane probabil doar ultimele stiri la inceputul paginii principale. Daca va intereseaza limbajul Haskell si nu activitatea comunitatii cititi paragrafele urmatoare. (Nota: link-urile rosii sunt catre pagini in constructie, nu va mai obositi sa dati click pe ele.)
   
   
Line 131: Line 131:
 
 
 
* "O introducere agreabila in Haskell" - traducerea celebrului [http://haskell.org/tutorial/haskell-98-tutorial.pdf "A Gentle Introduction In Haskell ] - o lucrare clasica pe care incercam sa v-o oferim in traducere. <br>
 
* "O introducere agreabila in Haskell" - traducerea celebrului [http://haskell.org/tutorial/haskell-98-tutorial.pdf "A Gentle Introduction In Haskell ] - o lucrare clasica pe care incercam sa v-o oferim in traducere. <br>
Vestea proasta: Datorita felului cum se puncteaza asemenea activitati la Universitatea Bacau, impartind punctajul la numarul autorilor si netinind cont de valoarea cartii sau de faptul ca versiunea romaneasca a unei carti libere trebuie integral rescrisa probabil acest proiect va fi amanat ca fiind neprioritar. Pacat :(
+
Vestea proasta: Datorita felului cum se puncteaza asemenea activitati la Universitatea Bacau, impartind punctajul la numarul autorilor si netinind cont de valoarea cartii sau de faptul ca versiunea romaneasca a unei carti libere trebuie integral rescrisa probabil acest proiect va fi amanat ca fiind neprioritar. Pacat :( <br>
  +
Daca stiti limba franceza mai bine decat limba engleza descarcati versiunea de [http://www.haskell.org/sitewiki/images/5/5e/GentleFR.pdf aici] produs al unei echipe din grupul Fr/Haskell, document pe care l-am pus in format [http://www.haskell.org/sitewiki/images/5/5e/GentleFR.pdf pdf] dupa o ultima corectura.
   
 
* Practica interpretarii monadice - deocamdata un proiect de carte care va cuprinde lucrari de laborator aferente cursului de Limbaje Formale si Automate de la Universitatea Bacau, extrase din laboratoarele anului curent (si in viitor,ale altor ani).
 
* Practica interpretarii monadice - deocamdata un proiect de carte care va cuprinde lucrari de laborator aferente cursului de Limbaje Formale si Automate de la Universitatea Bacau, extrase din laboratoarele anului curent (si in viitor,ale altor ani).
Line 157: Line 157:
 
Nici nu va inchipuiati cate materiale exista pe Internet. Voi incerca sa intretin o lista de carti si articole disponibile pe Internet, in format PDF sau macar sa indic pe cele mai valoroase.
 
Nici nu va inchipuiati cate materiale exista pe Internet. Voi incerca sa intretin o lista de carti si articole disponibile pe Internet, in format PDF sau macar sa indic pe cele mai valoroase.
 
*Ca introducere cititi tot ce gasiti sub titlul "History of Haskell".
 
*Ca introducere cititi tot ce gasiti sub titlul "History of Haskell".
*[http://haskell.org/tutorial/haskell-98-tutorial.pdf "A Gentle Introduction In Haskell ] O lucrare celebra scrisa de o echipa absolut remarcabila. Daca nume ca Los Alamos Lab. si Yale Univ. va spun ceva :)
+
*[http://haskell.org/tutorial/haskell-98-tutorial.pdf "A Gentle Introduction In Haskell ] O lucrare celebra scrisa de o echipa absolut remarcabila. Daca nume ca Los Alamos Lab. si Yale Univ. va spun ceva :)<br> Daca stiti limba franceza mai bine decat limba engleza descarcati versiunea de [http://www.haskell.org/sitewiki/images/5/5e/GentleFR.pdf aici] produs al unei echipe din grupul Fr/Haskell, document pe care l-am pus in format [http://www.haskell.org/sitewiki/images/5/5e/GentleFR.pdf pdf] dupa o ultima corectura.
  +
 
* YAHT - Celebra carte "Yet an other Haskell Tutorial" [http://www.cs.utah.edu/~hal/docs/daume02yaht.pdf - Download YAHT ] Incercati si la [http://darcs.haskell.org/yaht/yaht.pdf http://darcs.haskell.org/yaht/yaht.pdf]
 
* YAHT - Celebra carte "Yet an other Haskell Tutorial" [http://www.cs.utah.edu/~hal/docs/daume02yaht.pdf - Download YAHT ] Incercati si la [http://darcs.haskell.org/yaht/yaht.pdf http://darcs.haskell.org/yaht/yaht.pdf]
 
*O prezentare magnifica a monadei de I/O, a abordarilor concurentei, exceptiilor si a altor elemente utile practicianului (apeluri de functii de I/O ale sistemului de operare) gasiti in fascinanta expunere [http://research.microsoft.com/~simonpj/papers/marktoberdorf/mark.pdf "Tackling the Awkward Squad:..." de Simon Peyton Jones]. Neaparat de citit.
 
*O prezentare magnifica a monadei de I/O, a abordarilor concurentei, exceptiilor si a altor elemente utile practicianului (apeluri de functii de I/O ale sistemului de operare) gasiti in fascinanta expunere [http://research.microsoft.com/~simonpj/papers/marktoberdorf/mark.pdf "Tackling the Awkward Squad:..." de Simon Peyton Jones]. Neaparat de citit.
Line 215: Line 215:
 
CEFP 2007: Cluj-Napoca/Romania; intre 23-30 iunie 2007. [http://cs.ubbcluj.ro/cefp2007/ CEFP 2007 Homepage aici].
 
CEFP 2007: Cluj-Napoca/Romania; intre 23-30 iunie 2007. [http://cs.ubbcluj.ro/cefp2007/ CEFP 2007 Homepage aici].
   
==. De-ale studentilor ==
+
==. De-ale studentilor si Intrebarile incepatorului==
 
Incercam sa reflectam aici probleme cu care se confrunta studentii nostri.
 
Incercam sa reflectam aici probleme cu care se confrunta studentii nostri.
 
Sa publicam un sfat, un exemplu sau orice altceva ce i-ar putea ajuta.
 
Sa publicam un sfat, un exemplu sau orice altceva ce i-ar putea ajuta.

Revision as of 15:05, 11 November 2007

Haskell - Un limbaj functional pur

Haskell este limbajul functional succesor al LISP-ului, Scheme-ului si ML-ului !!!
Cel mai productiv limbaj functional ! Limbajul folosit de de autorii limbajului Perl 6 si ales de echipa Linspire.


Atentie: Trimitand articole si date personale pentru publicare pe acest site al comunitatii Haskell/Ro acceptati stocarea datelor dvs. pe servere care nu sunt in Uniunea Europeana si nici macar in Eurasia! Accesul la copiile acestui site oferite de alte servicii proxy (diferite de site-ul original www.haskell.org) nu va garanteaza nici acuratetea continutului nici calitatea de 'virus-free' a materialelor.



Ultimele stiri: Gasiti in minibiblioteca de mai jos si o versiune in limba franceza a celebrei "Gentle Introduction ...".
noiembrie: Am reorganizat Intrebarile incepatorului. Intre timp pagina a fost accesata a 3100-a oara.
2-3 octombrie: Un curs optional de Programare functionala (cealalta optiune fiind Semantici ale limbajelor) cu aplicatii in Haskell a inceput la Universitatea Bacau. Studentii au optat in majoritate covarsitoare pentru Programare functionala in Haskell. Cititi si Stiri Ro/Haskell daca ati cautat o stire mai veche sau o referinta la un material bibliografic a carui aparitie am anuntat-o in rubrica de stiri.

Cuprinsul paginii Ro/Haskell:

. Stiri Ro/Haskell

Pagina de stiri a grupului Ro/Haskell este aici:Stiri Ro/Haskell. Vor ramane probabil doar ultimele stiri la inceputul paginii principale. Daca va intereseaza limbajul Haskell si nu activitatea comunitatii cititi paragrafele urmatoare. (Nota: link-urile rosii sunt catre pagini in constructie, nu va mai obositi sa dati click pe ele.)


. Introducere

Haskell este un limbaj de uz general, din categoria limbajelor functionale pure (fara instructiuni imperative sau producatoare de efecte laterale). Foloseste Lazy Evaluation. Beneficiaza de un sistem de tipuri revolutionar, cu Tipuri polimorfice si Clase de tipuri. Permite programarea cu clase si instante de clase definite utilizator, clasele fiind multimi de structuri algebrice (adica mai mult decat multimi de obiecte).

Haskell este DEOSEBIT: El are o sintaxa bidimensionala (bazata pe notiunea de Layout) asa ca simpla aliniere corecta pe verticala va scuteste de paranteze ! Iar daca puneti un spatiu in PLUS nu e o greseala. Sintaxa bidimensionala face programele mult mai clare decat echivalentele lor in LISP (netipizat si cu multe paranteze: LISP = Limbajul InSuportabilelor Paranteze) sau cele in Scheme ori ML. Alte plusuri sunt tipizarea stricta, existenta monadelor si a do-notatiei (o scriere cvasi imperativa posibila intr-un limbaj functional pur) precum si existenta listelor infinite si a "multimilor ordonate" definite descriptiv, numite in manualele de Haskell (in limba engleza) "list comprehensions".

Productivitatea programarii in Haskell este net superioara altor limbaje, un algoritm Quicksort scriindu-se in doar 3-4 linii de program nu in 30-40 ca in C sau C++. Dati un click pe link-ul Quicksort pentru a-l vedea.

Unul din motivele pentru care Haskell este atat de productiv este posibilitatea de a lucra cu functii de nivel superior, polimorfice, operand inclusiv pe structuri de date definite inductiv. Acele structuri de date beneficiaza de functii de afisare si comparare (si nu numai) generate automat prin "deriving" ori definite de utilizator.

V-ati batut capul nu o data sa rescrieti rutinele de afisare ale unor structuri de date compuse (liste de arbori cu noduri perechi de ... samd) care se schimbau pe masura ce dezvoltati proiectul ? Ati refacut mereu functiile de comparatie pentru astfel de structuri de date compuse ? Folositi Haskell si adaugati declaratiilor de date "deriving Show" respectiv "deriving Eq" (Iar lista nu se opreste aici.) Haskell face automat restul si tipul nou creat capata din clipa declararii functiile de afisare sau comparare ce-i sunt necesare fara sa le scrieti dumneavoastra ! Dar le puteti rescrie daca nu va plac.

Exista o multime de compilatoare si interpretoare pentru Haskell si sunt disponibile gratuit. Hugs e un interpretor bun pentru primele lectii de Haskell. GHC este un compilator pentru proiecte profesionale. Cititi va rog si paragraful despre: Interpretoare si compilatoare de Haskell disponibile, tot pe aceasta pagina.

Apropos: Daca va intereseaza teoria automatelor si limbajelor formale sau metode de transcriere a structurilor de date dintr-un format in altul, Haskell este un instrument excelent. Un translator de la o sintaxa la alta se scrie uimitor de repede, in cateva ore. Ba chiar si un mic limbaj de programare ! Dar nu uitati mai inainte sa cititi ceva despre teoria limbajelor formale. Capitolul dedicat gramaticilor de tip 2 (Context Free Grammmars) din ierarhia lui Chomsky in primul rand dar si celelalte lucrari ale lui Noam Chomsky. Apropos de gramaticile lui Chomsky, bibliotecile de combinatori de parsere scrise in Haskell sunt mai puternice decat gramaticile independente de context, deoarece combinatorii de parsere sunt functii cu parametri. De exemplu limbajul "a la n, b la n, c la n" cat si limbajul cuvintelor duplicate pot fi usor acceptate de parsere create folosind combinatorii de parsere. Si sunt si imediat implementabile ca programe in Haskell. (Cititi din bibliografia din rubrica "minibiblioteca".)


. Despre Haskell dorim sa prezentam...

  • Capitole de manual. Atentie, unele versiuni de Acrobat Reader (din seria 5) au avut probleme de securitate, conform revistelor de Linux. In asemenea situatii va sugeram sa optati mai bine pentru cartile tiparite !

. Umor glume si anecdote despre Haskell

  • Haskell a fost anuntat pe 1 aprilie iar acest lucru nu a fost intentionat. De atunci comunitatea Haskell cultiva un umor savuros, iar ocazional, la 1 aprilie alterneaza adesea stirile serioase cu mesaje pline de umor.Vedeti si paginile de umor in limba engleza de pe http://www.haskell.org.
  • O serie de anecdote sau elemente mai greu de demonstrat dar de altfel vizibile pentru cititorul avizat circula pe seama limbajului Haskell. Ocazional apar si in carti sau cursuri, testand atentia cititorilor / ascultatorilor. Anecdote si afirmatii hazlii.
  • Alt fel de umor despre Haskell il constitue umorul involuntar. De exemplu o discutie despre interpretoarele limbajelor - lucru pe care interlocutorul din exemplul urmator nu l-a inteles - se poate transforma intr-un savuros dialog de genul "vorbesc impreuna si se inteleg separat".

. Aventura lansarii comunitatii Ro-Haskell

  • Introducerea limbajului Haskell in presa de specialitate informatica fie ca era vorba despre reviste sau carti s-a dovedit o adevarata aventura. Editurile de exemplu doar declarau ca sunt interesate de cartile despre noile limbaje dar doreau si doresc in principal sa va vanda doar carti despre HTML, WEB si C. Am primit un ajutor nesperat din partea revistei MyLinux care a initiat primul sondaj din Romania
    Romania.gif
    privind interesul cititorilor pentru un limbaj atat de nou si productiv. Au inceput cu: Doriti un articol despre Haskell ? Ati auzit de Haskell ? - Sondajul exista inca pe site-ul revistei MyLinux actualmente comasata cu MyHardware. - Sondaj din 2005. Pe scurt cateva pareri incurajatoare, limbajul in care sunt exprimate apartine autorilor lor:
    • Opinie: "Unii spun ca e chiar mai "object-oriented" decat Python.O prezentare a acestuia intr-un limbaj accesibil tuturor ar fi interesanta."
    • Opinie: "Da, e un limbaj destul de mişto. Chiar ar fi util pentru cei care n-au auzit de el."
    • Opinie: "Pare interesant , din cate stiu compilatorul de Perl6 este scris in haskel. [1]"
  • Multumesc pe aceasta cale echipei care a pus la dispozitie infrastructura site-ului si a asigurat astfel web hosting-ul (Wiki etc) atat la Yale Univ. cat si pe site-ul MyLinux.
  • Opinia editorului revistei MyLinux :
Posted on Oct 12 2005, 03:25 PM
Am primit de ceva timp un articol de la colaboratorul nostru Dan Popa, un  
articol despre programarea in Haskell. Ce parere aveti? V-ar interesa sa cititi  
despre asa ceva in MyLINUX? Eu sunt intr-o dilema: articolul e bine documentat  
si bine scris, dar nu sunt sigur ca multa lume ar fi interesata sa invete mai  
multe despre Haskell. Asa ca va intreb pe voi.
- Revedeti opinia pe site-ul revistei. 
  • Editura EduSoft ne-a sprijinit inca de la lansare publicand prima carte din Romania in care este pomenit limbajul Haskell un manual de Oberon 2 scris in perioada 2002-2005 care in capitolul introductiv prezenta si alte paradigme si limbaje, incluzand aici si limbajul Haskell. Tot Editura EduSoft a publicat prima carte dedicata integral Haskell-ului. - primul manual de Haskell in limba romana.
  • Anul 2006 a fost un an in care Haskell-ul s-a folosit parca pe ascuns. In lumina urmatoarelor mesaje pe care le-am primit a rezultat ca s-a lucrat in Haskell in Romania in acea perioada si au existat maxime locale de interes pentru Haskell, putin popularizate.
  • Conf. Mihai.Gontineac propune si anunta (pe 8 iunie 2007) continuarea unor cercetari de algebra superioara si teoria categoriilor insotite de aplicatii in Haskell. De asemenea anunta intentia ca la aceste cercetari sa participe prof. Gabriel Ciobanu si Dr. D.Rusu. Estimam ca anul universitar 2007-2008 va fi un an in care limbajul Haskell va fi intens folosit in universitati ca limbaj pentru aplicarea cercetarilor din domenii superioare ale algebrei si teoriei categoriilor precum si ca limbaj de constructie a limbajelor si de programare functionala. Lista domeniilor de aplicare ramane deschisa.


. Utilizarea ca instrument de realizare a interpretoarelor

  • Datorita modului atat de simplu in care se pot defini in Haskell elementele unui translator limbajul Haskell se recomanda de la sine ca un DSL (domain specific language) pentru realizarea interpretoarelor si compilatoarelor. Astfel, in Haskell se definesc foarte usor:
    • Textul de intrare vazut ca string si simultan ca lista de caractere (in Haskell tipul String avand ambele semnificatii)
    • Atomii lexicali sunt recunoscuti de parsere specializate, deja existente in biblioteci cum sunt ParseLib si Parsec (sau altele ...)
    • Gramaticile, inclusiv cele ambigue sunt imediat transcrise (in asa-zisa do-notatie) sub forma unor secvente de parsere corespunzatori neterminalelor gramaticii. Alternativa "|" beneficiaza de un operator special (+++ in ParseLib) Suportul teoretic, structura algebrica ce permite combinarea efectelor parserelor este Monada Parserelor.
    • Arborii sintactici, inclusiv cei polimorfici, se transcriu imediat in Haskell folosind declaratia "data" (destinata tipurilor utilizator). Descrierea structurilor de date pentru reprezentarea arborilor sintactici se poate face pe unul - doua -trei randuri. Deoarece in Haskell la o declaratie "data" se poate adauga "deriving Show", noul tip de date va fi implicit inzestrat cu functie de afisare, pe care programatorul nu mai este obligat s-o scrie el. Simpla modificare a declaratiei "data" a arborilor modifica automat (transparent) functia de afisare. Ideal pentru realizarea prototipurilor.
    • Semantica se poate transcrie in do-notatie, dar folosind de obicei o alta monada decat monada parserelor. Nu sunt necesari operatori specializati pentru lifting-ul functiilor uzuale in universul monadei, asa cum se proceda pe vremea cand Espinosa scria la teza sa de doctorat, celebra teza despre "Semantic Lego". Descarcati de aici Transcrierea_semanticii_in_do_notatie.pdf un capitol dintr-o carte de Dan Popa, destinat a introduce cititorul in tehnicile de exprimare a semanticilor in do-notatie(163KB, MIME type: application/pdf). Dovedeste totodata superioritatea Haskell-ului asupra altor limbaje functionale mai vechi (LISP,SCHEME), in priviinta posibilitatilor de a transcrie semantici in el si explica necesitatea indeplinirii Legilor Monadei.
    • Prelucrarile recursive de arbori atat de necesare la parcurgerea arborilor, la listarea unui arbore sintactic (pretty printing) se scriu imediat deoarece Haskell permite definirea de functii recursive, ca succesiuni de ecuatii.
  • La urma dar nu in cele din urma: Compilatorul de Haskell GHC este el insusi scris in Haskell. Ceea ce spune tot ce este de spus despre Haskell ca limbaj (DSL) de scriere a compilatoarelor.
  • Cum sa scrii un mic limbaj, aici era o implementare de Scheme.

. Interpretoare si compilatoare disponibile - pagini in engleza

Exista o multime de compilatoare si interpretoare pentru Haskell si sunt disponibile gratuit: Hugs (interpretor), GHC (compilator), Hellium (mediu de instruire) si altele. O serie de distributii Linux includ interpretorul Hugs (ex: Mandrake 10.0), altele il ofera pentru download de pe site-ul distributiei (ex: PC Linux OS 9). Unele permit instalarea imediata a interpretorului sau compilatorului de Haskell (ex: Suse 9.x functioneaza cu cele doua binare din distributia Mandrake 10.0).Iar lista nu se opreste aici. Mediul de dezvoltare Kdevelopment permite si realizarea de proiecte in Haskell (are chiar sablon de proiect inclus, pregatit) dar nu uitati sa instalati compilatorul GHC. Versiuni de WinHugs sunt de asemenea disponibile pe platforma Windows. Compilatorul Haskell GHC poate, cu ajutorul unui plug-in special sa lucreze impreuna cu mediul de dezvoltare ECLIPSE ! Nici Visual Studio-ul nu e uitat, exista versiuni in care se poate lucra cu Hasekll. Un instrument util lansat recent este Visual Haskell Dar din pacate se pare ca functioneaza doar cu editiile comerciale ale Visual Studio. Testele facute cu Visual Studio din kitul gratuit, distribuibil (A.R.Kit) n-au dus la nici un succes. Motivul tehnic este probabil lipsa suportului pentru plugin-uri din editia limitata a A.R.Kit. Iar Visual Haskell este vazut ca un plug-in Visual Studio. Concluzia: Cautati Eclipse a carei versiune (2.0 ?) avea un plugin pentru GHC.

Puteti descarca software si de pe pagina cu software din site-ul de prezentare a cartii "The Haskell School Of Expression" - Pagina cu link-uri de download.

  • Kdevelop de sub Linux poate functiona de asemenea impreuna cu cu GHC.

Iar daca va intereseaza sa descarcati software HDBC-ODBC pentru Windows incercati aceasta pagina cu instructiuni (in engleza).


. Lucrari in limba romana, cronologic

2005

  • Realizarea Interpretoarelor Adaptabile in limbajul Haskell 98 - articol de Dan Popa prezentat la Simpozionul International al Tinerilor Cercetatori ed. 2005, Chisinau, Republica Moldova (21-22 aprilie 2005).- o poza si date despre organizatori se afla aici
  • Cum puteti scrie un mic asamblor adaptabil in Haskell 98:Popa, Dan; An assembler in a nutshell - Proceedings of the 30th annual Congress of The American-Romanian
    Academy of Art and Sciences (ARA), Academia de Studii Economice din Moldova,
    2005, p. 196-198 x 2 coloane, ISBN 9975-75-313-2 Versiunea in limba romana a lucrarii, in format de capitol de carte. Bibliografia nu este inclusa dar notiunile
    folosite sunt notiuni fundamentale de teoria categoriilor care pot fi gasite
    in orice carte de Teoria Categoriilor.

2006

2007

  • Lista ramane deschisa ... si deocamdata neactualizata. Oricum exista si mai multe lucrari despre Haskell ca in anul precedent. Le puteti gasi folosind un motor de cautare.

. Carti publicate in limba romana

  • La 31 ianuarie 2007 a aparut primul manual romanesc de Haskell "Introducere in Haskell 98 prin exemple". Volumul de Dan Popa anuntat de revista MyLinux in numarul 47 / 2005 (numarul a ajuns pe piata in ianuarie 2006) este acum publicat si disponibil la Editura Edusoft (230 pg softcover). Aici este prezentat pe site-ul editurii EduSoft. ISBN 978-973-8934-48-1 Atentie: atunci cand citati cartea va rugam sa luati ISBN-ul de pe pagina a patra.
    Cartea-lui-Dan-Popa-coperta-1.png
    Volumul isi propune sa-i conduca pe doritorii de a invata Haskell din exemplu in exemplu, de la cea mai simpla functie pina la scrierea unui interpretor. Principiile parsing-ului modular sunt si ele prezentate, impreuna cu exemple si un studiu de caz.Cartea se adreseaza persoanelor care se ocupa de limbaje functionale, practica constructiei interpretoarelor si compilatoarelor si celor interesati de limbaje formale si analiza sintactica. Exista de asemenea pagini dedicate folosirii do-notatiei la implementarea semanticilor.

Cartea se adreseaza studentilor de la cursurile de limbaje formale si/sau compilatoare din centrele universitare: Bacau, Iasi. (Daca mai stiti si alte centre unde se studiaza Haskell rog sa mi le aduceti la cunostinta pentru a le adauga pe site.) Deoarece au existat mici erori de tipar publicam aici Erata cartii "Introducere in Haskell 98 prin exemple".

  • Am primit cartea "Programare functionala - O introducere utilizand limbajul Haskell", de Mihai Gontineac (Stire din 16.feb.2007)
    Haskell-Gontineac-coperta-mica.jpg

Cartea contine un capitol despre lambda calcul, o consistenta traducere a listei functiilor din Standard Prelude (...compiling Standard Prelude) o serie de exemple traditionale de programe cu operatii de I/O (pe care le-am regasit si pe un site chinezesc).Alte exemple clasice rotunjesc setul. In final exista un grup consistent de pagini de programare imperativa in Haskell realizate de studentii domnului M. Gontineac care amintesc de programele in Pascal. Inspirata a fost ideea autorului de a preciza ca acele exemple pot contine greseli. Vom reveni cu detalii.(probabil dupa 20.feb.2007)


. Carti in pregatire in limba romana

  • "Translatoare scrise in Haskell 98 pentru securizarea sistemelor on-line"

Gasiti in sectiunea Capitole de manual a site-ului parti din DRAFT-ul unui manual despre Haskell pe care am sperat sa le includ intr-un volum despre scrierea unor translatoare utile in securizarea sistemelor on-line. Utilizati-le ca un set de lectii de initiere in Haskell desi unele capitole necesare (monade , I/O etc) nu sunt incluse. In final am inclus o parte din ele in volumul "Introducere in Haskell 98 prin exemple".

Vestea proasta: Datorita felului cum se puncteaza asemenea activitati la Universitatea Bacau, impartind punctajul la numarul autorilor si netinind cont de valoarea cartii sau de faptul ca versiunea romaneasca a unei carti libere trebuie integral rescrisa probabil acest proiect va fi amanat ca fiind neprioritar. Pacat :(
Daca stiti limba franceza mai bine decat limba engleza descarcati versiunea de aici produs al unei echipe din grupul Fr/Haskell, document pe care l-am pus in format pdf dupa o ultima corectura.

  • Practica interpretarii monadice - deocamdata un proiect de carte care va cuprinde lucrari de laborator aferente cursului de Limbaje Formale si Automate de la Universitatea Bacau, extrase din laboratoarele anului curent (si in viitor,ale altor ani).

. Distributii Linux de Download apreciate

Lista urmatoare nu este nici pe departe completa.

  • Mandriva 2007 - desi nu mai include Hugs puteti folosi binarele Hugs de la distributia Mandrake 10.0. CD-urile se pot gasi in colectia revistei CHIP , e vorba de CHIP Special 2004 cu Mandriva Linux 10.0. Nu uitati sa instalati in ordine (cu mc-ul) bibliotecile de pe CD-ul 1/3:
    • libreadline.so.4
    • libncurses.so.5
    • lbgpm.so.1 si abia apoi
    • hugs 98 de pe CD-ul 3/3

Cititi si intrebarile despre biblioteci de la pagina Intrebarile incepatorului. O alta varianta ar fi sa folosit unele rpm-uri GHC, cum este ghc-6.7.2.x86.rpm de la Open Suse Linux. Functioneaza bine GHCI, deci puteti face lectii interactive de Haskell cu ea. (totusi nu o recomandam prea calduros).

  • Mandrake 10.0 - include Hugs in format binar, gata de a fi instalat. In plus este si o buna platforma pentru laboratorul de Sisteme de Calcul cu Linux si nici nu solicita PC-uri puternice.
  • Mandriva 10.2 - desi nu mai include Hugs puteti folosi binarele Hugs de la distributia de mai sus (Mandrake 10.0). Nu uitati sa instalati si biblioteca libreadline.so.4 de pe CD-ul 1.
  • Suse 9.x - am putut instala la fel de usor Hugs oferit impreuna cu Mandrake 10.0. Cititi la inceputul acestui capitol.
  • PC Linux OS 9 si PC Linux OS 2007 - cu riscul de a gresi afirm ca Hugs era disponibil ca pachet de programe downloadabile de pe site-ul distributiei.

Exista si alte distributii Linux care includ Hugs sau mai puternicul GHC. De asemenea exista portari profesionale pe Solaris.

  • Ubuntu 6.06 include intre pachetele oferite prin site-urile distributiei si GHC. Nu l-am testat indeajuns incat sa-mi formulez o parere. Ideea de a descarca de pe un site si KDevelop si GHC la viteze mici (circa 10k/sec) nu surade nimanui. Promite totusi. Mesajul care descrie Haskell-ul din distriibutia Ubuntu il numeste simplu, din cate imi amintesc, "The Language". Cu majuscule.
  • Gentoo Linux.

Lista ramane deschisa.

. Mini-biblioteca despre Haskell, Hugs si Limbaje Formale On Line

Nici nu va inchipuiati cate materiale exista pe Internet. Voi incerca sa intretin o lista de carti si articole disponibile pe Internet, in format PDF sau macar sa indic pe cele mai valoroase.

  • Ca introducere cititi tot ce gasiti sub titlul "History of Haskell".
  • "A Gentle Introduction In Haskell O lucrare celebra scrisa de o echipa absolut remarcabila. Daca nume ca Los Alamos Lab. si Yale Univ. va spun ceva :)
    Daca stiti limba franceza mai bine decat limba engleza descarcati versiunea de aici produs al unei echipe din grupul Fr/Haskell, document pe care l-am pus in format pdf dupa o ultima corectura.
3.1 The type 'Parser'    de la pagina 47
3.2 Elementary parsers   de la pagina 49
3.3 Parser combinator    de la pagina 52
si mai departe... inclusiv 
5.1 Finite state automata de la pagina 85
si urmatoarele capitole 
  • Functional Programming "Programare Functionala" de Jeroen Fokker, 1995. (in engleza, 153 pages, 600 KB). Un manual de programare functionala cu exemple rulabile sub Gofer (cel care a precedat interpretorul Hugs pt. Haskell). Lipsesc capitolele 6 si 7. Hugs difera de Gofer asa ca merita sa testati aceste exemple daca predati Haskell folosind Hugs sau GHC. Cititi din ea neaparat capitolele urmatoare, mai ales daca sunteti de formatie matematician:
Capitolul despre inversarea unei functii: (2.4.4-2.4.5) 
Un bun capitol in care apar foldl si foldr: (3.1.3)
Si cativa algoritmi de sortare: (3.1.4)
Liste specificate descriptiv (eng.list comprehensions) gasiti la: (3.2.7)
Iar daca lucrati cu concepte din geometrie cititi: (3.3.2)
Permutari si combinari la: (4.1.2)
Si "@-notatia" la: (4.1.3)
Vectori si matrice in Haskell: (4.2.1)
O buna colectie de functii Gofer la sfarsit si multe exercitii si probleme.
  • O sursa de articole valoroasa este si site-ul Citeseer.

. Mesaje

Dan Popa, initiatorul comunitatii Haskell-Ro, doreste tuturor, atat cadrelor didactice care predau sau vor preda limbaje formale, limbaje functionale sau compilatoare folosind Haskell o lectura instructiva si cat mai placuta, mai ales ca acum este deja publicat un prim manual romanesc de Haskell: "Introducere in Haskell 98 prin exemple" publicat la EduSoft.

Drept carte complementara puteti citi cartea domnului M.Gontineac. Contine printre altele o traducere a listei functiilor din Standard Prelude si o serie de exemple de programare imperativa cu operatii de I/O.

. Stiri

8 iunie 2007 S-a primit de la domnul conf M. Gontineac stirea despre continuarea unor cercetari de algebra superioara cu aplicatii in Haskell. Vom reveni, probabil, cu detalii.

Pe 18.02.2007 s-a sustinut la Universitatea Bacau examenul la disciplina Limbaje Formale si Automate. Doua din cele 4 subiecte de pe fiecare bilet s-au referit la Haskell. Toti studentii care s-au prezentat la examen au trecut cu succes examenul.

Bacau: Martie 2007: S-au propus primele teme de licenta (de la Bacau) avand ca limbaj de lucru limbajul Haskell.

Mai 2007: Edusoft a epuizat primul tiraj din "Introducere in Haskell 98 prin exemple" si a anuntat (afirma cititorii) un nou tiraj. Pretul a scazut. Profitati de oferta.

Mai 2007: Luna de intensa activitate in domeniile programarii functionale si limbajului Haskell la Iasi. Studentii de la Univ Iasi, facultatile de matematica si informatica, indrumati de prof. Grigoras resp conf. Gontineac se pregatesc de examene, lucreaza la proiecte, studiaza, intreaba, scriu e-mail-uri. O atmosfera plina de dinamism.

Prof Grigoras Gheorghe a postat in cursul acestui semestru (sem.al II-lea din 2007) pe site-ul cursului domniei sale slide-uri de curs de Programare Functionala in care se foloseste Haskell. Ar trebui sa fie disponibile aici. Link extern! Format PDF. Numarul lor este in crestere, primele zece,unsprezece ... sunt deja disponibile (din 14 planificate).
Un palindrom record, pentru cei ce testeaza codul din cursul 10 este: "Draga Lelica va leaga Ela vacile la gard!" Multumiri lui Ioanid Rosu pentru acest exemplu de palindrom.

Interesanta si utila pentru incepatori este si prezentarea facuta de Marian Radu, pentru uzul studentilor. Ar trebui sa fie aici. Link extern! Cam vagi informatiile despre monade.

Cartea domnului conf. M.Gontineac are o descriere mai amanuntita publicata aici. Programare Functionala - O introducere utilizand limbajul Haskell

Puteti gasi in curand "Introducere in Haskell 98 prin exemple" si la Biblioteca Facultatii de Informatica / Matematica din Iasi. Intrarea cartii in catalogul online al Bibliotecii este planificata in jurul datei de 2-3 iunie 2007. Vom reveni atunci cu adresa catalogului si cota cartii. Deja donatia de facto s-a facut pe 26 mai 2007.

Puteti gasi "Introducere in Haskell 98 prin exemple" si la Biblioteca Seminarului Matematic Al. Myller din Iasi.

Puteti gasi "Introducere in Haskell 98 prin exemple" si la Bacau la Biblioteca Judeteana Bacau din parcul Cancicov. (in locul fostului stadion din parc).

CEFP 2007: Cluj-Napoca/Romania; intre 23-30 iunie 2007. CEFP 2007 Homepage aici.

. De-ale studentilor si Intrebarile incepatorului

Incercam sa reflectam aici probleme cu care se confrunta studentii nostri. Sa publicam un sfat, un exemplu sau orice altceva ce i-ar putea ajuta. Cititi si: Intrebarile incepatorului
Daca ati ales cursul optional numit Programare functionala incepeti studiul de aici.

. Ce n-am publicat aici...inca

La o revizuire a site-ului din vara lui 2007 am gasit ca Ro/Haskell ar putea fi inca imbunatatit. O sumedenie de lucruri ar putea fi adaugate, de la simple explicatii pentru incepatori la colectii de link-uri catre articole si carti celebre pentru avansati.

Pentru incepatori:

Tipul Either. 
Operatorii $ pentru aplicarea functiilor si ! pentru indexarea vectorilor.
Exemplul (exercitiul) numit AskForWords cu tot cu solutia lui.
Un mic exemplu despre calculul listei de divizori a unui numar, un 
miniexercitiu clasic de programare care se rezolva pe un rand, in Haskell.

Link-uri:

Catre pagini istoria Haskell-ului ar merita adaugate cateva link-uri 
deoarece nu exista nimic in romaneste despre Istoria Haskell-ului in lume. Un link catre pagina mediului de programare Helium (numiti-l un instrument
didactic sau poate un Haskell jucarie - desi lipsesc putine din implementarea sa). Un link catre "Evolution of a Haskell Programmer", macar in rubrica de umor.

Rubrici:

Despre IO in Haskell. Deoarece Haskell trateaza diferit partea pur 
functionala a unui proiect si partea de IO, o asemenea rubrica ar fi binevenita. Despre legaturile dintre teoria categoriilor si Haskell am putea adauga multe. O rubrica de miniprobleme si miniexercitii. Materiale despre Utilizarea Monadelor inclusiv exemple mai deosebite -
de exemplu unele cu monada listelor.Si n-ar fi singurele. Practica Haskell. O rubrica pentru cei care simt nevoia de exemple practice.

. Biblioteci unde am trimis (si gasiti) carti despre Haskell

Deoarece cartile de Haskell s-au publicat in editii mai mici decat cele de C sau C++ va indicam bibliotecile unde le puteti gasi:

Iasi: BCU, Biblioteca Seminarului Matematic Al.Myller , Biblioteca Facultatii de Matematica / Informatica , cota III 7602 , catalog electronic.

Bacau: Biblioteca Judeteana, Sediul Central din Parcul Cancicov, exemplarul nr. 627194 cota 681.3 / P 79

Bucuresti: Ar trebui sa fie disponibila la Bib. Nationala deoarece editorul a trimis exemplarele pentru depozitul legal.


<= Inapoi la inceputul paginii principale Ro/Haskell