[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:37:35 EDT 2010


Hi edgar,
the whole of my code and the input data are one contained world, I am 
not using mondas - as I don't understand them properly, and they seem 
not to be necessary for the simple algebra I am trying to develop. Do I 
really need to use them here?

Now, to your example:
 >>>Try for example in ghci: fromJust $ Just 1 >>= (\x -> return $ x + 1)
(I also had to search for definition of the $ operator, totally avoided 
in the two books I have, and seems to be just syntactic sugar instead of 
parentheses. Argh.)

this seems to be equivalent to fromJust (Just 1), where I would assuem a 
result of 1. But the example seems to be dependent on whatever x is 
entered by keyboard. Am I right?

Cheers
Martin

On 9/21/2010 3:19 PM, edgar klerks wrote:
> Also note that Maybe is a monad. So you don't have to use pattern 
> matching.
>
> You have to import the Data.Maybe to get the functions in the scope.
>
> On Tue, Sep 21, 2010 at 3:15 PM, edgar klerks <edgar.klerks at gmail.com 
> <mailto:edgar.klerks at gmail.com>> 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/e7615e35/attachment-0001.html


More information about the Beginners mailing list