"Julia" (外部評価システム)

詳細

ExternalEvaluateの使用法

  • ExternalEvaluate["Julia",code] はJulia REPLでコード列を実行し,Wolfram言語式として結果を返す.
  • ExternalEvaluate["Julia""String",code] はJulia REPLでコード列を実行し,Wolfram言語の文字列として出力を返す.

データ型

  • Juliaに組み込まれた次の型がサポートされている:
  • BoolTrue | Falseブール値True/False
    Int8, Int16, Int32, etc.Integer整数
    Float16, Float32, etc.Real実数
    Complex{Float16}, Complex{Float32}, etc.Complex複素数(Juliaから返される場合のみ)
    StringString文字列
    ArrayListオブジェクトのリスト
    DictAssociation連想の配列
    SetList重複のない非順序集合
    TupleList固定長のコンテナ
    Date, DateTimeTemplateBox[{DateObject, paclet:ref/DateObject}, RefLink, BaseStyle -> {3ColumnTableMod}]日付,日付区間
    NaNIndeterminate非数値
    nothingNull戻り値なし

使用法

  • 列のテンプレート(<**>)は,Wolfram言語の式を評価したりJuliaコード列に挿入したりするのに使うことができる.

例題

すべて開くすべて閉じる

  (1)

Juliaでを評価して結果を返す:

配列はリストとして返される:

>とタイプしてドロップダウンメニューからJuliaを選ぶと,評価にExternalEvaluateを使うコードのセルが得られる:

map(sqrt, 1:1:10)

日付はDateObject式としてJuliaから返される:

スコープ  (20)

Juliaでブール文を評価すると結果が戻る:

Juliaで文字列を連結すると結果が戻る:

Juliaの辞書は連想として返される:

Juliaの配列はListとして返される:

セッションオプション  (9)

"ReturnType"  (3)

Julia評価システムでは,デフォルトの戻り型は"Expression"である:

"Expression"戻り型では,数,文字列,リスト,連想は自動的にインポートされる:

"String"戻り型は,Julia関数の repr を呼び出すことによって結果の列を返す:

"Version"  (1)

"Version"を使うと,特定のバージョンのJuliaだけを確実に使うことができる:

マイナーバージョンやパッチバージョンを指定することができる:

"Evaluator"  (1)

指定された"Evaluator"を使ってJuliaセッションを開始する:

セッションで使われる評価子をチェックする:

セッションを終了する:

"SessionProlog"  (1)

"SessionEpilog"  (1)

"SessionEpilog"を使って,セッションの最後に副作用を実行する:

"Prolog"  (1)

"Prolog"を使って,それぞれの評価の前に副作用を実行する:

"Epilog"  (1)

"Epilog"を使ってそれぞれの評価の後に副作用を実行する:

コマンドオプション  (10)

"Command"  (3)

Juliaコードの列が与えられたときだけ,コマンドは直接実行される:

上記は次の形式を使ったコマンドに等しい:

Fileラッパーを使ってファイルのコードを実行する:

上記は次の形式を使ったコマンドに等しい:

CloudObjectにコードを置く:

クラウドから直接評価する:

上は,次のフォームを使ってコマンドを書くことと同じである:

"ReturnType"  (1)

デフォルトでは,コマンドはセッションの生成中に指定される"ReturnType"を使って実行される:

コマンドで"ReturnType"を指定すると,セッションの"ReturnType"が上書きされる:

"Arguments"  (2)

"Arguments"を使って,引数で評価の結果を呼び出す:

リスト以外の引数が与えられると,関数には単独の引数が渡される:

第一引数としてリストを渡す必要がある場合は,追加のリストで明示的にそれをラップしなければならない:

"Command"内で関数を定義し,"Arguments"で直接それを呼び出すことができる:

Ruleを使っても同じ結果を得ることができる:

ExternalFunctionを生成することによって引数を渡すこともできる:

"Constants"  (1)

"Constants"を使って,コマンドを実行する前に永続的な大域的変数を設定する:

"TemplateArguments"  (3)

コマンドを実行するとき,TemplateExpressionを行内に埋め込むことができる:

"TemplateArguments"を使ってTemplateSlotを明示的に埋めることができる:

リスト以外の引数が与えられると,テンプレートには単独のテンプレート引数が渡される:

第一引数としてリストを渡す必要がある場合,それを明示的に追加のリストでラップしなければならない:

テンプレートスロットに名前を付け,Associationを使うと,テンプレートに名前付きの引数を渡すことができる:

アプリケーション  (2)

JuliaのStatisticsパッケージの mean 関数を使う:

関数を使う:

セッションを終了する:

JuliaのOrdinaryDiffEqパッケージを使って放射性崩壊問題を解く:

Wolfram言語で解をプロットする:

特性と関係  (2)

Julia関数を呼び出すWolfram言語関数を定義する:

セッションを終了する:

NumericArrayは同じ要素タイプを持つ配列としてJuliaに送られる:

次は入ってくる配列に対するネイティブのJulia型を示す:

セッションを終了する: