Esercizio
description
Transcript of Esercizio
EsercizioEsercizio
Si sciva in CAML una fuzione DIV che calcoli la divisione interasui naturali (zero incluso). La funzione deve risultare indefinitaallorchè applicata come in (DIV n 0), per ogni n≥0, con n dividendo e 0 divisore. Un volta scritta, la si esegua sulla macchina CAML per le seguentiapplicazioni:
DIV 3 5;; DIV 18 3;; DIV 3 0;; DIV 0 0;;
Una soluzione
DIV dd ds = if (dd-ds)≥0then 1+DIV(dd-ds)dselse 0
Caml Light version 0.74
#let rec DIV dd ds = if (dd-ds) >= 0 then 1+DIV(dd-ds)ds else 0;;DIV : int -> int -> int = <fun>
#DIV 3 5 ;;- : int = 0#DIV 18 3;;- : int = 6#DIV 3 0;;Uncaught exception: Out_of_memory#f 0 0;;Uncaught exception: Out_of_memory
@@dd ds
≥≥
IFTEIFTE
++ 00
11-- 00@@
++ 00
1100@@
++
11 ++
11
grafo della funzione DIVDIV
DIV 0 0DIV 0 0: grafo dell’espressione dopo la 3^ riduzione di grafo
Memoria a struttura Memoria a struttura di grafo di grafo