Come noto, un numero naturale e' esprimibile in base agli assiomi di Peano usando il seguente tipo di dato:
datatype naturale = zero | successivo of naturale;Usando tale tipo di dato, la somma fra numeri naturali e' esprimibile come:
val rec somma = fn zero => (fn n => n) | successivo a => (fn n => successivo (somma a n));
Scrivere una funzione Standard ML, chiamata prodotto
,
che ha tipo naturale -> naturale -> naturale
, che
calcola il prodotto di due numeri naturali (IMPORTANTE: notare il
tipo della funzione!).
La funzione prodotto
deve essere definita in un file .sml
separato dalla
definizione del tipo di dato naturale
.
Si consegni il file .sml contenente
la definizione di prodotto
.
Si noti che la funzione prodotto
puo' usare la funzione
somma
nella sua implementazione. Non occorre ripetere la
definizione di somma
.
Ecco un esempio della prova teorica.