looking for data structure advice

Samuel Tardieu sam at rfc1149.net
Mon Dec 15 13:50:47 EST 2003

>>>>> "David" == David Roundy <droundy at abridgegame.org> writes:

David> My or_maybe is just defined as

David> or_maybe (Just e) _ = Just e or_maybe Nothing f = f

David> which is pretty simple, so you can run a series of calculations
David> (assuming you want to keep the first that has a non-Nothing
David> result) using

David> f = a `or_maybe` b `or_maybe` c

The advantage of using "mplus" rather than "or_maybe" is that you can

  f = a `mplus` b `mplus` c

and that it will also work with other MonadPlus instances. For
example, if you decide that you want to keep several results and work
with "[a]" rather than "Maybe a", your "f" function will work as-is
and will concatenate the different results.

While "Maybe a" holds zero or one value, "[a]" holds zero or more
values. Switching between both can something be very practical for
functions reuse.

Samuel Tardieu -- sam at rfc1149.net -- http://www.rfc1149.net/sam

More information about the Haskell-Cafe mailing list