Pregunta

Estoy desarrollando una máquina virtual para los programas puramente funcionales, y me gustaría ser capaz de probar y usar el la gran variedad de módulos de Haskell ya disponibles. El VM toma como entrada esencialmente términos en el cálculo lambda sin tipo. Me pregunto lo que sería una buena manera de extraer una representación de tales módulos de Haskell modernos (por ejemplo. Con MPTC de, guardias de patrones, etc.). Hice un poco de investigación y no parece ser una herramienta que hace esto ya (Me encantaría estar equivocado), y que está bien. Estoy buscando un acercamiento.

GHC Core parece centrado demasiado operacionalmente, sobre todo porque una de las cosas de la máquina virtual hace es cambiar el orden de evaluación de manera significativa. ¿Hay representaciones intermedias accesibles que se corresponden más estrechamente con el cálculo lambda?

¿Fue útil?

Solución

El núcleo externo para GHC es lo más cercano al cálculo lambda como se va a conseguir, utilizando GHC. Aquí es un enlace directo al tipo de expresión si se quiere saltar a la derecha.

Otros consejos

EHC solía tener este flujo entre las representaciones:

HS -> EH -> Core -> GRIN -> tonto

HS obviamente Haskell, EH es menos azúcar y utilizado por el comprobador de tipos, Core es el análogo al núcleo de GHC y La mueca y tonto son de nivel bajo que eso.

Hay un artículo que describe la arquitectura de EHC por Jeroen Fokker, donde he cribbed de lo anterior, pero es probable que fuera de fecha (no sé que EHC sigue utilizando la representación tonto). Creo que EHC ofrece analizadores e impresoras bonitas para cada una de sus representaciones internas, lo que sería muy útil.

También hay York.Core de YHC la que he visto personas hablan más favorable del entonces GHC Core, pero no sé si hay un medio de compilación "moderna" en Haskell York.Core.

Hm ... ¿Has oído hablar de la Haskell Kernel ? No estoy seguro de lo que necesita. Es una especie de Haskell desazucaradas, y se define esencialmente en el informe de Haskell. No estoy seguro de si esto es lo que necesita.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top