Existe-t-il un moyen de sérialiser (lire/afficher) des fonctions dans Haskell?Sérialisation des fonctions dans Haskell
Par exemple étant donné que:
:t (+1)
(+1) :: Num a => a -> a
Je veux être en mesure d'avoir quelque chose comme:
read "(+1)" :: Num a => a -> a
Malheureusement, cela renvoie une erreur:
Could not deduce (Read (a -> a)) arising from a use of `read'
from the context (Num a)
bound by an expression type signature: Num a => a -> a
at <interactive>:1:1-30
Possible fix:
add (Read (a -> a)) to the context of
an expression type signature: Num a => a -> a
or add an instance declaration for (Read (a -> a))
In the expression: read "(+1)" :: Num a => a -> a
In an equation for `it': it = read "(+1)" :: Num a => a -> a
C'est précisément une zone où les dialectes Lisp brillent. –
Une première variante de Haskell - Haskell persistant - permet de sérialiser les fonctions. Je ne suis pas sûr si c'était disponible publiquement car cela dépendait de la technologie développée à l'Université St. Andrews (Ecosse) pour le langage persistant Napier88. Je ne l'ai pas lu de près, mais le récent article "Vers Haskell dans le nuage" semble suggérer que le travail sur les fonctions de sérialisation pour la programmation distribuée pourrait avoir commencé dans le GHC principal. –
Il y a effectivement du travail sur les fonctions de sérialisation en cours pour ghc, mais ce sera limité. – augustss