Question

Je développe une machine virtuelle pour les programmes purement fonctionnels, et je voudrais être en mesure de tester et utiliser la la grande variété de modules Haskell déjà disponibles. La machine virtuelle prend en entrée des termes essentiellement dans le calcul typées lambda. Je me demande ce qui serait une bonne façon d'extraire une telle représentation des modules Haskell modernes (par exemple. Avec MPTC de, gardes de motif, etc.). Je l'ai fait un peu de recherche et il ne semble pas être un outil qui le fait déjà (je serais ravi de se tromper), et c'est correct. Je suis à la recherche d'une approche.

GHC de base semble trop concentré sur le plan opérationnel, d'autant plus que l'une des choses la machine virtuelle fait est de changer de manière significative l'ordre d'évaluation. Y a-t-il des représentations intermédiaires accessibles qui correspondent plus étroitement au calcul lambda?

Était-ce utile?

La solution

Le noyau externe pour GHC est à peu près aussi proche du lambda-calcul que vous allez obtenir, en utilisant GHC. ici est un lien direct vers le type d'expression si vous voulez sauter à droite.

  • bibliothèque pour le traitement des fichiers de base externes
  • Comment noyau externe GHC
  • papier sur son utilisation

Autres conseils

EHC utilisé pour avoir ce flux entre les représentations:

HS -> EH -> de base -> Grin -> idiot

HS est évidemment Haskell, EH est moins sucré et utilisé par le vérificateur de type, Core est l'analogue au cœur de GHC et Grin et Silly niveau inférieur à celui.

Il y a un document décrivant l'architecture de EHC par Jeroen Fokker, où je cribbed ci-dessus à partir, mais il est probablement hors de ce jour (je ne sais pas que EHC utilise encore la représentation idiote). Je pense que EHC fournit des parseurs et des imprimantes jolies pour chacune de ses représentations internes, ce qui serait à portée de main.

Il y a aussi York.Core de SHY que j'ai vu des gens parlent plus favorablement alors GHC de base, mais je ne sais pas s'il y a un moyen de compilation Haskell « moderne » dans York.Core.

Hm ... Jamais entendu parler de Haskell noyau ? Je ne suis pas sûr de ce que vous avez besoin. Il est une sorte de Haskell désucrées, et est essentiellement défini dans le rapport Haskell. Je ne suis pas sûr que ce soit ce que vous avez besoin.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top