Personal tools

Sfaturi practice

From HaskellWiki

Revision as of 08:50, 6 February 2011 by Ha$kell (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search
Haskell - PIM


Sfaturi practice - Practica Interpretarii monadice

2009 decembrie 12 In aceasta saptamana studentii de la Univ. din Bacau au lucrat dupa volumul Practica Interpretarii Monadice la implementarea de parsere modulare. Cu aceasta ocazie am revizuit si codul din carte, descoperind unele Sfaturi practice care ar trebui adresate cititorilor capitolului al 5-lea. Iata-le:


In urma utilizarii capitolului 5 din volumul Practica Interpretarii Monadice de data aceasta cu WinHugs-2006.exe (capitolul fiind initial scris folosind Hugs 2002 pentru Linux ) si ulterior cu GHCI am observat cateva diferente de care trebuie sa tineti seama:

1. isDigit, isSpace, isAlpha sunt acum incluse in modulul Data.Char asa ca nu uitati sa includeti Data.Char cu import Data.Char

Cauza: In cursul evolutiei limbajului Haskell unele functii au fost mutate in biblioteci separate.

2. Capitolul 5 defineste un nou arbore, arborele Nop al instructiunii vide sau al codului sursa eronat. Totodata acesta este si reprezentarea "arborescenta" a unei (eventuale) instructiuni NOP sau SKIP care nu face nimic, daca doriti s-o includeti in limbaj.

Acest arbore totusi trebuie interpretat de functia interpretor de arbori. Asa ca in interpretorul de arbori interpret1 trebuie acum inclusa si varianta interpretarii arborelui Nop. Astfel, imediat dupa

Print e -> do { v <- eval1 e index ; output v}

adaugati ca Nop se interpreteaza prin (actiunea): return ()

Nop -> return ()


De ce a fost nevoie de aceasta: Deoarece doream ca si in cazul programelor scrise eronat sa se genereze un arbore care sa fie interpretat de interpretorul de arbori.

Este o chestiune simpla si trebuia lasata ca exercitiu dar nu apare nici la pagina cu exercitii din finalul capitolului.

3. WinHugs-2006.exe a dat o eroare la citirea parserului pentru digiti notat cu 3 de la pg 45, in dreptul '=' -ului din let. Eroarea este nejustificata, dupa parerea noastra.

Asa ca in final va recomand sa rescrieti parserul pentru numere cu mai multi digiti si care produce arbori Const. Este un bun exercitiu. O alta varianta a acestuia fost prezentata la curs.

Sau, la fel de bine, rulati codul cu GHCi ori cu Hugs pentru Linux, asa cum am facut si noi prima oara.

La urma urmei nu este o mare problema, avantajul major al acestor parsere modulare fiind tocmai acela ca putem oricand scoate unul din sistem si-l putem inlocui cu altul, mai bun. Service-ul de soft al limbajului este astfel asigurat cu costuri minime.

Ceea ce este foarte curios este faptul ca onorabilii profesori si conferentiari de la IOSUD UAIC carora le-a fost oferit din toamna volumul spre studiu, fiindu-le prezentat ca teza de doctorat nu au observat eroarea si nu au pus nici o intrebare tehnica referitoare la aceasta.Si nici la alte marunte greseli de tipar prezentate in Erata volumului. Cel putin asa rezulta din procesul verbal pe care l-au semnat.

De fapt onorabilii profesori si conferentiari de la IOSUD UAIC nu au pus nici o intrebare stiintifica despre continut, ceea ce ridica serioase semne de intrebare asupra actelor de evaluare a tezelor pe care le exercita IOSUD UAIC. Ce ne raspunde domnul Rector despre performantele subalternilor dumisale de la celebra Universitate Ieseana ? Cum reusesc acestia sa faca analiza si discutia in catedra a unor teze pe care ei par sa nu le fi citit ? Sau par sa le fi citit ? Cum ?