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
pp:2024:tema3 [2024/05/01 13:41]
tpruteanu
pp:2024:tema3 [2024/05/03 09:49] (current)
tpruteanu
Line 2: Line 2:
  
 <​note>​ <​note>​
-Schelet: ​TODO+Schelet: ​{{:​pp:​2024:​lambda-interpreter.zip|}}
 </​note>​ </​note>​
  
Line 144: Line 144:
 În fișierul ''​Default.hs''​ sunt deja definiti câțiva combinatori. Definiții restul expresiilor. În fișierul ''​Default.hs''​ sunt deja definiti câțiva combinatori. Definiții restul expresiilor.
  
-**4.1.** (//5p//) Definiți ca expresii lambda câteva macro-uri utile pentru lucrul cu Booleene (''​TRUE'',​ ''​FALSE'',​ ''​AND'',​ ''​OR'',​ ''​NOT'',​ ''​XOR''​).+**4.1.** (//6p//) Definiți ca expresii lambda câteva macro-uri utile pentru lucrul cu Booleene (''​TRUE'',​ ''​FALSE'',​ ''​AND'',​ ''​OR'',​ ''​NOT'',​ ''​XOR''​).
  
-**4.2.** (//5p//) Definiți ca expresii lambda câteva macro-uri utile pentru lucrul cu perechi (''​PAIR'',​ ''​FIRST'',​ ''​SECOND''​).+**4.2.** (//4p//) Definiți ca expresii lambda câteva macro-uri utile pentru lucrul cu perechi (''​PAIR'',​ ''​FIRST'',​ ''​SECOND''​).
  
 **4.3.** (//5p//) Definiti ca expresii lambda câteva macro-uri utile pentru lucrul cu numere naturale (''​N0'',​ ''​N1'',​ ''​N2'',​ ''​SUCC'',​ ''​PRED'',​ ''​ADD'',​ ''​SUB'',​ ''​MULT''​). **4.3.** (//5p//) Definiti ca expresii lambda câteva macro-uri utile pentru lucrul cu numere naturale (''​N0'',​ ''​N1'',​ ''​N2'',​ ''​SUCC'',​ ''​PRED'',​ ''​ADD'',​ ''​SUB'',​ ''​MULT''​).
Line 158: Line 158:
  
 La finalul temei, puteți rula ''​runhaskell main.hs''​ pentru a vedea aplicația creată de voi :). O să pornească un **REPL** în care puteți scrie expresii lambda pentru a le evalua (main-ul se folosește de evaluarea normală implementată de voi), puteți crea binding-uri noi sau folosi binding-uri din contextul default creat. La finalul temei, puteți rula ''​runhaskell main.hs''​ pentru a vedea aplicația creată de voi :). O să pornească un **REPL** în care puteți scrie expresii lambda pentru a le evalua (main-ul se folosește de evaluarea normală implementată de voi), puteți crea binding-uri noi sau folosi binding-uri din contextul default creat.
 +
 +Există și câteva comenzi utile:
 +  * '':​q''​ - pentru a ieși din **REPL**
 +  * '':​r''​ - pentru a sterge contextul, reluând contextul default
 +  * '':​ctx''​ - pentru a afișa contextul curent
  
 ===== Punctare ===== ===== Punctare =====
Line 177: Line 182:
     * 5p - **3.3.** parsarea liniilor de cod     * 5p - **3.3.** parsarea liniilor de cod
   - Code   - Code
-    * 5p - **4.1.** expresii boolene +    * 6p - **4.1.** expresii boolene 
-    * 5p - **4.2.** expresii perechi+    * 4p - **4.2.** expresii perechi
     * 5p - **4.2.** expresii numere naturale     * 5p - **4.2.** expresii numere naturale