Concurrent Clean : シノニム型と全称量化変数

うーむ。微妙だ。

::Id :== A.a: a -> a

f :: Id Int String -> (Int, String)
f g i s = (g i, g s)

は型エラー。どうも、'A.a:'が認識されていないような雰囲気。

::Id a :== a -> a

f :: (A.a: Id a) Int String -> (Int, String)
f g i s = (g i, g s)

ならOK。

      • -

http://sky.zero.ad.jp/~zaa54437/programming/clean/LanguageReport21/Chap5.html#sc14

シノニム型定義 = ::型Lhs :== [全称量化変数] 型 ;

と書いてあるのに。
納得いかないので、MLに質問してみた。