問題タブ [stuarray]

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.

0 投票する
2 に答える
1654 参照

haskell - ボックス化されていない可変配列インスタンスを作成する方法

次のタイプがあるとしましょう:

p>

そのようなインスタンスのいずれかを作成する方法はありますか:

p>

とりあえずWord8で全部保存して(ラップして)fromEnum/toEnumで変換してるけどなんか違和感。メモリ内で大規模なデータ構造 (>1.2Go) を使用していて、遅延ロードできないため、厳格さとボックス化解除が必要です。解決策が見つからない場合は、すべてを C++ で再実装しますが、現在のプロジェクトでは避けたいと考えています。

#haskell で質問しましたが、回答がありませんでした。質問するのに適切な時間ではなかったのかもしれません。

0 投票する
1 に答える
793 参照

haskell - runST の適用時に「Could not deduce (MArray (STUArray s) Int (ST s)) from context ()」

私はhaskellを学習している最中で、この問題に遭遇しました:

使用するGlasgow Haskell Compiler, Version 6.10.4, for Haskell 98, stage 2 booted by GHC version 6.10.1

ファイルの共通先頭

STArray の使用 (動作)

STUArray の使用 (機能しません)

しかし、ボックス化されていないアレイに切り替えようとすると、エラー メッセージが表示されます。

エラーメッセージ

また:

型注釈をいじってからほぼ 2 時間後、誰かが私を正しい方向に向けてくれることを願っています。いったい何が間違っているのでしょうか?

お時間をいただきありがとうございます。

0 投票する
2 に答える
952 参照

haskell - ポリモーフィックタイプのSTUArray

STモナドとsを使用してアルゴリズムを実装し、とデータSTUArrayの両方で機能できるようにしたい。FloatDouble

より簡単な例の問題について説明します。メモ化されたものを計算しますscanl (+) 0(例として使用するだけで、なしで解決できることはわかっていますSTUArray)。

これは次の場合に失敗します。

提案された「可能な修正」を適用できません。(forall s. MArray (STUArray s) a (ST s))コンテキストに似たようなものを追加する必要があるのですが、それは不可能です。

0 投票する
1 に答える
194 参照

haskell - 制約の種類を持つポリモーフィック STUArray の再検討

スコア型に動的プログラミング アルゴリズム ポリモーフィックを実装したいと考えています。これは、境界条件のない単純化された 1D バージョンです。

制約は機能しません。

要約すると、Could not deduce (MArray (STUArray s) e (ST s)) from the context forall s. MArray (STUArray s) e (ST s i). に制約を追加するとresultArrayST、問題が にプッシュされるだけであることに注意してくださいrunSTUArray

私は現在、4 つの欠陥のあるソリューションを知っています。

  1. STArrayボックス化されたs または単に非モナドs の問題を回避しArray、おそらくseqand bang パターンを使用して、結果として生じるメモリの問題を緩和します。
  2. unsafeFreezeとを使用して型システムを壊します。unsafePerformIOこれには、ひどい制約が正常にMArray IOUArray e IO機能します。
  3. タイプクラスを使用し、すべての「ボックス化できない」タイプのインスタンスを作成する同様の問題に対するこのソリューション。
  4. これは GHC 書き換えルールを使用して、各タイプ (および汎用STArrayバージョン) ごとに異なる関数を選択します。

ConstraintKindsただし、最新の言語拡張により、元のコードの意図を表現できるようになることを期待して、この質問をしていforall s. MArray (STUArray s) e (ST s)ます。