問題タブ [bytestring]
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.
string - Network.Socket.ByteString.Lazy の sendTo はどこにありますか?
と の両方Network.Socket.ByteStringに機能Network.Socket.ByteString.Lazyがありsendます。
Network.Socket.ByteStringsendTo機能はありますが、Network.Socket.ByteString.Lazyありません。
Lazy.ByteStringまたはの関数Network.Socket.ByteStringで の sendToを使用するにはどうすればよいですか。(つまり、パケットの送信先をどのように伝えるのですか。) Network.Socket.ByteString.Lazysend
Haskell の文字列、BytesStrings に関する優れたチュートリアルを推奨できる人はいますか。Lazy.ByteStrings など。非常に紛らわしいと思います (Java/Python のバックグラウンドから来ています)。
haskell - Haskell の HXT で Text または ByteString を使用することは可能ですか?
Haskell の XML/HTML 処理ライブラリである HXT には、矢印で DOM ツリーをトラバースおよび操作するための非常に柔軟で強力なメソッドがあると思います。 http://adit.io/posts/2012-04-14-working_with_HTML_in_haskell.html
ただし、HXT には DOM ノード コンテンツの文字列表現しかないようです。 http://hackage.haskell.org/packages/archive/hxt/9.1.6/doc/html/Text-XML-HXT-DOM-TypeDefs.html#t:XNode
HXT に ByteString または Text のいずれかを使用することは可能ですか? 主にテキストを使用しているように見えるYesodでHXTを使用しているため、テキストが優先されます。
haskell - Lazy ByteString の奇妙な動作またはバグ?
GHCI で関数 intervalFinder をテストしているときは動作しているように見えますが、コンパイルしようとすると出力がありません。
関数は入力に対して機能します。
そして実行中のメイン:
results.txt に出力:
しかし、ghc test3.hs を実行すると、出力ファイルは 0kb になります (明らかにデータはありません!)
私は何か間違ったことをしていますか?
コード:
ありがとう!
haskell - Data.Time.UTCTime を ByteString に/から変換する
Data.Time.UTCTime「%Y-%m-%d %H:%M:%S」形式のファイルを何度も読み書きする必要があるとします。
Data.Time.formatTimeorData.Time.parseTimeを使用して to/from に変換してから to / UTCTimefromStringをパック/アンパックすると、中間が含まれるため、遅すぎるように思えます。しかし、 のビルダー/パーサーを手動で記述することは、およびで既に行われた多くの作業を繰り返すように思えます。StringByteStringStringByteStringUTCTimeformatTimeparseTime
私の質問は次のとおりだと思います:多くの作業を繰り返さずに、型の関数を取得したり、変換したり、効率を高めt -> StringたりString -> tするt -> ByteString体系的な方法はありますか?ByteString -> t
私は完全に Haskell の初心者なので、質問がばかげている場合はご容赦ください。
haskell - 実行時まで長さが不明なバイトストリームの解析からタイプのリストを返す
これは、何よりもタイプの複雑さを理解していないことのほうが多いと思います。これを解決しようとすると、私は数回近くにいるように感じますが、まだそこにはいません。
Data.Binaryを使用してストリームから読み取ろうとしています。次のセクションに1つ以上のチャンクを含めることができるようになりましたが、ストリームの解析を開始するまで情報はわかりません。これらの複数のチャンクを返す際に問題が発生します。
これがコードです、そして私がこれについて間違った方法で行っているならば、私に知らせてください。ただし、ストリームに書き戻すには、同じスキャフォールディングを簡単に使用できる必要があることに注意してください。
おそらく役立つ情報:
- ストリームはPEファイルです
- レンズ(fclabels)を使用しています
- DataDirectoryタイプは、他のタイプの数レベル深くネストされています。
私はこれまで、ストリーム全体を取得し、 nDirsに8バイトを掛けて長さを取得し、解析することを避けてきました。これは確かにこのインスタンスでは機能しますが、他の場所ではダウンレンジしない可能性があります。
haskell - リスト、バイト文字列、テキスト (およびおそらく他の同様の表現) で単一の関数を機能させる
任意のシンボルのシーケンスで検索を行う関数を作成しています。Foldableリストやs だけでなくByteStrings やs でも機能するように、十分に一般的なものにしたいと思いますText。それを一般化するのFoldableは簡単です。しかし、ByteStrings とTexts を含める方法は? 確かにByteString、リストに変換してから関数を呼び出すことはできますが、すべての利点が失われますByteString。
具体的な例として、ヒストグラム関数を作成したいとしましょう:
しかし、ByteStringText も Text もできないため(任意の要素ではなくs/ sFoldableのみを格納する)、型シグネチャが異なるだけで、以前のものとまったく同じように見える関数をさらに作成することに行き詰まっています。Word8Char
これは、Haskell のような関数型言語では予期しないことです。
ジェネリックにする方法、histogram一度だけ書く方法は?
haskell - ByteStringまたはText上にモナディック/アプリケーションマップ(つまり、トラバース/ mapM)関数はありますか?
ByteStringとTextには標準の(純粋な)マップ関数があります。
しかし、私は彼らのモナディック/アプリケーションの対応物が欠けています:
(もしあれば、traverse定義することができますmapM f = unwrapMonad . traverse (WrapMonad . f)。)
パッケージを調べてHoogleを試しましたが、見つかりませんでした。私は何かを見落としましたか?または、それらが欠落している理由がありますか(効率的に定義することが不可能/簡単であるなど)?
haskell - ghc でのバイト文字列リンク
次の簡単なコードを検討してください。
インストールcabal install --global bytestringしてから取得します(ghc 7.4.1を使用して新しくインストールされたUbuntu 12.04マシンで):
私はそれで何ができますか?
performance - Haskell の hFlush で CPU 使用率が高い
次の Haskell コードは 100% の CPU を使用し、Linux サーバーで終了するのに約 14 秒かかることがわかりました。
一方、非常によく似た Python コードは、同じタスクを約 3 秒で完了します。
strace を使用すると、Haskell 版では hFlush が呼び出されるたびに select が呼び出されることがわかりました。一方、select は Python 版では呼び出されません。これが Haskell 版が遅い理由の 1 つだと思います。
Haskell バージョンのパフォーマンスを改善する方法はありますか?
私はすでに hFlush を省略しようとしましたが、確かに CPU 使用率が大幅に減少しました。ただし、このソリューションはフラッシュしないため、満足のいくものではありません。
ありがとう。
編集済み
大変お世話になりました!シーケンスとリピートをレプリケートM_に変更することで、実行時間が 14 秒から 3.8 秒に短縮されます。
しかし今、私は別の質問があります。上記のプログラムからhFlushを削除すると、シーケンスとリピートを使用してI/Oを繰り返すにもかかわらず、高速に実行されるため、上記の質問をしました。
なぜシーケンスと hFlush の組み合わせだけで遅くなるのですか?
私の新しい質問を確認するために、プロファイリングを行うためにプログラムを次のように変更しました。
次のようにコンパイルして実行します。
次の結果が得られました。
同じタスクを実行する doIO と doIO' の違いは何ですか? また、なぜ doIOWithoutFlush はシーケンスや繰り返しでも高速に実行されるのでしょうか? この動作に関する参照はありますか?
ありがとう。
haskell - HaskellでByteStringの個々の要素を操作するにはどうすればよいですか?
次のような関数を書く必要があります
ここで、の値に応じてbase、サブトライはさまざまな方法でトライに挿入されます。SSTrieは私自身のデータ型であり、その操作方法は知っていますが、Word8の値を処理する方法がわかりません。
baseByteStringから取得された単一の「文字」(「文字」の特定の値)です。具体的には、これはindexByteStringを呼び出した結果です。これが、Word8と宣言した唯一の理由です。
利用可能なWord8コンストラクターがないため、パターンマッチングを実行できません。また、Word8定数を作成して比較する方法がわからないため、ガードを機能させることができません。
[編集]ジェロームの提案はうまくいった。しかし、より一般的には、バイト文字列(およびその他のより低レベルのデータ)を操作する方法を示す優れた記事はありますか?たとえば、Word8についてその事実をどうやって知ることができたのでしょうか。
[編集-ドン・スチュワートへの質問]
今、私はそれをこのようなコードで動作させています
これに変更すると:
エラーが発生します:
import qualified Data.ByteString.Char8 as Cファイルの先頭にあります。私は何が間違っているのですか?