Hi Wallace,
yes, indeed. Now I see I mixed newtype with type in declaration, and forgot the
first one is a constructor.
-------- Original Message --------
Subject: Re: [Haskell-cafe] "Casting" newtype to base type?
From: Malcolm Wallace <[email protected]>
To: [email protected]
Cc: Haskell-Cafe <[email protected]>
Date: 01.07.2013 17:24
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
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe