問題タブ [ioref]
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 - エラーが発生した場合に値を保持する IORef
内部でエラーが発生した場合、IORef 値を変更しない方法はありますmodifyIORef
か?
haskell - リストの IORef 処理
これは、私が以前に尋ねた質問のフォローアップです。のすべての呼び出しでIORef
、受け入れられたソリューションで以下のリストが更新される方法がそうであるかどうか疑問に思っています。おそらく、リストの先頭へのポインターを保持している可能性が高いためだと思います(毎回O(n)になるリスト全体をトラバースしてコピーするのではなく)新しいヘッドへのポインターを変更するだけで、O(1)になるはずです。リスト全体の熱心な評価を防ぎます)。ただし、その低レベルのコードは表示されません。だから、ここで尋ねる:O(1)
fetch
IORef
ghc-core
performance - IORef と STRef のコンパイル
これらの Ref のパフォーマンスを測定するために、次のコードで GHC によって生成されたアセンブリをダンプしました。
IORef が完全に最適化され、文字列 "18" を stdout に書き込むシステムコールのみが残されると予想していました。代わりに、250 行のアセンブリを取得します。実際に何人が処刑されるか知っていますか?これが私がプログラムの核心だと思うものです:
私はこれについて心配していjmp stg_newMutVar#
ます。アセンブリのどこにもないので、GHC は後のリンク段階でそれを解決するかもしれません。しかし、なぜここにあり、何をするのでしょうか? 未解決の haskell シンボルなしで最終的なアセンブリをダンプできますか?
haskell - atomicModifyIORef の追加の結果パラメータの目的は何ですか?
の署名modifyIORef
は非常に簡単です。
残念ながら、これはスレッドセーフではありません。この問題に対処する代替手段があります。
これら2つの機能の違いは正確には何ですか? 別のスレッドから読み取られる可能性のある をb
変更するときに、パラメーターをどのように使用すればよいですか?IORef