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


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



Scaricare 1.21 Mb.
Pagina5/12
29.03.2019
Dimensione del file1.21 Mb.
1   2   3   4   5   6   7   8   9   ...   12

| Fun(ii,aa) ->

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

  • | _ -> Unbound )

  • and applyfun ((ev1:eval),(ev2:eval)) =

  • ( match ev1 with

  • | Funval(x) -> x ev2

  • | _ -> Unbound)

  • and makefunrec (i, Fun(ii, aa), r) =

  • let functional ff d =

  • let r1 = bind(bind(r, ii, d), i, Funval(ff)) in

  • sem aa r1 in

  • let rec fix = function x -> functional fix x

  • in Funval(fix)



  • Dalla semantica concreta a quella collecting

    • la funzione di valutazione semantica concreta

      • sem: exp -> eval env -> eval
    • la funzione di valutazione semantica collecting

      • ha come codominio P(eval)
      • semc: exp -> eval env -> eval list
      • semc e r = [sem e r]
      • tutti gli operatori primitivi concreti devono essere pensati come definiti su P(eval)
      • esistono altre semantiche collecting (più concrete)
        • exp -> P(eval env -> eval)





    Condividi con i tuoi amici:
    1   2   3   4   5   6   7   8   9   ...   12


    ©astratto.info 2019
    invia messaggio

        Pagina principale