목록에 비어 있지 않은 구조를 펼쳐 것은 anamorphism를 사용하여 나무 장미,하지만 마지막 요소를 추출하는 것은 불가능 보인다 실제로 불가능은'비 비어에 대한 <code>Foldable.toList</code>을 기록 할
import Data.Functor.Foldable
data RoseTree a = RoseNode a [RoseTree a]
ana5 :: RoseTree a -> [a]
ana5 = ana coalg5
coalg5 :: RoseTree a -> ListF a (RoseTree a)
coalg5 (RoseNode a []) = Nil
coalg5 (RoseNode a (RoseNode b1 b2:t)) = Cons a $ RoseNode b1 (b2 ++ t)
인가를하고 그것을 수행 비어 있지 않은 모든 구조로 일반화 할 수 있는가?
Fix f -> Fix g
을 f-algebras를 사용하여 구현할 수 있지만 g-coalgebras를 사용할 수없는 경우를 결정하는 일반적인 규칙은 무엇입니까 (선택 사항 보너스 질문의 한 종류입니까?).
Btw는 apomorphism는 일 :
coalg6 (RoseNode a []) = Cons a $ Left []
coalg6 (RoseNode a (RoseNode b1 b2:t)) = Cons a $ Right $ RoseNode b1 (b2 ++ t)
apo coalg6
가 ana5
과 같은 유형이 있지만, 당신은 당신의 자신의 질문에 대답했습니다