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 _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe