[Haskell-beginners] help using Data.Map lookup - how to get values after the "Just" constructor

Martin Tomko martin.tomko at geo.uzh.ch
Tue Sep 21 09:28:49 EDT 2010


Thank you Edgar,
that helped a lot. I successfully implemented the fromJust option, I am 
not sure how to define the fromMaybe one, which seems superior. I would 
need two parameters (a and Maybe a, is that correct) but not sure how to 
get them.

Any link to understand this better is appreciated.

Apologies for being such a hopeless newbie.

Thanks
Martin

On 9/21/2010 3:15 PM, edgar klerks wrote:
> Hello Martin,
>
> You have two options. You can use fromJust :: Maybe a -> a, which is a 
> partial function, so it can fail if the supplied value is Nothing and 
> gives a hard to track down exception.
>
> Or you can use fromMaybe :: a -> Maybe a -> a,  which returns a 
> default a in case Maybe a = Nothing and a if Maybe a = Just a.
>
> There is also a third: maybe :: b -> (a -> b) -> Maybe a -> b, which 
> can be useful in the last step of some chain of functions. Note that 
> fromMaybe is just (flip maybe id).
>
> Greets,
>
> Edgar
>
> On Tue, Sep 21, 2010 at 3:05 PM, Martin Tomko <martin.tomko at geo.uzh.ch 
> <mailto:martin.tomko at geo.uzh.ch>> wrote:
>
>     Dear All,
>     as a newbie, I am only just discovering some intricacies of haskell.
>     I have a Data.Map map, and am trying the lookup function to get
>     the value for a given key (it is a list in my case, btw). I am
>     struggling to get access to the value, as it is constructed using
>     Just. I know that the question is therefore more general then the
>     application on Map, so I would be glad to get a wider picture. I
>     Checked in Real World Haskell, btu did nto find and answer. In
>     Haskell the craft of... I found the following (p263):
>
>     mapValue :: (a->b)-> Maybe a -> Maybe b
>     mapValue g (Just a) = Just (g a)
>     mapValue g Nothing = Nothing
>
>     Which is fine, but it makes the Just constructor travel through
>     the whole code, which is annoying. Is there a way out? Or would
>     that be a dirty hack?
>
>     I do not quite understand the following discussion of maybe
>     (p263-4), but it seems like the code suggested is able to return a
>     value at the end...
>
>     Thanks
>     Martin
>
>     _______________________________________________
>     Beginners mailing list
>     Beginners at haskell.org <mailto: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/20100921/bef73e28/attachment.html


More information about the Beginners mailing list