問題タブ [lazy-io]
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 - この「閉じたハンドルでの読み取りの遅延」エラーの原因は何ですか?
最新のソースから GHC をインストールしたところ、「クローズされたハンドルの遅延読み取り」に関するエラー メッセージが表示されます。これは何を意味するのでしょうか?
json - JSON をレイジー ByteString としてファイルに書き込み、Aeson エンコード出力から文字列に変換せずに直接書き込みます
現在、JSON コンテンツ ( my_json) をファイル ( my_output_filepath)に書き込むために、次のようなものを使用しています。
これは機能しますが、 ( )ByteStringによって返されるをファイルに書き込む前に に変換する必要があるのか、それともパフォーマンスが低下するのか疑問に思っています。encodePrettyString
入力としてa を受け入れるバリアントがあることがわかりました。ただし、使用しようとすると、次のエラーが発生します。writeFileByteString
と相互運用するLazyバリアントを取得する方法はありますか?ByteStringwriteFile
json - ファイルへの書き込み時に、Aeson によって出力された JSON ByteString に末尾の改行を効率的に追加します
デフォルトでは、AesonencodeまたはencodePrettyの末尾に改行を追加しませんByteString。つまり、結果のファイルをvimで表示すると、[noeol]インジケーターが表示されます。
ファイルに改行を追加するパフォーマンス/慣用的な方法は何ですか?
のSSCCEは次のとおりですMain.hs。
添付myproj.cabalファイル付き:
関数 fromfoo.jsonを使用して改行を追加し、最後の行を次のように変更できます。snocByteStringMain.hs
ただし、snocドキュメントではこれを O(n) 操作として説明しています。この改行を一定時間で追加する方法はありますか?
haskell - getChar を使用した getContents の再実装
Haskell で遅延 IO を把握するための旅で、次のことを試しました。
「x」を押すまで、標準入力に入力されたすべての文字をエコーするだけです。
したがって、次の行に沿って何かを行うことgetContentsを使用して再実装できるはずだと素朴に考えました。getChar
IO モナドの概念全体を壊してしまう???タイプの関数が必要になるため、それほど単純ではないことがわかりました。IO [Char] -> [Char]
getContents(というよりは)の実装をチェックするとhGetContents、汚い IO のソーセージ ファクトリ全体が明らかになります。myGetContentsダーティなコード、つまりモナドを壊すコードを使わないと実装できない私の仮定は正しい ですか?
haskell - print が遅延 IO 値全体を強制しないのはなぜですか?
http-clientチュートリアルを使用して、TLS 接続を使用して応答本文を取得しています。printによって呼び出されていることを確認できるので、次のフラグメントの出力への応答全体を強制withResponseしないのはなぜですか?print
代わりにこれを書く必要があります:
印刷したい本文は怠惰なByteStringです。print値全体を出力する必要があるかどうかはまだわかりません。