9

無効な入力でエラーをスローする stdlib 関数がいくつかあります。例えば:

Prelude> read "1o2" :: Int
*** Exception: Prelude.read: no parse

代わりに a を返すようにラップしたいと思いEither e aます。どうやってやるの?

4

2 に答える 2

14

スプーンはありません。あなたは私からそれを聞いていませんでした。

ただし、この特定の例では、reads代わりにを使用する必要があります。

于 2012-06-07T07:01:51.043 に答える
2

エラーを値に変換することを好みます。

 maybeRead :: Read a => String -> Maybe a
 maybeRead s = case reads s of
      [(x, "")] -> Just x
      _         -> Nothing
于 2012-06-07T12:12:01.913 に答える