へぇ、というか別に珍しいものでもない気が、と思うけど、そんなものが用意されているとはなぁ。
Haskell でやる場合はどうするか、 Maybe とかモナドとかいろいろ調べて mplus を使えば行けるのか、とかいろいろやってみた末の結論は、
flip fromMaybe で万全
ということでした(むろん、遅延評価言語なので foo が Just なら bar は評価されないし)。
(??) :: Maybe a -> a -> a (??) = flip fromMaybe infixr 9 ??
Maybe をモナドとして考えて >>= を使うとなると、「Just のあいだはどんどん評価していくけど途中で Nothing になったら評価はしないで最終的に値が Nothing」ということなので意味が逆なのですね。それでいろいろ考えてしまったよ。