Domanda

sto sviluppando una macchina virtuale per programmi puramente funzionali, e desidero poter prova e utilizzando l'ampia varietà di moduli Haskell già disponibili. Il VM prende come input essenzialmente termini del lambda calcolo tipizzato. Mi chiedo che cosa sarebbe un buon modo per estrarre la rappresentazione tale da moderni moduli Haskell (ad es. Con MPTC di, guardie del modello, ecc). Ho fatto una piccola ricerca e là non sembra essere uno strumento che fa questo già (sarei felice di essere in errore), e va bene così. Sto cercando un approccio.

GHC core sembra troppo operativamente concentrata, soprattutto perché una delle cose che la VM non è quello di cambiare l'ordine di valutazione in modo significativo. Ci sono delle rappresentazioni intermedie accessibili che corrispondono più da vicino al lambda calcolo?

È stato utile?

Soluzione

Il Core esterno per GHC è quanto di più vicino al lambda calcolo, come si sta andando ad ottenere, utilizzando GHC. Qui è un link direttamente al tipo di espressione se si desidera passare a destra in.

  • Libreria per l'elaborazione di file di base esterni
  • generare nucleo esterno GHC
  • carta su il suo utilizzo

Altri suggerimenti

EHC usato per avere questo flusso tra le rappresentazioni:

HS -> EH -> core -> Grin -> sciocco

HS è ovviamente Haskell, EH è meno zuccherina e utilizzato per il tipo di controllo, Core è l'analogo di Core GHC e Grin sciocco e sono livello inferiore a quello.

C'è un documento che descrive l'architettura di EHC da Jeroen Fokker, dove ho cribbed quanto sopra da, ma è probabilmente da aggiornare (non so che EHC utilizza ancora la rappresentazione sciocco). Penso che EHC fornisce un parser e stampanti belle per ciascuna delle sue rappresentazioni interne, che sarebbe a portata di mano.

C'è anche York.Core da YHC che ho visto la gente parla più favorevole dell'allora GHC core, ma non so se v'è un mezzo di compilazione Haskell "moderna" in York.Core.

Hm ... Mai sentito parlare del Haskell Kernel ? Non sono sicuro di quello che ti serve. E 'una specie di private degli zuccheri Haskell, ed è essenzialmente definito nella relazione Haskell. Non sono sicuro se questo è quello che ti serve.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top