
[I've switched my response to the Haskell-cafe list] What do you intend if both (get a) and (get b) return Nothing? You might also be interested in the library function 'maybe': http://www.haskell.org/onlinereport/standard-prelude.html#$vmaybe or maybe (sic) Maybe.fromMaybe in: http://www.haskell.org/onlinereport/maybe.html Using one of these, I think your function could reasonably be expressed as a simple one-liner. #g -- At 19:33 04/02/05 +0100, Yuri D'Elia wrote:
Hi all. I'm experimenting with haskell and its type system. I've done a function which scans a list, and returns "Just a" value if the element is found, or Nothing.
get :: a -> Maybe a
and implemented
getAorB :: Maybe a -> Maybe a -> a getAorB a b = ...
a function which returns "Just (get a)" or "Just (get b)" if (get a) is Nothing (excluding failures in both). By now, I've implemented it in terms of pattern matching:
getAorB a b = f (get a) (get b) where f (Just a) Nothing = a f Nothing (Just a) = a
but I'd like to know if there are other possible ways to do it, possibly without enforcing an evaluation order like pattern matching does.
_______________________________________________ Haskell mailing list Haskell@haskell.org http://www.haskell.org/mailman/listinfo/haskell
------------ Graham Klyne For email: http://www.ninebynine.org/#Contact