2
私は以下を試して、うまくいった。ghciで無効な整数を読む
ghci> read "1232" :: Int
1232
もちろん、以下は無効ですが、エラーメッセージは直感的ではありません。
ghci> read "12 32" :: Int
Stopped in <exception thrown>, <unknown>
_exception :: e = _
Unable to list source for <unknown>
Try rerunning with :trace, :back then :list
ghci> _exception
<interactive>:21:1: error:
? No instance for (Show e) arising from a use of ‘print’
Cannot resolve unknown runtime type ‘e’
Use :print or :force to determine these types
Relevant bindings include it :: e (bound at <interactive>:21:1)
These potential instances exist:
instance (Show b, Show a) => Show (Either a b)
-- Defined in ‘Data.Either’
instance Show Ordering -- Defined in ‘GHC.Show’
instance Show Integer -- Defined in ‘GHC.Show’
...plus 23 others
...plus 28 instances involving out-of-scope types
(use -fprint-potential-instances to see them all)
? In a stmt of an interactive GHCi command: print it
実行時エラーのような結果が期待されていましたが、どのようにしてこの問題が発生するのか分かりません。この例外に対するロジックはありますか?
この欠落しているインスタンスは、実際には例外です。あなたが例外を有効にしてブレークした場合、それを無効にすると 'Prelude.read:no parse'が得られます – luqui