[解決済み] HaskellのPrelude.readはなぜMaybeを返さないのですか?
質問
Prelude.read の型が
read :: Read a => String -> a
を返すのではなく
Maybe
の値を返すのでしょうか?
read :: Read a => String -> Maybe a
この文字列はHaskellでパースできないかもしれないので、後者の方が自然ではないでしょうか?
あるいは
Either String a
であっても
Left
はパースされないと元の文字列を含むことになり
Right
はパースされた場合の結果を含むのでしょうか?
編集してください。
他の人に対応するラッパーを書いてもらおうとは思っていません。ただ、そうすることが安全であるという安心感を求めているだけです。
どのように解決するのですか?
編集
: GHC 7.6にて。
readMaybe
が利用できるようになりました。
Text.Read
モジュールと一緒に、基本パッケージの
readEither
:
http://hackage.haskell.org/packages/archive/base/latest/doc/html/Text-Read.html#v:readMaybe
素晴らしい質問です! 読み取りのタイプ自体は、すぐに変更されることはありません。しかし
は
があります。
maybeRead
関数でなければなりません。
なぜないのでしょうか?その答えは、"inertia"です。そこには の議論がありました。 という議論がありましたが、これは「失敗」についての議論で脱線しました。
良い知らせは、人々が十分に納得して、ライブラリの fail からの移行を開始したことです。悪い知らせは、その提案がどさくさに紛れて失われてしまったことです。そこで は はそのような関数であるべきですが、1つは書くのが簡単です (そして、多くのコードベースには非常に似たようなバージョンが何十億と浮かんでいます)。
参照 この議論 .
個人的には 安全なパッケージ .
関連
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン