に空でない構造をフォールディング私は変成を使用して、非空のバラの木のためFoldable.toListを書きたいが、最後の要素を抽出することが不可能だ: import Data.Functor.Foldable
data RoseTree a = RoseNode a [RoseTree a]
ana5 :: RoseTree a -> [a]
ana5 = ana coalg5
c
を使用するcataを使用すると、結果にASTを折り畳むことができます。 Cofreeを使用すると、ASTに追加の注釈を保存できます。どのようにしてASTを取得し、各ステップで結果とともに注釈付きASTを返すことができますか? alg :: Term Result -> Result
alg = undefined
run :: Fix Term -> Result
run ast = ca
数値の素因数分解を見つけるための小さなプログラムを作成しました。 main関数を除いてすべてコンパイルされているように見えますが、Show1インスタンスが見つからないという不満があります。 {-# LANGUAGE DeriveFunctor #-}
module FactorAnamorphism where
import Data.Functor.Foldable
import Da
フィボナッチ数のリストのエレガントなderinitionがあります: fibs :: [Integer]
fibs = fib 1 1 where
fib a b = a : fib b (a + b)
それはrecursion-schemesライブラリを使用するように変換することができますか? 私が得ることができる最も近いが完全に異なるアプローチを使用して、次のコードである。必要
で修正、ムーとニューの違いは何ですか、3つの宣言があります。 newtype Fix f = Fix (f (Fix f))
newtype Mu f = Mu (forall a. (f a -> a) -> a)
data Nu f where
Nu :: (a -> f a) -> a -> Nu f
は、これらの3つのデータ・タイプの違いは何ですか?