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 16:59]
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
 +      * Tipul definit de voi va fi monomorfic sau polimorfic?
   - Inrolati tipul vostru in clasa ''​Show''​. Definiti explicit o reprezentare (usor de urmarit)   - Inrolati tipul vostru in clasa ''​Show''​. Definiti explicit o reprezentare (usor de urmarit)
   - Definiti o expresie formata cu intregi (care va fi folosita ulterior pentru testare)   - Definiti o expresie formata cu intregi (care va fi folosita ulterior pentru testare)
Line 14: Line 15:
       * scrieti signatura pentru ''​eval''​       * scrieti signatura pentru ''​eval''​
       * realizati implementarea efectiva       * realizati implementarea efectiva
-  - +  - 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?​ 
 +  - Inrolati tipul definit de voi in clasa ''​Show''​. 
 +  - Definiti o clasa (type-class) ''​Evaluable''​ care modeleaza faptul ca o 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 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.  
 +           * 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.1427723996.txt.gz · Last modified: 2015/03/30 16:59 by matei.popovici