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:33]
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) ''​Evaluable''​ care modeleaza ​**relatie** intre un **tip container** ​si un **tip continut** de containerul respectiv.  +  - 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. ​
-       * Relatia specifica faptul ca tipul container poate fi evaluat, in raport cu o interpretare pentru elemente de tipul continut de container.+
        * Clasa pune la dispozitie o singura operatie ''​eval''​ care generalizeaza operatia eval definita pentru expresii        * 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>''​, si un tip generic. Observati faptul ca implementarea procedurii de evaluare a fost realizata anterior. +       * Realizati o instanta a ''​Evaluable''​ pentru constructorul de tip al ''<​expr>''​. Observati faptul ca implementarea procedurii de evaluare a fost realizata anterior. 
-       * Realizati o instanta a ''​Evaluable''​ pentru constructorul de tip al ''<​program>''​, si un tip generic. Mai exact, implementati evaluarea unui program.+       * Realizati o 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. ​            * 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            * 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.1427726008.txt.gz · Last modified: 2015/03/30 17:33 by matei.popovici