2017-06-30 13 views
2

種類*を持っているタイプの家族はこの単純なコードはコンパイルされません

import Data.Kind 
type family F (k :: Type) :: (t :: k) -> Type 

エラーメッセージは、これは実際の」家族を定義していることを私はいくつかの意味でもらう

• Expected a type, but ‘t’ has kind ‘k’ 
• In the kind ‘(t :: k) -> Type’ 

ですなぜこの制限が存在するのかわかりません。

でも同じセマンティクスはなく、同じ意味では使用できません。

+0

タイプの種類の「::」の右側にはありませんか?だから、最初のものは「kind tはsort kを持っている」と言っていますが、2番目のものは「tがkind kを持っています」と言います。 –

+0

TypeInTypeではすべて同じです。 –

+0

おそらく 'タイプファミリーF(k ::タイプ):: k - >タイプ'はあなたが望むものに近いでしょうか? – chi

答えて

3

結果のタイプにtという名前を付ける必要はありません。単純に使用することができます

type family F (k :: Type) :: k -> Type 
関連する問題