User Tools

Site Tools


laboratoare:06-aplicatii-cu-tda-uri

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:12]
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
 +
 +[[https://​github.com/​Programming-Paradigms/​Labs/​archive/​master.zip|Solutii]]
laboratoare/06-aplicatii-cu-tda-uri.1427724734.txt.gz · Last modified: 2015/03/30 17:12 by matei.popovici