User Tools

Site Tools


laboratoare:06-aplicatii-cu-tda-uri
LDAP: couldn't connect to LDAP server

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
laboratoare:06-aplicatii-cu-tda-uri [2015/03/30 17:05]
matei.popovici
laboratoare:06-aplicatii-cu-tda-uri [2015/05/07 13:48] (current)
radu.stoenescu
Line 3: Line 3:
    <​expr>​ ::= <​valoare>​ | <​variabila>​ | <​expr>​ + <​expr>​ | <​expr>​ * <​expr>​ | (<​expr>​)    <​expr>​ ::= <​valoare>​ | <​variabila>​ | <​expr>​ + <​expr>​ | <​expr>​ * <​expr>​ | (<​expr>​)
    <​variabila>​ ::= string    <​variabila>​ ::= string
-   <​valoare>​ :: orice+   <​valoare>​ ::orice
        
-   <program> ::= <​variabila>​ = <​expr>​ | if <​expr>​ then <​prog>​ else <​prog>​ | <​prog>​ ; <​prog>​ | return <​variabila>​+   <prog> ::= <​variabila>​ = <​expr>​ | if <​expr>​ then <​prog>​ else <​prog>​ | <​prog>​ ; <​prog>​ | return <​variabila>​
 </​code> ​   </​code> ​  
   - Definiti un tip de date care codifica expresii ''<​expr>''​ generate de gramatica BNF de mai sus   - Definiti un tip de date care codifica expresii ''<​expr>''​ generate de gramatica BNF de mai sus
Line 15: Line 15:
       * scrieti signatura pentru ''​eval''​       * scrieti signatura pentru ''​eval''​
       * realizati implementarea efectiva       * realizati implementarea efectiva
-  - Definiti un tip de date care codifica expresii ''<​program>''​ generate de gramatica BNF de mai sus.+  - Definiti un tip de date care codifica expresii ''<​prog>''​ generate de gramatica BNF de mai sus.
       * Tipul definit de voi va fi monomorfic sau polimorfic?       * Tipul definit de voi va fi monomorfic sau polimorfic?
   - Inrolati tipul definit de voi in clasa ''​Show''​.   - Inrolati tipul definit de voi in clasa ''​Show''​.
-  - Definiti o clasa (type-class) care modeleaza ​**relatie** intre un **tip container** ​si un **tip continut** de containerul respectiv. ​Relatia specifica ​faptul ca tipul container poate fi evaluat, in raport cu interpretare ​pentru ​elemente ​de tipul continut ​de container.+  - Definiti o clasa (type-class) ​''​Evaluable'' ​care modeleaza ​faptul ca valoare ​**de tip //container//** poate fi evaluata la o valoare de **tipul continut** de containerul respectiv. ​ 
 +       * Clasa pune la dispozitie o singura operatie ''​eval''​ care generalizeaza operatia eval definita pentru expresii 
 +       * Realizati o instanta a ''​Evaluable''​ pentru constructorul de tip al ''<​expr>''​. Observati ​faptul ca implementarea procedurii de evaluare a fost realizata anterior. 
 +       * Realizati ​instanta a ''​Evaluable'' ​pentru ​constructorul ​de tip al ''<​program>''​. Mai exact, implementati evaluarea unui program. 
 +           * In implementare,​ observati ca interpretarea se modifica pe masura ce programul este evaluat.  
 +           * Asadar, aveti nevoie ​de o functie auxiliara, care construieste o interpretare,​ pe baza unui program 
 + 
 +[[https://​github.com/​Programming-Paradigms/​Labs/​archive/​master.zip|Solutii]]
laboratoare/06-aplicatii-cu-tda-uri.1427724317.txt.gz · Last modified: 2015/03/30 17:05 by matei.popovici