Serialization of functions in Haskell

Viewed 1084

Is there a way to serialize (read/show) functions in Haskell?

For example given that:

:t (+1) 
(+1) :: Num a => a -> a

I wish to be able to have something like:

read "(+1)" :: Num a => a -> a

Unfortunately this throws an 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
2 Answers
Related