IO (Maybe a)
a が のインスタンスである場所を返す (モジュール内の) 関数がありますSerialize
。
私のメインプログラムから、これを次のように呼び出します。
msg <- fun token
print msg
そしてエラーを取得します
Ambiguous type variable `a0' in the constraints:
(Data.Serialize.Serialize a0) arising from a use of `foo'
at test_00.hs:13:15-19
(Show a0) arising from a use of `print' at test_00.hs:17:9-13
Probable fix: add a type signature that fixes these type variable(s)
私は問題が何であるかを正確に知っており、次のように -XScopedTypeVariables とライブラリ関数の呼び出し方法をいくつか変更して修正できます。
(msg :: Maybe String) <- cwPop token
print msg
ただし、ScopedTypeVariables を避けたいと思います。msg が show クラスのメンバーであるかどうかをテストしてから出力する方法はどこにあるのか疑問に思います。そうでない場合は、何か他のことをしてください。