unfold/coiter
과 Control.Comonad.Cofree
및 unfold/ana
에서 Data.Control.Fixedpoint
사이의 차이점을 파악하려고합니다. Hackage 라이브러리가 있습니다. free
및 recursion-schemes
.동축 코모도어의 전개 할 수없는 인스턴스
Cofree
및 Fix
은 사촌 인 것처럼 보입니다. 나는 그 중 무엇이 가능하고 무엇이 가능한지 알아 내려고하고 있습니다.
unfold/coiter
에서 얻은 무료 모나드에
cata
을 적용 할 수 있습니다
Cofree
에 대한
Foldable
의 인스턴스를 작성할 수
:
type instance Base (Cofree f a) = f
instance Functor f => Foldable (Cofree f a) where
project = unwrap
하지만이 인스턴스를 만들 수 없습니다 :
instance Functor f => Unfoldable (Cofree f a) where
embed = xembed
xembed :: Functor f => f (Cofree f a) -> Cofree f a
xembed = undefined
을 전혀 가능합니까?
무료 모나드에는'project'를 쓸 수없고, 무료 모나드에는'embed '을 쓸 수 없다는 것을 의미합니까? – nponeccop
네, 저는 그것을 고쳤습니다. (그것은 자유로운 코모 나드가 아니라 자유로운 코모 나드입니다! :-)). 그러나 이제는이 클래스들이 실제로 무엇인지 살펴 보았습니다. 아마도 '기본'타입은 당신이 원하는 것이 아닙니다 (나는 당신이 그곳에서 무엇을하고 있는지 확실히 모릅니다). ''Freef''는'\ self -> (f self)의 고정 소수점이며'Free fa'는'f self '의 고정 소수점입니다. . – shachaf