ForAllType

ForAllType[x,type]

x でパラメータ化された型を表す.

ForAllType[x,cond,type]

cond を満足する型を表す.

ForAllType[{x1,x1,},cond,type]

複数のパラメータを持つ型を表す.

詳細

  • ForAllTypeはそのままでは評価されないが,Typed, FunctionDeclaration等の型を取る関数の中で使うことができる.
  • ForAllTypeは多相関数の型の指定に使われる.
  • 次は,cond の可能な形である.
  • Element[x,"absType"]x は抽象型に属すると断言する
    TypeEvaluate[]任意の関数を実行する
    Element[x,{ty1,ty2,}]x が与えられた型の一つであると断言する
  • condElement[xi,"absType"]の形を取る.ここで,"absType"は抽象型である. »
  • condElement[xi,{ty1,ty2,}]の形を取る.ここで,tyiは具象型である. »
  • TypeEvaluatecond で使うことができる. »
  • cond は条件のリストとして与えることができる.

例題

すべて開くすべて閉じる

  (1)

t 型のオブジェクトのリストを取って t 型の単一のオブジェクトを返す関数の型を表す:

この型の多相関数の宣言を表す:

この多相関数を使ってプログラムをコンパイルする:

具体的な型が異なる多相関数を使って別のプログラムをコンパイルする:

スコープ  (7)

任意のパック配列を取って任意のより高階の配列を返す関数の型を表す:

この型の関数を宣言し,具体的な例に対してこの関数を呼び出す:

出力が多相型の関数の型を表す:

この型の関数をコンパイルする:

整数しか取らない関数の型を表す:

この型の関数を表す:

整数型の関数を呼び出すプログラムをコンパイルする:

非整数型の関数が与えられるとこの関数はうまく動作しない:

階数が未満のパックアレーしか取らない関数の型を表す:

この型の関数を表す:

この関数を階数2のパックアレーに適用するプログラムをコンパイルする:

入力のパックアレーの階数が3のときはコンパイルに失敗する:

宣言における制約条件を使って関数のバージョンが区別できる.

次は.同じ関数に対する2つの宣言で,一つは"Integers"についてのもの,もう一方は"UnsignedIntegers"についてのものである:

一致する唯一の制約は"Integers"についてのものである:

以下では,両方の制約条件が一致し,("UnsignedMachineIntegers"についての)一番限定度が高い宣言が使われる:

CompilerInformationは,"Integer64"のような型が"Integers"のような抽象型にどのように作用するかを見る際に役に立つ.

制約条件は,代替物のリストを付けて与えることもできる.

この宣言は,"Integer64""Real64"の両方に適用できる:

この宣言は"Integer64"に使うことができる:

この宣言は,"Real64"にも使うことができる:

代替物のリストがある制約条件には,変数がある型を使うことができる:

この宣言は,"Integer64"に使うことができる:

"PackedArray"型にも使うことができる:

抽象型を宣言する手間をかけずに宣言を行うことは非常に便利である.これらの宣言は,使用されている型が完全に分かっていない場合でも,その型の形状を示すのに役に立つ.

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

テキスト

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

CMS

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

APA

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

BibTeX

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

BibLaTeX

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