問題タブ [foldable]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
haskell - Haskell で null (Just 5) ができないのはなぜですか?
Maybe の Hackage ドキュメントには、Foldable が Maybe の型クラスの 1 つとして挙げられています。また、次の関数もリストされています。
この関数の実装にもリンクしています (からFoldable
):
...これはかなり合理的なようです。それも機能します: I can, if I import qualified Data.Foldable
, foldr
on Maybe values.
ただし、Maybe を呼び出そうとするとnull
、Haskell は、リスト用に設計された null を使用したいと考えています。
があることは知っていますがisJust
、Foldable のような関数を呼び出す方法を知りたいだけですnull
。
haskell - 自分の型の MonoFoldable がコンパイルされない理由、またはエラー メッセージが理解できない
次のコードがあります。
ただし、コンパイラから次のエラーが表示されます。その意味を理解するのに苦労しています。
私が言うことができる限りでは、私の考えは理にかなっているようです.結局のところ、 aRuleSet
は s の単なるコンテナでRule
あり、折りたたみ可能であるべきですが、問題のエラーメッセージは私には意味がありません. 誰かが私がここで把握できなかったものを明確にしてもらえますか?
haskell - 折り畳み式 vs トラバーサブル
Applicative
より深く勉強するうちに、私は にたどり着きましたTraversable
。LYHGGFoldable
からは知っていましたが、前者はまだ見ていないので、Traversable に関する Haskell wikiを読み始めました。
それを読んでいるうちに、 が に平行で、 が に平行である理由Foldable.fold
がわかりました。Traversable.sequenceA
Foldable.foldMap
Traversable.traverse
また、 everyTraversable
も aFoldable
および aFunctor
でありsequenceA
、traversal
相互にデフォルトの実装があることも確認しました。
foldMap
したがって、の最小完全定義であるLYHGG で見たようにFoldable
、それは と平行であると考えたtraverse
ので、fold
(これは と平行ですsequenceA
) も最小完全定義になります (そうではありません)...Foldable
はではないので、これを適用することはできませんFunctor
。Traversable
なぜすべてFoldable
が aではないのでしょうか?実際には ではないFunctor
インスタンスは何でしょうか?Foldable
Functor
haskell - 定数 ab = 定数 a の折りたたみ可能なインスタンスを実装するにはどうすればよいですか?
折りたたみ式を実装したい
これは私の簡単な試みです:
私が理解したいコンパイルエラーの部分は次のとおりです。
ご覧のとおり、折りたたみ関数は、a1
アクセスできない定数から「ファントム型」(?) を取得します。にしかアクセスできませんa
。
これを解決するにはどうすればよいですか?私はかなり混乱しているので、あなたの解決策を説明してください。
コンパイルエラー全体は次のとおりです。
haskell - モノイドがfoldr/foldlの要件ではないのはなぜですか?
私はFoldable
Haskellのクラスを見ています。メソッドのうちの 2 つは、Monoid インスタンスを必要としますfold
。foldMap
しかし、foldr
またはfoldl
そのような制約はありません。
foldr
/の結果foldl
が同等であるためには、指定された折り畳み関数を連想的に制限するべきではありませんか? 同じリストで、foldr/foldl の結果が異なる例はありますか?
Foldable インスタンスは Monoidal 値をラップすべきではありませんか? それともFoldableの方が一般的ですか?
haskell - MonoFoldable で失うものはありますか?
mono-traversableパッケージのMonoFoldableは、通常のすべての Foldable コンテナーなどを実装Bytestring
できるようMonoFoldable
ですFoldable
。私の質問は、いくつかの高度な GHC 機能を必要とすることを除けMonoFoldable
ば、 にないもので失われるものはFoldable
ありますか? これにより、インスタンスの作成者にとって少しトリッキーになり、おそらく見苦しいエラー メッセージが表示されますか?
たとえば、Foldable
コンパイルを使用するときにMonoFoldable
型が推論されないコードはありますか? または、クライアント (インスタンス ライター コードではない) を大幅に単純化するその他の方法Foldable
はMonoFoldable
?