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


l’ordinamento, le operazioni di lub e glb e la funzione di concretizzazione per eval si ottengono facilmente da quelle definite per evalt



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

l’ordinamento, le operazioni di lub e glb e la funzione di concretizzazione per eval si ottengono facilmente da quelle definite per evalt



Termini, Equazioni, Unificazione

  • adattiamo le operazioni viste sul tipo di dato termine alla particolare classe di termini evalt

  • introduciamo il tipo sostituzione (restituito dalle varie versioni dell’unificazione)

  • type subst = Fail

  • | Subst of (evalt * evalt) list

  • supponiamo di avere le operazioni

  • val unifylist : (evalt * evalt) list -> subst

  • val applysubst : subst -> evalt -> evalt

  • supponiamo di avere anche le operazioni

  • val newvar : unit -> evalt

  • val abstreq : eval * eval -> bool



Un tipico operatore astratto

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


©astratto.info 2019
invia messaggio

    Pagina principale