問題タブ [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
によって返されるをファイルに書き込む前に に変換する必要があるのか、それともパフォーマンスが低下するのか疑問に思っています。encodePretty
String
入力としてa を受け入れるバリアントがあることがわかりました。ただし、使用しようとすると、次のエラーが発生します。writeFile
ByteString
と相互運用するLazy
バリアントを取得する方法はありますか?ByteString
writeFile
json - ファイルへの書き込み時に、Aeson によって出力された JSON ByteString に末尾の改行を効率的に追加します
デフォルトでは、Aesonencode
またはencodePretty
の末尾に改行を追加しませんByteString
。つまり、結果のファイルをvimで表示すると、[noeol]
インジケーターが表示されます。
ファイルに改行を追加するパフォーマンス/慣用的な方法は何ですか?
のSSCCEは次のとおりですMain.hs
。
添付myproj.cabal
ファイル付き:
関数 fromfoo.json
を使用して改行を追加し、最後の行を次のように変更できます。snoc
ByteString
Main.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
値全体を出力する必要があるかどうかはまだわかりません。