問題タブ [do-notation]
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 - do-notation/enumFromTo のパターン マッチングは Haskell コードを遅くする可能性がありますか?
私は非常に簡単な問題を解決してきました. からまでL
の自然数で構成された の長さのすべての減少するシーケンスの生成は、辞書式の順序です. しかし、私は非常に奇妙な問題に遭遇しました。見てみましょう:1
M
したがって、明らかに、これらの 2 つの関数はまったく同じことを行います (いくつかのテストで確認しましたが、両方とも正しい結果が得られますc 100 98
) c' 100 98
。かかります:
[a..b]
なので、毎回生成するのはちょっと不安なのですが、ちょっと聞いてみたら、Haskell はすぐにパターンマッチするのではなく、遅延評価で遅延するのではないかという提案がありました。の大量の余分な呼び出しが発生しc'
ます。しかし、2 番目の理論は完全には成り立ちませんでした。GHCi コマンド プロンプトから直接コードにブレークポイントを設定し、 の値を監視しn
たところ、遅延パターン マッチングが当てはまらないことがわかりました。
問題は実際にはenumFromTo
機能にあるのでしょうか、それとも他の理由がありますか?
haskell - HaskellのIOモナドでcharリテラルをラップする方法は?
モナドから物事をアンラップするのではなく、結果に対して実行したい操作をモナドにラップすることになっていることを私は知っています。
私が見つけられないのは、それを行う方法の馬鹿に優しい例です。
たとえば、次のようなことをしたい:
ただし、char リテラルを IO Char と直接比較することはできません。
GHCi のバージョンは 8.4.4 です。
エラーメッセージ: