原始的核心運動

同態模型原始核心運動。在展開的每次迭代中,展開函式可以返回新種子或整個子樹。

apo::Functor f => (a -> f (Either (Fix f) a)) -> a -> Fix f
apo f = Fix . fmap (either id (apo f)) . f

請注意,apopara雙重的。翻轉中的箭頭; para 中的元組與 apo 中的 Either 是雙重的,並且實現是彼此的映象。