[Haskell-cafe] Getting the x out

Tony Morris tonymorris at gmail.com
Tue Apr 21 20:54:55 EDT 2009


You mean, the x out of *Maybe* x even. In the very literal sense, the
assumption that there is an x in "Maybe x" is false -- there may not be
one since it is maybe, but not necessarily, x. IT's a bit like the use
of null that you might have seen in other languages where you might have
a value or you might have null. What you can do however, is say "give me
the x if there is one, otherwise, use this value".

This is the fromMaybe function.

Prelude Data.Maybe> let safeDivision x y = if y == 0 then Nothing else
Just (x/y)
Prelude Data.Maybe> 3 + (42 `fromMaybe` safeDivision 10 5)
5.0
Prelude Data.Maybe> 3 + (42 `fromMaybe` safeDivision 10 0)
45.0



michael rice wrote:
> How do I get the x out of Just x?
>
> Michael
>
> =============
>
> safeDivision :: Float -> Float -> Maybe Float
> safeDivision x y = if y == 0 then Nothing else Just (x/y)
>
> *Main Data.List> safeDivision 10 5
> Just 2.0
> *Main Data.List> 3 + (safeDivision 10 5)
>
> <interactive>:1:0:
>     No instance for (Num (Maybe Float))
>       arising from a use of `+' at <interactive>:1:0-22
>     Possible fix: add an instance declaration for (Num (Maybe Float))
>     In the expression: 3 + (safeDivision 10 5)
>     In the definition of `it': it = 3 + (safeDivision 10 5)
> *Main Data.List>
>
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe
>   

-- 
Tony Morris
http://tmorris.net/




More information about the Haskell-Cafe mailing list