なぜ引数が解析できないときに関数read
が実行ファイルを終了するのですか?`read`関数に代わる完全な方法はありますか?
は、文字列がタイプa
に解析できなかった場合Nothing
を返すタイプString -> Maybe a
の機能を持っている方が便利だろうと私には思えるが、私はそれのような何かを見つけることができません。私は何が欠けていますか?
なぜ引数が解析できないときに関数read
が実行ファイルを終了するのですか?`read`関数に代わる完全な方法はありますか?
は、文字列がタイプa
に解析できなかった場合Nothing
を返すタイプString -> Maybe a
の機能を持っている方が便利だろうと私には思えるが、私はそれのような何かを見つけることができません。私は何が欠けていますか?
あなたが探している機能がreadMaybe
と呼ばれ、モジュールText.Read
に定義されています。
https://hackage.haskell.org/package/base-4.9.1.0/docs/Text-Read.html#v:readMaybe
これは、GHC 7.6以降で使用可能です。その前に、reads
を呼び出す必要がありました。これは、解析された値のリスト(可能性としては空の)を返し、パターンの一致を返します。
Preludeに 'readMaybe'を追加しました。[最近ライブラリーメーリングリストに登録しました](https://mail.haskell.org/pipermail/library/2016-December/027496.html)。 – Alec
私はHaskellについてよく分かりませんが、 'read'関数がどのように純粋であるのか理解できません。定義上*重要な*副作用があります。 –
@BasileStarynkevitch 'read'は入力から読み込みません。その引数を 'String'(Python' __str__'メソッドのように)に変換するだけです。 – chepner
Prelude( 'head'と' tail'を含む)のいくつかの関数の一つですが、これは総計されている可能性がありますが、単純化のために部分関数として定義されています。 – chepner