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@haskell.org > http://www.haskell.org/mailman/listinfo/haskell-cafe > -- Tony Morris http://tmorris.net/ _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe