問題タブ [alternative-functor]
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 - throw と throwIO に違いがあるのはなぜですか?
条件付きループの実装を改善できるように、例外をしっかりと把握しようとしています。そのために、物を投げたり、引っかかるものを観察したりと、様々な実験を行っています。
これは私を際限なく驚かせます:
Alternative は正確に IO エラーを無視するべきだと思いました。(どこからこのアイデアを得たのかはわかりませんが、代替チェーンで無視される非 IO 例外を提供することはできませんでした。)そこで、IO エラーを手作りして配信できると考えました。無視されるかどうかは、内容と同じくらいパッケージングに依存することがわかりましthrowた。IO エラーの場合、それはどういうわけかもはやIO エラーではありません。
私は完全に迷っています。なぜこのように機能するのですか?それは意図されていますか?定義は、GHC 内部モジュールに深くつながります。コードのばらばらな断片の意味はそれ自体で多かれ少なかれ理解できますが、全体像を見るのに苦労しています。
予測が非常に困難な場合でも、この代替インスタンスを使用する必要がありますか? 特定の方法で定義され、特定の方法でスローされる例外の小さなサブセットだけでなく、同期例外を沈黙させた方がよいのではないでしょうか?
haskell - 一連のモナド アクションから最初の「空でない」値を取得する標準コンビネータ
ここで非常に明白な何かが欠けていると確信しています。概念レベルで達成しようとしているのは次のとおりです。
この仮説someCombinatorは存在しますか?私は遊んでみましたが<|>、msum欲しいものを手に入れることができませんでした。
これは、次の 2 つの方法で一般化できると思います。
haskell - すべての代替モナドはフィルター可能ですか?
セットのカテゴリは、デカルト モノイドとコデカルト モノイドの両方です。これら 2 つのモノイド構造を示す正準同型のタイプを以下に示します。
この質問の目的のために、テンソルの下の Hask からテンソルAlternativeの下の Hask への緩いモノイド関手であると定義します(それ以上ではありません)。Either(,)
法則は、緩いモノイド関手の場合のものです。
結合性:
左ユニット:
右ユニット:
Alternative以下は、緩いモノイド ファンクター エンコーディングのコヒーレンス マップに関して、型クラスのより使い慣れた操作を復元する方法です。
ファンクターを、テンソルの下の Hask からテンソルの下の Hask へのoplaxモノイド ファンFilterableクターと定義します。Either(,)
その法則を後ろ向きに持つと、緩いモノイド関手の法則が得られます:
結合性:
左ユニット:
右ユニット:
oplax モノイド ファンクター エンコーディングのようなmapMaybeおよびに関する標準のフィルター y 関数の定義は、関心のある読者への演習として残されています。filter
Alternative Monad問題は次のとおりFilterableです。
テトリスを実装する方法を入力できます。
しかし、この実装は常に合法ですか? それは時々合法ですか(「時々」の正式な定義について)?証明、反例、および/または非公式の議論はすべて非常に役立ちます。ありがとう。