TypeOf
詳細とオプション
- TypeOfは,解釈されたプログラムとコンパイルされたプログラムの両方で使うことができる.
- TypeOfは,Wolfram Compilerの型推論システムを使用する.
- TypeOfは,Wolfram Compilerでコンパイル可能な式と型しか受け付けない.
- TypeOfは,コンパイルが機能するかどうかを簡単にチェックするために解釈されたコードで使用することができる.
- TypeOfは,コードの一部の型を判定するためにコンパイルされたコードで使うことができる.
- TypeOfは,TypeEvaluateと一緒に使って関数宣言の型を指定することができる.
- TypeOfは,TypedとFunctionDeclarationやTypeDeclarationのような宣言指定の両方を取ることができる.
例題
すべて開く すべて閉じる例 (6)
TypeOf[Function[{Typed[x, "Real64"], Typed[y, "Integer64"]}, x + y]]TypeOfは,関数の型を判定し,コンパイルが機能するかどうかを示すだけなので,便利である.
TypeOf[5040]TypeOf[StringLength[str] ^ 2 + 3.6, Typed[str, "String"]]FunctionDeclarationを使って関数の型を求める:
decl = FunctionDeclaration[SubFun, Typed[{"Integer64"} -> "Integer64"]@Function[arg, arg + 1]];
TypeOf[Function[Typed[arg, "Integer64"], SubFun[arg]], decl]TypeOfを含むプログラムをコンパイルする:
cf = FunctionCompile[Function[Typed[arg, "Real64"], Cast[5040, TypeOf[arg]]]]cf[4.5]TypeOf は,宣言時には引数の型が未知であるので,ForAllTypeで書かれた多型宣言で役に立つ:
decl = FunctionDeclaration[MyIncrement, Typed[ForAllType[e, {e} -> e]]@Function[{arg}, arg + TypeHint[1, TypeOf[arg]]]];
cf = FunctionCompile[decl, Function[Typed[arg, "Integer8"], MyIncrement[arg]]]cf[4]TypeOfをTypeEvaluateと一緒に使って宣言の型を判定することができる:
type = ForAllType[{elem},
Element[elem, "Numbers"],
{elem} -> TypeEvaluate[TypeOf[Re[elem]]]];cf = FunctionCompile[FunctionDeclaration[MyFun1, Typed[type]@Function[x, Re[x]]], Function[Typed[arg, "ComplexReal64"], MyFun1[arg]]]cf[4. + 5. I]スコープ (2)
TypeOf[Table[a + b, {a, 10}, {b, 5}].Range[5]]TypeOfは,評価されたコードの場合と同様にコンパイルされたコード中のそれ自身の引数を評価しない:
cf = FunctionCompile[Function[{}, TypeOf[Echo["hello"];2 + 3]]]cf[]アプリケーション (1)
特性と関係 (3)
TypeOfは入力の型をこれを評価せずに推測する:
TypeOf[Echo[123] + 2.5]TypeOfは,FunctionCompileによって生成されたCompiledCodeFunctionの戻り型をはるかに速く与える:
AbsoluteTiming@TypeOf[StringLength["hello"] ^ 2 + 3.6]AbsoluteTiming@FunctionCompile[Function[{}, StringLength["hello"] ^ 2 + 3.6]]TypeOfがコンパイルできない場合は,通常,エラーのソースを示すボタンを含むメッセージが出される:
TypeOf[Function[Typed[arg, "Real64"], Module[{size = arg < 10}, Sin[size]]]]ソースボタンをクリックすると,通常,エラーの特定に役立つユーザインターフェースが開く:
[image]考えられる問題 (3)
TypeOfはコンパイルされたプログラムの型しか推測できない:
TypeOf[uncompilableFunc[2]]TypeOfは引数を評価しないため,予期しない結果が生じることがある:
f = Function[Typed[arg, "Integer64"], arg];
TypeOf[f]TypeOfの引数は,明示的に評価しなければならないかもしれない:
f = Function[Typed[arg, "Integer64"], arg];
TypeOf[Evaluate[f]]TypeOfは,その主引数の型しか計算しないので,宣言内のエラーは見付けない:
decl = FunctionDeclaration[SubFun, Typed[{"Integer64"} -> "Integer64"]@Function[arg, arg1]];
TypeOf[Function[Typed[arg, "Integer64"], SubFun[arg]], decl]FunctionCompileは完全なコンパイルを行うので宣言内のエラーも見付けられる:
decl = FunctionDeclaration[SubFun, Typed[{"Integer64"} -> "Integer64"]@Function[arg, arg1]];
FunctionCompile[decl, Function[Typed[arg, "Integer64"], SubFun[arg]]]テクニカルノート
テキスト
Wolfram Research (2022), TypeOf, Wolfram言語関数, https://reference.wolfram.com/language/ref/TypeOf.html.
CMS
Wolfram Language. 2022. "TypeOf." Wolfram Language & System Documentation Center. Wolfram Research. https://reference.wolfram.com/language/ref/TypeOf.html.
APA
Wolfram Language. (2022). TypeOf. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/TypeOf.html
BibTeX
@misc{reference.wolfram_2026_typeof, author="Wolfram Research", title="{TypeOf}", year="2022", howpublished="\url{https://reference.wolfram.com/language/ref/TypeOf.html}", note=[Accessed: 04-November-2026]}
BibLaTeX
@online{reference.wolfram_2026_typeof, organization={Wolfram Research}, title={TypeOf}, year={2022}, url={https://reference.wolfram.com/language/ref/TypeOf.html}, note=[Accessed: 04-November-2026]}