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