fold

    10

    2答えて

    Data.Treeの深さを計算するには最小限の(最も一般的な)情報が必要ですか? Data.Foldableのインスタンスは十分ですか? 私は最初にfoldをTreeにしようとしましたが、Maxに似た正しいMonoidを見つけようとしました。 (1 + maxChildrenDepthのように)Monoid(深さを計算する)は結合する必要があるため、おそらく構造を認識する必要のある折り畳みを表現す

    5

    2答えて

    私はlearnyouahaskell.comを読んでおり、現在フォールドを調査中です。この本では、これらの例があります maximum' :: (Ord a) => [a] -> a maximum' = foldr1 (\x acc -> if x > acc then x else acc) reverse' :: [a] -> [a] reverse' = foldl (\acc x

    7

    2答えて

    ジョン・ヒューズは、Why Functional Programming Matters題した彼の有名な論文では、リストや注文したラベル付き木ため listof * ::= Nil | Cons * (listof *) treeof * ::= Node * (listof (treeof *)) と foldtreeと呼ばれる機能を、データ型について説明し foldtree f g a (

    7

    2答えて

    ハスケルのfoldr(たとえば、Java構文を使用)にはList<T>が使用され、任意のタイプ(<T>、List<T>など)が返されます。 evens :: [Integer] -> [Integer] evens = foldr (\ x acc -> if mod x 2 == 0 then x : acc else acc) [] :ハスケル、アキュムレータList<Integer>(

    22

    3答えて

    コンテナ(リスト、シーケンス、マップなど)のように見えるファンクタはたくさんありますが、それ以外の多くのファンクタ(状態変換器、IO、パーサなど)はありません。私はまだ少なくともFoldableまたはTraversableのインスタンスはコンテナのようには見えませんでした。存在しますか?そうでない場合、私は彼らがなぜできないのかをよりよく理解したいと思う。

    7

    2答えて

    リストから平衡二分木を構築する関数foldTreeを書く。 私はfoldrを使用しなければなりません。それは大丈夫です、私はそれを使用しましたが、私はinsertInTree関数を再帰的にします=(今のところ私は木を通り抜けるこの方法しか知っていません))。 更新日:iamは関数についてはわかりませんinsertTree:再帰の高さを正しく計算していますか? 。=((それはuntil/iterat

    7

    4答えて

    私はHaskellの宿題の問題をErlangでやり直そうとしています。私には、そのパラメータのすべてを持たない関数のリストを使う方法があります。 例:私はこの倍を使用しようとしているが、私はそれは、コマンドラインでこれを使用してアキュムレータその後 %%inside my module) add(X,Y) -> X + Y. multiply(X,Y) -> X*Y. 上で動作するように

    5

    3答えて

    foldlの実装を書いて、それがうまく機能しているかどうかを確認したい場合、いくつかのケースを試してみましたが、うまくいくように見えますが、確認したいと思います。 私はquickCheckについて読み、それを試してみましたが、私はそれを動作させるように見えることはできません、これはコード foldl'' :: (b -> a -> b) -> b -> [a] -> b test :: Eq

    5

    2答えて

    foldlのとfolrはFPやHaskellのための2つの非常に重要な機能がありますが、私はunsided倍についてはあまり聞いたことがない:ある fold f [a,b,c,d] = (f (f a b) (f c d)) 、バイナリ連想機能で動作倍(アプリケーションのように順序関係ない)。正しくリコールすれば、これは並列化が可能なデータベースでは非常に一般的です。それで、それについては、私

    8

    2答えて

    FoldableはFunctorがApplicativeとMonadのスーパークラスであるのと同様にTraversableのスーパークラスです。基本的に、我々はまた Monoid m => (,) mモナドを用い foldMap foldLiftT :: (Traversable t, Monoid m) => (a -> m) -> t a -> m foldLiftT f = fst . t