不用说,在Haskell标准建设
newtype Fix f = Fix { getFix :: f (Fix f) }
cata :: (Functor f) => (f a -> a) -> Fix f -> a
cata f = f . fmap (cata f) . getFix
是真棒,非常有用。
试图确定在阿格达了类似的事情(我把它只是为了完整性的缘故)
data Fix (f : Set -> Set) : Set where
mkFix : f (Fix f) -> Fix f
失败,因为f
不一定严格为正。 这是有道理的 - 我可以很容易地通过适当地选择得到这样的结构矛盾。
我的问题是:是否有在阿格达递归编码方案中的任何希望吗? 它是否已经完成? 要求是什么?