Un interprete astratto per l’inferenza dei tipi Contenuti l’inferenza dei tipi come interprete astratto denotazionale


L’astrazione delle funzioni data l’operazione concreta (non-collecting)



Scaricare 487 b.
Pagina8/12
29.03.2019
Dimensione del file487 b.
1   ...   4   5   6   7   8   9   10   11   12

L’astrazione delle funzioni

  • data l’operazione concreta (non-collecting)

  • let rec makefun (Fun(ii,aa),(x:eval env)) =

  • Funval(function d -> sem aa (bind (x, ii, d)))

  • nella versione astratta si dovrebbe

    • per ogni tipo ground i
      • dare a d il valorei
      • calcolare il tipo i = sem aa (bind(r,ii,d))
    • calcolare il glb di tutti i tipi funzionali risultanti:
      • lcg ({Mkarrow(i, i)})
  • può essere reso effettivo facendo una sola valutazione della semantica (astratta) del corpo, dando a d come valore una nuova variabile di tipo (elemento minimo)

    • operazione astratta (sbagliata!)
  • let rec makefun (Fun(ii,aa),(x:eval env)) = let d = newvar() in

  • let t = sem aa (bind (x, ii, d))) in Mkarrow(d, t)



Le variabili di tipo tipo

1   ...   4   5   6   7   8   9   10   11   12


©astratto.info 2019
invia messaggio

    Pagina principale