Types 递归归纳类型的不动点

Types 递归归纳类型的不动点,types,Types,我们可以将函子的不动点定义为(在Haskell/Agda-ish语法中): 我们可以将高阶函子的索引不动点定义为(索引类型为I): 我们能为递归归纳类型定义一个不动点吗?考虑到这个问题的存在,我觉得这应该是可以定义的 Fix : (* -> *) -> * data Fix F = In (F (Fix F)) IFix : ((I -> *) -> I -> *) -> I -> * data IFix F I = In (F (Fix F) I)

我们可以将函子的不动点定义为(在Haskell/Agda-ish语法中):

我们可以将高阶函子的索引不动点定义为(索引类型为I):

我们能为递归归纳类型定义一个不动点吗?考虑到这个问题的存在,我觉得这应该是可以定义的

Fix : (* -> *) -> *
data Fix F = In (F (Fix F))
IFix : ((I -> *) -> I -> *) -> I -> *
data IFix F I = In (F (Fix F) I)