User Tools

Site Tools


ex-l2

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
ex-l2 [2014/10/06 12:01]
giovanni.casu
ex-l2 [2015/10/08 15:20] (current)
Line 12: Line 12:
     - <code ocaml>​succ:​ int → int</​code>​ calcola il successore di un numero naturale     - <code ocaml>​succ:​ int → int</​code>​ calcola il successore di un numero naturale
     - <code ocaml>​pred:​ int → int</​code>​ calcola il predecessore di un numero naturale ​ (pred 0 = 0).     - <code ocaml>​pred:​ int → int</​code>​ calcola il predecessore di un numero naturale ​ (pred 0 = 0).
 +  - Utilizzando le funzioni di base definite al punto precedente, ​ definire le seguenti funzioni utilizzando la ricorsione. ​ E’ proibito utilizzare qualsiasi operatore aritmetico ​ (+, -, <, >, etc). E’ invece possibile (e consigliato) riutilizzare le funzioni che vengono definite man mano. 
 +    - ''​leq:​int → int → bool'',​ ''​leq n m''​ valuta ​ true se ''​n <= m'',​ false altrimenti 
 +    - ''​eq:​ int → int → bool'',​ valuta ''​true''​ se ''​n = m'',​ false altrimenti. 
 +    - ''​add:​ int → int → int'',​ calcola la somma di due numeri naturali. 
 +    - ''​sub:​int → int → int'',​ calcola la differenza tra due numeri naturali (''​sub n m = 0 if n<​m''​). 
 +    - ''​mul:​int → int → int'',​ calcola il prodotto di due numeri naturali.  
 +    - ''​pow:​int → int → int'',​ calcola la potenza di due numeri naturali (i.e. ''​pow n m = n<​sup>​m</​sup>''​). 
 +    - ''​ack:​int → int → int'',​ calcola la funzione di Ackermann ​       http://​en.wikipedia.org/​wiki/​Ackermann_function 
 +  - Dire che cosa calcoli la seguente funzione e scriverne la versione ​ tail-recursive<​code ocaml > 
 +  let rec f x =  if x=0 then 0 
 +                 else if x>0 then 1 + f (1-x) 
 +                      else 1 + f (-1-x);; 
 +</​code>​
ex-l2.txt · Last modified: 2015/10/08 15:20 (external edit)