6
に空でない構造をフォールディング私は変成を使用して、非空のバラの木のためFoldable.toList
を書きたいが、最後の要素を抽出することが不可能だ:リスト
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では実装できない場合は、一般的なルールがありますか?
はところで働いapomorphism:
coalg6 (RoseNode a []) = Cons a $ Left []
coalg6 (RoseNode a (RoseNode b1 b2:t)) = Cons a $ Right $ RoseNode b1 (b2 ++ t)
apo coalg6
はana5
と同じ型を持っていますが、あなたはあなた自身の質問に答えてきた一つの要素