[Haskell-beginners] Can I lift this interestingly typed function into a Maybe?
Kim-Ee Yeoh
ky3 at atamo.com
Thu Jan 24 16:24:55 CET 2013
On Thu, Jan 24, 2013 at 9:56 PM, Simon Peter Nicholls
<simon at mintsource.org>wrote:
> I'd like to convert this Maybe Document to a Maybe MyType without
> unpacking and repacking the Maybe. Is this possible?
>
That would be exactly
fmap :: (Document -> MyType) -> (Maybe Document -> Maybe MyType)
where I've instantiated the type variables for your use case.
> The fromBson function, that converts from a Document to an end user type,
> confuses me due to it's type:
>
> fromBson :: Monad<http://hackage.haskell.org/packages/archive/base/4.5.0.0/doc/html/Control-Monad.html#t:Monad> m
> => Document<http://hackage.haskell.org/packages/archive/bson/0.1.7/doc/html/Data-Bson.html#t:Document> ->
> m a
>
All the small, single letters are type variables. Because they are
implicitly universally quantified; you, the caller, gets to specify what
you want them to be. Written out in full, it's actually
fromBson :: forall (m :: * -> *), a. Monad m => Document -> m a
Here, again specializing for your use case, fromBson probably needs to be
of type
fromBson :: Document -> Maybe MyType
So if you have a rightEres :: Maybe Document
then
fmap fromBson rightEres :: Maybe (Maybe MyType)
which you could then
join $ fmap fromBson rightEres :: Maybe MyType
What you're really after is the more idiomatic
rightEres >>= fromBson :: Maybe MyType
HTH,
-- Kim-Ee
>
> Thanks,
> Si
>
>
> _______________________________________________
> Beginners mailing list
> Beginners at haskell.org
> http://www.haskell.org/mailman/listinfo/beginners
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/beginners/attachments/20130124/b0867d76/attachment.htm>
More information about the Beginners
mailing list