バグではないと思いますが、なぜうまくいかないのか少し不思議です。おまけの質問は、なぜ変数 e に言及しているのかということです。変数 e はありません。
前奏曲> :m +Control.Exception
プレリュード Control.Exception> handle (\_-> return "err") undefined
<インタラクティブ>:1:0:
制約内のあいまいな型変数「e」:
「例外 e」
<interactive>:1:0-35 での「ハンドル」の使用に起因する
考えられる修正: これらの型変数を修正する型シグネチャを追加します。
Prelude Control.Exception>
どうやら ghci 6.8 で問題なく動作するようです。私は 6.10.1 を使用しています。
編集:コードを最小化しました。6.8と6.10の両方で同じ結果になると思います
class C a
foo :: C a => (a -> Int)-> Int
foo _ = 1
arg :: C a => a -> Int
arg _ = 2
bar :: Int
bar = foo arg
それをコンパイルしようとしています:
[1/1] Main のコンパイル ( /tmp/foo.hs、解釈済み )
/tmp/foo.hs:12:10:
制約内のあいまいな型変数「a」:
/tmp/foo.hs:12:10-12 での「arg」の使用による「C a」
考えられる修正: これらの型変数を修正する型シグネチャを追加します。
失敗しました。モジュールがロードされました: なし。
Prelude Control.Exception>