
On Thu, Jan 24, 2013 at 9:56 PM, Simon Peter Nicholls
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 :: Monadhttp://hackage.haskell.org/packages/archive/base/4.5.0.0/doc/html/Control-Mo... m => Documenthttp://hackage.haskell.org/packages/archive/bson/0.1.7/doc/html/Data-Bson.ht... -> 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@haskell.org http://www.haskell.org/mailman/listinfo/beginners