Esercizio

Post on 17-Jan-2016

31 views 0 download

description

Esercizio. Si sciva in CAML una fuzione DIV che calcoli la divisione intera sui naturali (zero incluso). La funzione deve risultare indefinita allorchè 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 seguenti - PowerPoint PPT Presentation

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