Czy istnieje sposób na serializację (odczyt/pokaz) funkcji w Haskell?Serializacja funkcji w Haskell
Na przykład biorąc pod uwagę, że:
:t (+1)
(+1) :: Num a => a -> a
Chciałbym móc mieć coś takiego:
read "(+1)" :: Num a => a -> a
niestety wyrzuca błąd:
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
To właśnie obszar, w którym Lisp dialekty świecić. –
Wczesny wariant Haskella - Utrwalony Haskell - dozwolone funkcje do serializowania. Nie jestem pewien, czy kiedykolwiek był on publicznie dostępny, ponieważ zależał od technologii opracowanej na Uniwersytecie St. Andrews w Szkocji w związku z uporczywym językiem Napier88. Nie czytałem tego dokładnie, ale najnowszy artykuł "W stronę Haskella w chmurze" zdaje się sugerować, że prace nad funkcjami serializacyjnymi dla programowania rozproszonego mogły rozpocząć się w głównej linii GHC. –
Jest rzeczywiście praca nad serializowaniem funkcji dla ghc, ale będzie ona ograniczona. – augustss