は、Haskellのウィキ帳のMonadPlusの章を読んでいた:https://en.wikibooks.org/wiki/Haskell/MonadPlusハスケルwikibook MonadPlusの潜在的なエラー
digit :: Int -> String -> Maybe Int
digit i s | i > 9 || i < 0 = Nothing
| otherwise = do
let (c:_) = s
if [c] == show i then Just i else Nothing
「doブロックは、任意の失敗パターンマッチは何も返さないことになることを保証します。」
しかし、私はdigit 1 ""
を試してみましたが、 "Nothing"の代わりに間違いのある実行時エラーを生成します。
(c:_) <- return s
を使用して回避できます。もしも誰かがhaskellで経験があれば、これを確認/明確にすることができれば素晴らしいだろう。
:
は最後に、ここでは上記のコードのよりコンパクトなバージョンです。 – ErikR