
1 Jul
2013
1 Jul
'13
11:24 a.m.
On 1 Jul 2013, at 16:07, Vlatko Basic wrote:
I had a (simplified) record
data P = P { a :: String, b :: String, c :: IO String } deriving (Show, Eq)
but to get automatic deriving of 'Show' and 'Eq' for 'data P' I have created 'newtype IOS' and its 'Show' and 'Eq' instances
newtype IOS = IO String
Not quite! That is a newtype'd String, not a newtype's (IO String). Try this: newtype IOS = IOS (IO String)
but now when I try to set 'c' field in
return $ p {c = readFile path}
I get error Couldn't match expected type `IOS' with actual type `IO String'
Use the newtype constructor to convert an IO String -> IOS. return $ p {c = IOS $ readFile path} Regards, Malcolm