問題タブ [forall]
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.
python - numba.guvectorize を使用して並列 forall / prange をエミュレートすることは可能ですか?
本当の「コーダー」ではなく、データ分析と数値計算のための Python のユーザーとして、私は非常にオーバーヘッドの少ない並列ループ計算を複数のコアに分散させる方法を見逃していました。私が学んだように、Numba には prange コンストラクトがありましたが、「不安定性とパフォーマンスの問題」のために放棄されました。
新たにオープンソース化された@guvectorizeデコレーターをいじって、それを使って後期 prange の機能を実質的にオーバーヘッドなしでエミュレートする方法を見つけました。
Continuum Analytics の担当者のおかげで、このツールが手元にあることを非常にうれしく思います。@guvectorize のこの使用法について明確に言及しているウェブは見つかりませんでした。以前に NumbaPro を使用していた人にとっては些細なことかもしれませんが、私はこれをすべての非コーダー仲間のために投稿しています (この「質問」に対する私の回答を参照してください)。
oracle - ORACLE: INSERT INTO Table VALUES オブジェクト型コレクション
以下のタイプを作成しました。
データセットをテーブルに挿入したいだけです。
これは問題なく動作しますが、「VALUES」句を変更して、ソース オブジェクトの各属性に名前を付けないようにすることはできますか? 私はこのようなものが欲しいです:
どんな助けでも大歓迎です。
z3 - 境界の普遍的に量化された変数
Z3 で普遍的に量化された変数の値の範囲を制限できるかどうかを知りたいです。
たとえば、システム内の時間をモデル化するために使用される「time」と呼ばれる Real 型の変数があるとします。ある単項関数「func1」の値は常に 1 から 100 の間でなければならないというアサーションがあるとします。関数は入力を時間変数とします。Z3 で表現すると、次のようにプロパティをエンコードしました。
ForAll(time, And(func1(time) >= 1, func1(time) <= 100))
次のタイプのプロパティを注入すると、Z3 で unsat が返されるようにするため、時間変数を普遍的に定量化する必要があることに注意してください。
Exists(time, func1(time) == 101)
Z3 に関する私の理解では、すべての定数は数学的な (理論上の) 実装であり、コンピューターによる (実用的な) 実装ではありません。時間を使用してシステムの時間をモデル化し、システムの制約に従って x 時間以上実行できないと仮定します。これを使用して、時間の値が 0 から x*60'*60 の間で最大値を与えることができます。秒単位の実行時間。次のアサーションを使用して、時間の許容値をアサートできることを知っています。
And(time >= 0, time <= x*60*60)
しかし、それは1で与えられた普遍的な数量化に影響を与えますか?
したがって、これは、プロパティ 2 が注入され、指定した時間の値に対して が設定されている場合、 は時間の値に対してのみ有効であるため、x*60*60 + 1
設定を解除すべきではないという状況につながるはずです。ForAll
oracle - Bulk Collect と ForAll - Oracle
レコード タイプ (テーブルごとのインデックス) から列にアクセスするための構文を探しています。以下はサンプルコードです。V_Emprec レコード タイプから empid を必要とする Declare ブロックの下で Update スクリプトを実行するにはどうすればよいですか。同じパラメーター(empid)が必要なprocも作成しました。
これは %Rowtype を使用して行うことができますか、それとも emp_stage.empid%type で型を作成する必要がありますか? Empid と Ename の 2 つの TYPE を emp_stg.column_name%type として作成した場合、これらを使用して、Rowtype v_emprec を使用する挿入スクリプトを置き換えることができますか?
これを行う構文を教えてください。
ありがとう
oracle - Oracle Bulk Collect with limit and for all がすべてのレコードを正しく処理しない
ストアド プロシージャを使用して、Oracle テーブルの 60,000 レコード近くを処理する必要があります。そのような行ごとに、2 番目のテーブルの行を削除して更新し、3 番目のテーブルに行を挿入する必要があります。
カーソル ループを使用すると、手順が完了するまでに約 6 ~ 8 時間かかります。Bulk Collect with Limit に切り替えると、実行時間は短縮されるが処理が正しくない。以下は、手順の一括収集バージョンです。
これらのレコードの約 20k では、最初の削除操作は正しく処理されますが、その後の更新と挿入は処理されません。残りの 40k レコードでは、3 つの操作がすべて正しく処理されます。
何か不足していますか?また、Bulk Collect で使用できる最大 LIMIT 値はいくつですか?
haskell - GHC.TypeLits での ScopedTypeVariables と RankNTypes
DataKinds
タイプレベルのリテラルと一緒に使用して、タイプセーフな通貨変換ライブラリを作成しようとしています。これまでのところ、次のデータ型を定義しました。
それらの間で変換できる関数とともに:
ここではScopedTypeVariables
、制約KnownSymbol a
をに提供するために使用しましたsymbolVal SProxy
。これは問題なく動作しますが、おそらくテキスト ファイルやfixerなどの API などの外部ソースからコンバージョン率を更新できるようにしたいと考えています。
明らかに、戻り値の型を でラップしてIO
、形成することができます
しかし、私は純粋な API を維持できるようにしたいと考えています。最初に考えたのは、 を使用してコンバージョン率マップを取得することunsafePerformIO
でしたが、これは安全ではないため、代わりgetConvert
に の効果を持つタイプの別の関数を使用できると考えました。
(つまり、convert
型関数を返す IO アクション) を次のように使用できるようにします。
しかし、私はこれを型チェックすることができませんでした - GHC は次のように不平を言っています:
GHCに の型を推測させたときreturn convert
、それは私が望む型を推測しませんでしたが、代わりにforall a b
を先頭の位置に移動しましたconvert' <- getConvert
。No instance for (KnownSymbol n0)
私の質問は、なぜこれが型チェックを行わないのか、関数の正しい型は何でしょうgetConvert
か?
ScopedTypeVariables
最初は、量指定子をさまざまな方法でRankNTypes
使用していることが事実である可能性があると考えましたforall
が、トグルRankNTypes
しても効果がありませんでした。また、GHC が提案したように量指定子を前に移動しようとしましたが、これでは必要なランク 2 型が得られません。
oracle - Oracle FORALL 更新例外
テーブルから多くのレジスタを更新するために FORALL ステートメントを使用しています。部門番号 XXX が存在しないために更新が「失敗」したときに例外をキャッチする必要があります。