KernelEvaluate

KernelEvaluate[expr]

コンパイルされたコードから呼ばれたときでも expr をWolfram言語カーネルで評価する.

KernelEvaluate[x,expr]

expr の評価で使うためにコンパイルされた変数 x の値を捕らえる.

KernelEvaluate[{x1,x2,},expr]

expr の評価で使うために xiの値を捕らえる.

詳細

  • KernelEvaluate[expr]の式 expr は,Wolfram言語の関数あるいはユーザによる定義でよい.
  • KernelEvaluate[x,expr]x ようにコンパイルされた変数は,Functionにおけるように語彙的にバインドされている.
  • KernelEvaluate[x, expr]expr の評価が x の値を変更することはできない.
  • 一般に,結果の型を指定するためにKernelEvaluateTypeHintでラップされる.

例題

すべて開くすべて閉じる

  (3)

Wolfram Engineの評価器を使ってAiryAi関数をコンパイルされたコードから計算する:

コンパイルされた関数を実行する:

結果を直接の呼出しと比較する:

Wolfram Engineで関数を定義する:

コンパイルされたコードからこの関数を呼び出す:

コンパイルされたコードで局所変数を使う:

結果を直接呼出しと比較する:

スコープ  (4)

KernelEvaluateの結果を"InertExpression"タイプで関数として使う:

KernelEvaluateを使うとFitのような操作がコンパイラに統合できる:

KernelEvaluateを使ってファイル操作を統合する:

FunctionCompileが使用される際にコンパイルされたコードから呼び出された関数が定義されている必要はない:

コンパイルされたコードの実行のためには定義されていなければならない:

定義を変更することは可能であり,変更された場合には新バージョンが使われる:

定義がなければランタイムエラーになる:

考えられる問題  (2)

KernelEvaluateの出力がその宣言型と一致しないとランタイムエラーになる:

KernelEvaluateで与えられた変数は動的にではなく語彙的にバインドされる:

語彙的なバインドのために結果はランタイムエラーになる:

おもしろい例題  (1)

NDSolveをコンパイルされたコードに統合する:

Wolfram Research (2023), KernelEvaluate, Wolfram言語関数, https://reference.wolfram.com/language/ref/KernelEvaluate.html.

テキスト

Wolfram Research (2023), KernelEvaluate, Wolfram言語関数, https://reference.wolfram.com/language/ref/KernelEvaluate.html.

CMS

Wolfram Language. 2023. "KernelEvaluate." Wolfram Language & System Documentation Center. Wolfram Research. https://reference.wolfram.com/language/ref/KernelEvaluate.html.

APA

Wolfram Language. (2023). KernelEvaluate. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/KernelEvaluate.html

BibTeX

@misc{reference.wolfram_2024_kernelevaluate, author="Wolfram Research", title="{KernelEvaluate}", year="2023", howpublished="\url{https://reference.wolfram.com/language/ref/KernelEvaluate.html}", note=[Accessed: 18-November-2024 ]}

BibLaTeX

@online{reference.wolfram_2024_kernelevaluate, organization={Wolfram Research}, title={KernelEvaluate}, year={2023}, url={https://reference.wolfram.com/language/ref/KernelEvaluate.html}, note=[Accessed: 18-November-2024 ]}