シンボルと演算子のリファレンス

この記事には、F# 言語で使用されるシンボルおよび演算子と、それぞれの短い説明の表が含まれています。 複数のロールで使用する場合、いくつかのシンボルと演算子には 2 つ以上のエントリがあります。

コメント、コンパイラ ディレクティブ、および属性のシンボル

次の表では、コメント、コンパイラ ディレクティブ、および属性に関連するシンボルについて説明します。

シンボルまたは演算子 リンク 説明
(*...*) 複数行にわたる可能性のあるコメントを区切ります。
// 単一行コメントの先頭を示します。
/// XML に関するドキュメント XML コメントを示します。
# コンパイラ ディレクティブ #light のように、プリプロセッサまたはコンパイラ ディレクティブの前に付けられます。
[<...>] 属性 属性を区切ります。

文字列と識別子のシンボル

次の表では、文字列に関連するシンボルについて説明します。

シンボルまたは演算子 リンク 説明
" 文字列 テキスト文字列を区切ります。
@" 文字列 円記号などの文字を含む可能性がある、逐語的なテキスト文字列を開始します。
""" 文字列 円記号、二重引用符などの文字を含む可能性がある、三重引用符で囲まれたテキスト文字列を区切ります。
$" 補間文字列 補間された文字列を開始します。
' リテラル 1 文字のリテラルを区切ります。
``...`` 言語のキーワードなど、区切らなければ有効な識別子にならない識別子を区切ります。
\ 文字列 次の文字をエスケープします。文字や文字列リテラルで使用されます。

算術演算子

次の表に、算術演算子を示します。

シンボルまたは演算子 リンク 説明
+ 算術演算子
  • 二項演算子として使用されている場合は、左辺と右辺を加算します。
  • 単項演算子として使用されている場合は、正数を示します。 (正式には、同じ値を符号を変更しないで生成します。)
- 算術演算子
  • 二項演算子として使用されている場合は、左辺から右辺を減算します。
  • 単項演算子として使用されている場合は、否定演算を実行します。
* 算術演算子

タプル

測定単位
  • 二項演算子として使用されている場合は、左辺と右辺を乗算します。
  • 型では、タプルのペアリングを示します。
  • 測定単位の型で使用されます。
/ 算術演算子

測定単位
  • 左辺 (分子) を右辺 (分母) で除算します。
  • 測定単位の型で使用されます。
% 算術演算子 整数の剰余を計算します。
** 算術演算子 指数演算を実行します (x ** yxy 乗を意味します)。

比較演算子

次の表では、比較演算子について説明します。

シンボルまたは演算子 リンク 説明
< 算術演算子 小なり演算を実行します。
<> 算術演算子 左辺が右辺と等しくない場合は true を返します。それ以外の場合は false を返します。
<= 算術演算子 左辺が右辺以下である場合は true を返します。それ以外の場合は false を返します。
= 算術演算子 左辺が右辺と等しい場合は true を返します。それ以外の場合は false を返します。
> 算術演算子 左辺が右辺より大きい場合は true を返します。それ以外の場合は false を返します。
>= 算術演算子 左辺が右辺以上である場合は true を返します。それ以外の場合は false を返します。

ブール演算子

次の表では、算術演算子とブール演算子のシンボルについて説明します。

シンボルまたは演算子 リンク 説明
&& ブール演算子 ブール値の AND 演算を実行します。
|| ブール演算子 ブール型の OR 演算を実行します。

ビット処理演算子

次の表では、ビット処理演算子について説明します。

シンボルまたは演算子 リンク 説明
&&& ビット処理演算子 &、^、| ビットごとの AND 演算を実行します。
<<< ビット処理演算子 &、^、| 左辺にある数のビットを、右辺に指定されたビット数だけ左にシフトします。
>>> ビット処理演算子 &、^、| 左辺にある数のビットを、右辺に指定された桁数だけ右にシフトします。
^^^ ビット処理演算子 &、^、| ビットごとの排他的 OR 演算を実行します。
||| ビット処理演算子 &、^、| ビットごとの OR 演算を実行します。
~~~ ビット処理演算子 &、^、| ビットごとの NOT 演算を実行します。

関数のシンボルと演算子

次の表では、関数に関連する演算子とシンボルについて説明します。

シンボルまたは演算子 リンク 説明
-> 関数 関数式では、入力パターンが出力式から分離されます。
|> 関数 左辺の結果を関数を右辺の関数に渡します (前方パイプ演算子)。
||> ( ||> )<'T1,'T2,'U> 関数 左辺の 2 つの引数のタプルを右辺の関数に渡します。
|||> ( |||> )<'T1,'T2,'T3,'U> 関数 左辺の 3 つの引数のタプルを右辺の関数に渡します。
>> 関数 2 つの関数を合成します (前方合成演算子)。
<< 関数 2 つの関数を逆順で合成します。2 つ目の関数が先に実行されます (後方合成演算子)。
<| 関数 右辺の式の結果を左辺の関数に渡します (後方パイプ演算子)。
<|| ( <|| )<'T1,'T2,'U> 関数 右辺にある 2 つの引数のタプルを左辺の関数に渡します。
<||| ( <||| )<'T1,'T2,'T3,'U> 関数 右辺にある 3 つの引数のタプルを左辺の関数に渡します。

型のシンボルと演算子

次の表では、型の注釈と型のテストに関連するシンボルについて説明します。

シンボルまたは演算子 リンク 説明
-> 関数 関数の型では、引数と戻り値を区切り、シーケンス式の結果も生成します。
: 関数 型注釈では、パラメーター名またはメンバー名とその型を区切ります。
:> キャストと変換 型を階層の上位の型に変換します。
:? match 式 値が指定した型と一致する場合 (サブタイプの場合を含む) は true を返します。それ以外の場合は、false を返します (型テスト演算子)。
:?> キャストと変換 型を階層の下位にある型に変換します。
# フレキシブル型 型で使用されている場合は、フレキシブル型 を示します。これは、型またはその派生型のいずれかを指します。
' 自動ジェネリック化 ジェネリック型パラメーターを示します。
<...> 自動ジェネリック化 型パラメーターを区切ります。
^ 静的に解決される型パラメーター

文字列
  • 実行時ではなくコンパイル時に解決する必要がある型パラメーターを指定します。
  • 文字列を連結します。

メンバー検索とスライス式で使用されるシンボル

次の表では、メンバー検索とスライス式で使用される追加のシンボルについて説明します。

シンボルまたは演算子 リンク 説明
. [メンバー] メンバーにアクセスし、完全修飾名の個々の名前を区切ります。
.[...] 配列

インデックス付きプロパティ

スライス式
配列、文字列、またはコレクションにインデックスを付けたり、コレクションのスライスを取得したりします。

タプル、リスト、配列、単位式、およびパターンで使用されるシンボル

次の表では、タプル、リスト、単位値、および配列に関連するシンボルについて説明します。

シンボルまたは演算子 リンク 説明
( ) Unit 型 unit 型の 1 つの値を表します。
, タプル タプルの要素または型パラメーターを区切ります。
:: リスト

match 式
  • リストを作成します。 左辺の要素が右辺のリストに追加されます。
  • リストの各部分を区切るためにパターン マッチで使用されます。
@ リスト 2 つのリストを連結します。
[...] リスト リストの要素を区切ります。
[|...|] 配列 配列の要素を区切ります。

命令型の式で使用されるシンボル

次の表では、式で使用される追加のシンボルについて説明します。

シンボルまたは演算子 リンク 説明
<- 値を変数に代入します。
; 冗語構文

式を区切ります (ほとんどの場合、冗語構文で使用されます)。 リストの要素またはレコードのフィールドも区切ります。

シーケンスおよびコンピュテーション式で使用される追加のシンボル

次の表では、シーケンスおよびコンピュテーション式で使用される追加のシンボルについて説明します。

シンボルまたは演算子 リンク 説明
-> シーケンス (シーケンス式の) 式を生成します。do yield キーワードと等価です。
! コンピュテーション式 キーワードの後に付いて、コンピュテーション式で制御されるキーワードの動作の変更済みバージョンを示します。

一致パターンで使用される追加のシンボル

次の表では、パターン マッチングに関連するシンボルについて説明します。

シンボルまたは演算子 リンク 説明
-> match 式 match 式で使用されます。
& match 式
  • 他の言語と相互運用するときに使用するための、変更可能な値のアドレスを計算します。
  • AND パターンで使用されます。
_ match 式

ジェネリック
  • ワイルドカード パターンを示します。
  • 匿名ジェネリック パラメーターを指定します。
| match 式 個々の一致ケース、個々の判別共用体ケース、および列挙値を区切ります。

宣言で使用される追加のシンボル

次の表では、宣言に関連するシンボルについて説明します。

シンボルまたは演算子 リンク 説明
(|...|) アクティブ パターン アクティブ パターン名を区切ります。 バナナ クリップ とも呼ばれます。
? パラメーターと引数 省略可能な引数を指定します。
~~ 演算子のオーバーロード 単項否定演算子のオーバー ロードを宣言するために使用されます。
~- 演算子のオーバーロード 単項マイナス演算子のオーバー ロードを宣言するために使用されます。
~+ 演算子のオーバーロード 単項プラス演算子のオーバー ロードを宣言するために使用されます。

引用で使用される追加のシンボル

次の表では、コード クォートに関連するシンボルについて説明します。

シンボルまたは演算子 リンク 説明
<@...@> コード クォート 型指定されたコード クォートを区切ります。
<@@...@@> コード クォート 型指定されていないコード クォートを区切ります。
% コード クォート 型指定されたコード クォートに式をスプライスするために使用されます。
%% コード クォート 型指定されていないコード クォートに式をスプライスするために使用されます。

動的検索式で使用される追加のシンボル

次の表では、動的検索式で使用される追加のシンボルについて説明します。 通常、これらはルーチン F # プログラミングでは使用されず、F# コア ライブラリにはこれらの演算子の実装が用意されていません。

シンボルまたは演算子 リンク 説明
? 動的メソッドや動的プロパティの呼び出しのための演算子として使用されます。
? ... <- ... 動的プロパティを設定するための演算子として使用されます。

参照セル演算子

次の表では、参照セルに関連するシンボルについて説明します。

シンボルまたは演算子 リンク 説明
! 参照セル 参照セルを逆参照します。
:= 参照セル 参照セルに値を割り当てます。

Null 許容演算子

Null 許容演算子は、クエリ式で使用するために定義されます。 次の表に、これらの演算子の一覧を示します。

シンボルまたは演算子 リンク 説明
%? Null 許容の演算子 右辺が null 許容型である場合に、整数の剰余を計算します。
*? Null 許容の演算子 右辺が null 許容型である場合は、左辺と右辺を乗算します。
+? Null 許容の演算子 右辺が null 許容型である場合は、左辺と右辺を加算します。
-? Null 許容の演算子 右辺が null 許容型である場合は、左辺から右辺を減算します。
/? Null 許容の演算子 右辺が null 許容型である場合は、左辺を右辺で除算します。
<? Null 許容の演算子 右辺が null 許容型である場合は、小なり演算を実行します。
<>? Null 許容の演算子 右辺が null 許容型である場合は、"等しくない" 演算を実行します。
<=? Null 許容の演算子 右辺が null 許容型である場合は、"以下" 演算を実行します。
=? Null 許容の演算子 右辺が null 許容型である場合は、"等しい" 演算を実行します。
>? Null 許容の演算子 右辺が null 許容型である場合は、"大なり" 演算を実行します。
>=? Null 許容の演算子 右辺が null 許容型である場合は、"以上" 演算を実行します。
?>=, ?>, ?<=, ?<, ?=, ?<>, ?+, ?-, ?*, ?/ Null 許容の演算子 null 許容型が左辺にある場合、 ? プレフィックスがない、対応する演算子と等価です。
>=?, >?, <=?, <?, =?, <>?, +?, -?, *?, /? Null 許容の演算子 null 許容型が左辺にある場合、 ? サフィックスがない、対応する演算子と等価です。
?>=?, ?>?, ?<=?, ?<?, ?=?, ?<>?, ?+?, ?-?, ?*?, ?/? Null 許容の演算子 両辺が null 許容型である場合、前後に疑問符がない、対応する演算子と等価です。

演算子の優先順位

次の表に、F# 言語で使用される演算子とその他の式のキーワードの優先順位を、低いものから順に示します。 該当する場合には、結合規則も示します。

演算子 結合規則
as Right
when Right
| (パイプ) Left
; Right
let 非結合
function, fun, match, try 非結合
if 非結合
not Right
-> Right
:= Right
, 非結合
or, || Left
&, && Left
:>, :?> Right
<op>op=|op&op&$

(<<<>>>|||&&& を含む)
Left
^op

(^^^ を含む)
Right
:: Right
:? 非結合
-op+op これらのシンボルを挿入辞として使用するために適用
*op/op%op Left
**op Right
f x (関数適用)

(lazy xassert x を含む)
Left
| (パターン マッチ) Right
前置演算子 (+op-op%%%&&&!op~op) Left
. Left
f(x) Left
f<types> Left

F# はカスタム演算子のオーバー ロードをサポートしています。 これは、独自の演算子を定義できることを意味します。 上記の表では、op に、組み込みまたはユーザー定義の有効な (場合によっては空の) 演算子文字シーケンスを指定できます。 つまり、この表を使用して、カスタム演算子に使用する文字のシーケンスを決定し、目的のレベルの優先順位を実現することができます。 先行する . 文字は、コンパイラが優先順位を決定する場合は無視されます。

関連項目