forall
データ定義でパラメトリック型を持つように明示的に言う必要があるようです。たとえば、これ
data A = A (forall s. ST s (STUArray s Int Int))
この間に動作します
data A = A (ST s (STUArray s Int Int))
しません。
あまりにも明白なことを尋ねているのかもしれませんが、他のほとんどの場合forall
、パラメトリック型を明示的に指定する必要がないため、その理由は私には明らかではありません。コンパイラが代わりにそれを行います。では、ここでの違いは何ですか?