関数型プログラミング言語Haskell Part24
■ このスレッドは過去ログ倉庫に格納されています
0355デフォルトの名無しさん
2013/11/24(日) 14:22:52.50import Control.Monad.Par
data TestT a = TestD a
f x = do
var <- new
put var (TestD x)
return var
この関数 f の型は f :: NFData (TestT a) => a -> Par (IVar (TestT a)) です。
TestT a 型が型クラス NFData のインスタンスであるという文脈を指定するのは分かります。
put 関数はその引数として NFData のインスタンス型(とそれを型変数としたIvar型)の値を取り、
ここでは put 関数に TestT a 型(および IVar (TestT a) 型)の値に適用しているので。
しかし、まだ TestT a 型を型クラス NFData のインスタンスとして定義してはいません。
それにも関わらず、なぜかエラーもなくコンパイルが通ってしまいます。
どうしてでしょうか?
GHC のバージョン : 7.6.3
■ このスレッドは過去ログ倉庫に格納されています