Rodin/Lista de sugestii si subtilitati cunoscute

From HaskellWiki
< Rodin
Revision as of 10:01, 29 January 2010 by Ha$kell (talk | contribs)
Jump to navigation Jump to search


== Cautati intai la Rodin/FAQ si Rodin/Ce Sa Fac daca intampinati dificultati.

Subtilitati ale limbajului Rodin. updated: 10 sept.2008

Subtilitati tehnice interne si teste interne

Treceti mai bine la punctul urmator daca nu aveti sursa la dispozitie.

Subtilitati si artificii de scriere

S2) Puneti spatiu dupa do la do while . Obligatoriu.
La fel si la versiunea care foloseste cuvinte cheie romanesti


S3) 12+(\\ y . y) (4+4) -- nu puneti spatii linga plusuri si alti operatori.

   Valabil si pentru comparatii: <,>, ==, !=





S4) Daca incercati sa folositi o atribuire pe post de expresie,

si o puneti in paranteza inchideti paranteza imediat, fara spatii:



H:\_Parsec_Modular>MainV03.exe Rodin2.hs

{ let y =2;

  let x=100;

  while (x>10)

    let x=x-(let y = 1 );

  print x;

  print y;

}









H:\_Parsec_Modular>MainV03.exe Rodin2.hs

{ let y =2;

  let x=100;

  while (x>10)

    let x=x-(let y = 1);

  print x;

  print y;

}





S5) \" este " ca si in C

Deci mesajul:



unexpected "\""

expecting space or expresion



inseamna ca a gasit o " neasteptata in string-ul de intrare







S6) Recomandare: Desi in teorie numele variabilelor

poate sa inceapa cu orice litera, Rodin nu accepta (cel putin acest prototip)

variabile care incep cu aceeasi litera ca si cuvintele cheie. 

(deoarece are un fel de scannerless parser).

NU FOLOSITI VARIABILE CARE INCEP LA FEL CA SI

CUVINTELE CHEIE, cu: d a c f p r s t

sau prefixati variabilele cu o litera

cum ar fi m.  



myif = "daca"

mythen = "atunci"

myelse = "altfel"



mylet = "fie"



mywhile = "cat timp" 

mywhile2 = "pina cand" 

mydo = "socoteste"

myprint = "scrie"

myread = "tasteaza"

mybegin = "{"

myend = "}"

myrepeat = "repeta"

myuntil = "pina cand"

myfor = "pentru"



Asa este insa gresit:

G:\_Rodin>MainV05-Ro Rodin-Ro-cmmdcLuc.txt

{ tasteaza a;

  tasteaza b;

  fie deimp=a;

  fie imp=b;

  cat timp (imp!=0)

    { fie rest=deimp/imp;

      fie deimp=imp;

      fie imp=rest;

     };

  cmmdc=deimp;

  scrie cmmdc;

};

MainV05-Ro: (line 6, column 16):

unexpected "e"

expecting "daca"

Observati confuzia dintre daca si deimp.





s7) Nu incepeti programul cu un rand liber ! 

va da eroare gasind acel Enter.



s8) Puneti imediat ; dupa atribuirea

 fie x=0; asa si nu fie x=0 ;



s9) dupa "socoteste" deschideti pe acelasi rand acolada,

   puneti un spatiu (macar) intre socoteste si acolada



s10)

Rodin-7/8/2008

{ tasteaza a;

  tasteaza b;

  fie undeimp=a;

  fie unimp=b;

  executa 

    { fie unrest=undeimp/unimp;

      fie undeimp=unimp;

      fie unimp=unrest;

     };

  cat timp (unimp != 0)

  scrie undeimp;

};



In instructiunea: "executa { ... } atat cat ( ... )"

punct si virgula pus dupa acolada e semnalat ca eroare.

iar al doilea set de cuvinte cheie este "atat cat" nu "cat timp" .

Ca urmare eroarea este semnalata asa:



G:\_Rodin>MainV05-Ro Rodin-Ro-cmmdcLuc.txt -mem

{ tasteaza a;

  tasteaza b;

  fie undeimp=a;

  fie unimp=b;

  executa

    { fie unrest=undeimp/unimp;

      fie undeimp=unimp;

      fie unimp=unrest;

     };

  cat timp (unimp != 0)

  scrie undeimp;

};

MainV05-Ro: (line 9, column 7):

unexpected ";"

expecting operator, space or "atat cat"



s11) In instructiunea 

repeta ... pana cand ....

nu apare nici un i.



Desi e enervant sa scrii "pana" in loc de "pina".

Dar hai sa facem cumva pe placul Academiei. :)



s12) Nu aveam operator modulo, pina la RodinV05-Ro si RodinV05-En.

acum avem unul, notat %. astfel ca ar trebui 10 % 3 sa dea 1.



s13) Preferati pentru lambda expresii (functii anonime)

forma (\x.x+1) si nu cea cu -> deoarece se confunda -> cu -,

neavand analizor lexical. Rodin 05,06,07



s14) Expresia a III-a din paranteza buclei cu numar cunoscut de iteratii

si cu corpul buclei erau inversate, pina la Rodin V06 inclusiv.

UPGRADATI la ultima versiune Rodin din rubrica [[Rodin/Download]]] pentru a putea preda bucle cu numar cunoscut de iteratii. 


s15) Atentie, una din versiunile mai vechi ale Limbajului foloseste "socoteste" alta "executa".

Orientati-va dupa numarul ei si data de lansare pentru a le deosebi. 

Sper sa nu gresesc afirmand asa ceva.

Pagina este in dezvoltare. Back pentru a reveni la pagina principala Rodin.