¿Hay alguna forma de serializar (leer/mostrar) funciones en Haskell?Serialización de funciones en Haskell
Por ejemplo teniendo en cuenta que:
:t (+1)
(+1) :: Num a => a -> a
Deseo ser capaz de tener algo como:
read "(+1)" :: Num a => a -> a
Desafortunadamente esto arroja un error:
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
Esta es precisamente una zona donde brillan dialectos Lisp. –
Una variante temprana de Haskell - Haskell persistente - permitió serializar las funciones. No estoy seguro de si alguna vez estuvo a disposición del público, ya que dependía de la tecnología desarrollada en la Universidad de St. Andrews (Escocia) para el lenguaje persistente Napier88. No lo leí de cerca, pero el reciente documento "Towards Haskell in the Cloud" parece sugerir que el trabajo sobre serialización de funciones para programación distribuida podría haber comenzado en el GHC principal. –
De hecho, hay trabajo en funciones de serialización para ghc, pero será limitado. – augustss