You could always just put it into your newtype:
newtype IOS = IOS {
unIOS :: IO String
}
On Tue, Jul 2, 2013 at 9:31 AM, Vlatko Basic <[email protected]> wrote:
>
>
> -------- Original Message --------
> Subject: Re: [Haskell-cafe] "Casting" newtype to base type?
> From: Tom Ellis <[email protected]>
> To: [email protected]
> Date: 02.07.2013 15:25
>
>> On Tue, Jul 02, 2013 at 03:03:08PM +0200, Vlatko Basic wrote:
>>>
>>> Is there a nicer way to extract the 'IO String' from 'IOS',
>>> without 'case' or without pattern matching the whole 'P'?
>>>
>>> newtype IOS = IOS (IO String)
>>> data P = P {
>>> getA :: String,
>>> getB :: String,
>>> getC :: IOS
>>> } deriving (Show, Eq)
>>>
>>>
>>> getC_IO :: P -> IO String
>>> getC_IO p =
>>> case getC p of
>>> IOS a -> a
>>> getC_IO (P _ _ (IOS a)) = a
>>
>>
>> How about
>>
>> unIOS :: IOS -> IO String
>> unIOS (IOS a) = a
>>
>> getC_IO :: P -> IO String
>> getC_IO = unIOS . getC
>>
> Thanks for your answer.
> I had those two funcs, but thought there might be a shorter/prettier
> one-func one-liner. :-)
>
>
>> Tom
>>
>> _______________________________________________
>> Haskell-Cafe mailing list
>> [email protected]
>> http://www.haskell.org/mailman/listinfo/haskell-cafe
>>
>
> _______________________________________________
> Haskell-Cafe mailing list
> [email protected]
> http://www.haskell.org/mailman/listinfo/haskell-cafe
_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe