問題タブ [marray]
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 - ボックス化されていない可変配列インスタンスを作成する方法
次のタイプがあるとしましょう:
そのようなインスタンスのいずれかを作成する方法はありますか:
とりあえずWord8で全部保存して(ラップして)fromEnum/toEnumで変換してるけどなんか違和感。メモリ内で大規模なデータ構造 (>1.2Go) を使用していて、遅延ロードできないため、厳格さとボックス化解除が必要です。解決策が見つからない場合は、すべてを C++ で再実装しますが、現在のプロジェクトでは避けたいと考えています。
#haskell で質問しましたが、回答がありませんでした。質問するのに適切な時間ではなかったのかもしれません。
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 時間後、誰かが私を正しい方向に向けてくれることを願っています。いったい何が間違っているのでしょうか?
お時間をいただきありがとうございます。
c++ - Intel C++ コンパイラは深いテンプレートを処理できませんか?
marrayライブラリを使用した C++ のプロジェクトがあります。今のところ、Windows 7 x64 上の MinGW g++ 4.7 および msvc2010 で、また Linux Mint x64 上の g++ 4.7 で、非常にうまくコンパイルおよび実行されます。Linux 用の Intel C++ コンパイラ v. 12.1.4 を試してみることにしました。コードをコンパイルすることはできましたが、式テンプレート (3 つの項すべてが行列である c = a + b など) に悩まされている行を実行しようとすると、セグメンテーション違反で失敗します。この問題は、アプリのデバッグ バージョンとリリース バージョンの両方に影響します。
また、marray ライブラリーの単体テストとチュートリアル・コードをコンパイルしようとしましたが、インテル C++ はコードをコンパイルしますが、式テンプレートがある場合は実行に失敗します。インテル® C++ は深いテンプレートで本当に悪いのでしょうか? それとも何か足りないのでしょうか? テンプレート式を機能させるには、特別なコンパイラ フラグを設定する必要がありますか? それとも、一般的な式テンプレートの手法ではなく、使用している特定のライブラリに何か問題があるのでしょうか?
また、 -ftemplate-depth- nフラグをnにさまざまな値を使用して10^10 という途方もなく大きな値まで設定しようとしましたが、セグメンテーション違反なしでアプリも marray ユニット テスト/チュートリアルも実行できませんでした。
Upd .:これは、デバッグ モードで icpc を使用してコンパイルされた前述のライブラリからの tutorial-marray の gdb ログです。
問題は一般に式テンプレートの手法に起因するものではないようです。数値を使用した配列演算は正常に機能します。ある配列を別の配列に追加しようとすると、問題が発生します。
更新。2:実際には、全体がここで言及されている問題と非常によく似ています。解決策は、演算子 E&() { return static_cast(*this); を書き直すことです。} E& get_ref() { return static_cast(*this); のようなものに const参照についても同じです。もちろん、コード内でのこれらの使用方法も変更してください。早速試して結果を報告します。
haskell - MArray の STArray への特殊化
Haskell でポリモーフィズムのある STArray を使用することについて混乱しています。
次の設定があるとします
今、私は thawData のタイプがこの場合に特化していると信じています
ただし、do 式の本体で明示的に入力しようとしても、明示的に STArray を使用するように thawData の型を変更しない限り、これはコンパイルされません。
一体何が起こっているのでしょうか?タイプを特化できないのはなぜですか?
thawData の型ではなく、doSomething の本体を何らかの方法で変更できますか?
ありがとう!
arrays - 速度のために MArray 関数を適切に最適化する方法は?
MArraysのソート ライブラリに取り組んでいます。速度は重要なので、可能な限り最適化したいと考えています。
現在、並べ替え関数を単純にインライン化しています。これにより、最適化されていないコードと比較して、コードが 10 倍以上高速化されます。ただし、関数が複数の場所で使用されている場合、これによりコード サイズが簡単に爆発し、コンパイルが遅くなる可能性があります。
他の唯一の代替手段は、MArray の既存のすべてのインスタンスに対して関数を SPECIALIZE するようです。これにより、結果のコードも拡大されますが、関数が使用される回数に依存しない一定の係数によってのみ拡大されます。問題は、MArray の新しいインスタンスが出現する可能性があるかどうかです。それとも、MArray は非常に特別で、Haskell の内部にバインドされているので、他のモジュールによって新しいインスタンスが定義されないようにすることができますか?
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 つの欠陥のあるソリューションを知っています。
STArray
ボックス化されたs または単に非モナドs の問題を回避しArray
、おそらくseq
and bang パターンを使用して、結果として生じるメモリの問題を緩和します。unsafeFreeze
とを使用して型システムを壊します。unsafePerformIO
これには、ひどい制約が正常にMArray IOUArray e IO
機能します。- タイプクラスを使用し、すべての「ボックス化できない」タイプのインスタンスを作成する同様の問題に対するこのソリューション。
- これは GHC 書き換えルールを使用して、各タイプ (および汎用
STArray
バージョン) ごとに異なる関数を選択します。
ConstraintKinds
ただし、最新の言語拡張により、元のコードの意図を表現できるようになることを期待して、この質問をしていforall s. MArray (STUArray s) e (ST s)
ます。
api - セッション署名プロセス用のアプリケーションを使用した Docusign API
以下のリンクのように、docusign を自分のアプリケーションとその作業に統合したいと考えています。ユーザーがアプリケーションで生成されたドキュメントに署名し、アプリケーションに戻るように指示した場合、どのようにそれを行うか。