F# 言語リファレンスF# Language Reference

このセクションは、.NET を対象F#とするマルチパラダイムプログラミング言語である言語への参照です。This section is a reference to the F# language, a multi-paradigm programming language targeting .NET. F# 言語は、関数型プログラミング、オブジェクト指向プログラミング、および命令型プログラミングのモデルをサポートします。The F# language supports functional, object-oriented and imperative programming models.

F# トークンF# Tokens

次の表に、F# でトークンとして使用されるキーワード、シンボル、およびリテラルを表にまとめたリファレンス トピックを示します。The following table shows reference topics that provide tables of keywords, symbols and literals used as tokens in F#.

TitleTitle 説明Description
キーワード リファレンスKeyword Reference F# 言語のすべてのキーワードに関する情報へのリンクを示します。Contains links to information about all F# language keywords.
シンボルと演算子のリファレンスSymbol and Operator Reference F# 言語で使用するシンボルと演算子の表を示します。Contains a table of symbols and operators that are used in the F# language.
リテラルLiterals F# のリテラル値の構文と、F# のリテラルの型情報を指定する方法を示します。Describes the syntax for literal values in F# and how to specify type information for F# literals.

F# 言語の概念F# Language Concepts

次の表に、言語の概念について説明したリファレンス トピックを示します。The following table shows reference topics available that describe language concepts.

TitleTitle 説明Description
関数Functions 関数は、あらゆるプログラミング言語においてプログラムの実行の基本となる単位です。Functions are the fundamental unit of program execution in any programming language. 他の言語の場合と同様に、F# の関数にもそれぞれ名前と本体があり、パラメーターや引数を受け取ることができます。As in other languages, an F# function has a name, can have parameters and take arguments, and has a body. F# ではさらに、関数型プログラミング構成要素もサポートしています。たとえば、関数を値として処理したり、名前のない関数を式で使用したりできます。また、関数の合成による新しい関数の作成、カリー化関数、関数の引数の部分適用による関数の暗黙の定義などがサポートされます。F# also supports functional programming constructs such as treating functions as values, using unnamed functions in expressions, composition of functions to form new functions, curried functions, and the implicit definition of functions by way of the partial application of function arguments.
F# の型F# Types F# で使用される型と、それらを指定および記述する方法について説明します。Describes the types that are used in F# and how F# types are named and described.
型推論Type Inference F# コンパイラが値、変数、パラメーター、および戻り値の型を推論する方法について説明します。Describes how the F# compiler infers the types of values, variables, parameters and return values.
自動ジェネリック化Automatic Generalization F# のジェネリックな構成要素について説明します。Describes generic constructs in F#.
継承Inheritance 継承について説明します。継承は、オブジェクト指向プログラミングで "is-a" 関係 (サブタイプ) をモデル化するために使用されます。Describes inheritance, which is used to model the "is-a" relationship, or subtyping, in object-oriented programming.
メンバーMembers F# オブジェクト型のメンバーについて説明します。Describes members of F# object types.
パラメーターと引数Parameters and Arguments パラメーターを定義して、関数、メソッド、およびプロパティに引数を渡すのための言語サポートについて説明します。Describes language support for defining parameters and passing arguments to functions, methods, and properties. 参照渡しの方法についても説明します。It includes information about how to pass by reference.
演算子のオーバーロードOperator Overloading クラス型またはレコード型の算術演算子をオーバーロードする方法と、グローバル レベルで算術演算子をオーバーロードする方法について説明します。Describes how to overload arithmetic operators in a class or record type, and at the global level.
キャストと変換Casting and Conversions F# の型変換のサポートについて説明します。Describes support for type conversions in F#.
アクセス制御Access Control F# のアクセス制御について説明します。Describes access control in F#. アクセス制御とは、特定のプログラム要素 (型、メソッド、関数など) を使用できるクライアントを宣言することを意味します。Access control means declaring what clients are able to use certain program elements, such as types, methods, functions and so on.
パターン一致Pattern Matching パターンについて説明します。パターンは、F# 言語全体で使用される入力データの変換規則です。データをパターンと比較して抽出したり、データを構成要素に分解したり、さまざまな方法でデータから情報を抽出したりするために使用されます。Describes patterns, which are rules for transforming input data that are used throughout the F# language to extract compare data with a pattern, decompose data into constituent parts, or extract information from data in various ways.
アクティブ パターンActive Patterns アクティブ パターンについて説明します。Describes active patterns. アクティブ パターンでは、入力データを分割する名前付きパーティションを定義できます。Active patterns enable you to define named partitions that subdivide input data. アクティブ パターンを使用すると、パーティションごとにカスタマイズした方法でデータを分解できます。You can use active patterns to decompose data in a customized manner for each partition.
アサーションAssertions assert 式について説明します。これは、式のテストに使用できるデバッグ機能です。Describes the assert expression, which is a debugging feature that you can use to test an expression. デバッグ モードでエラーが発生すると、アサーションによってシステム エラーのダイアログ ボックスが生成されます。Upon failure in Debug mode, an assertion generates a system error dialog box.
例外処理Exception Handling F# 言語での例外処理のサポートについて説明します。Contains information about exception handling support in the F# language.
属性attributes 属性について説明します。属性により、プログラミング構造にメタデータを適用できます。Describes attributes, which enable metadata to be applied to a programming construct.
リソースの管理: use キーワードResource Management: The use Keyword use キーワードと using キーワードについて説明します。これらを使用して、リソースの初期化と解放を制御できます。Describes the keywords use and using, which can control the initialization and release of resources
名前空間namespaces F# における名前空間のサポートについて説明します。Describes namespace support in F#. 名前空間を使用すると、プログラム要素のグループに名前を割り当てて、関連する機能の区分にコードを編成することができます。A namespace lets you organize code into areas of related functionality by enabling you to attach a name to a grouping of program elements.
モジュールModules モジュールについて説明します。Describes modules. F# のモジュールは、F# プログラムにおける値、型、関数値などの F# コードのグループです。An F# module is a grouping of F# code, such as values, types, and function values, in an F# program. モジュールのコードをグループ化すると、関連するコードをまとめることができ、プログラム内で名前の競合を回避するのに役立ちますGrouping code in modules helps keep related code together and helps avoid name conflicts in your program.
インポート宣言: open キーワードImport Declarations: The open Keyword open の動作について説明します。Describes how open works. インポート宣言は、完全修飾名を使用せずに参照できる要素が含まれるモジュールまたは名前空間を指定します。An import declaration specifies a module or namespace whose elements you can reference without using a fully qualified name.
シグネチャSignatures シグネチャとシグネチャ ファイルについて説明します。Describes signatures and signature files. シグネチャ ファイルには、型、名前空間、モジュールなど F# プログラムの一連の要素のパブリック シグネチャに関する情報が含まれています。A signature file contains information about the public signatures of a set of F# program elements, such as types, namespaces, and modules. これらのプログラム要素のアクセシビリティを指定するために使用できます。It can be used to specify the accessibility of these program elements.
XML に関するドキュメントXML Documentation XML ドキュメント コメント (トリプル スラッシュ コメントとも呼ばれます) のドキュメント ファイルを生成するためのサポートについて説明します。Describes support for generating documentation files for XML doc comments, also known as triple slash comments. 他の .NET 言語と同様に、F# のコード コメントからドキュメントを生成できます。You can produce documentation from code comments in F# just as in other .NET languages.
冗語構文Verbose Syntax 軽量構文が有効になっていない場合の F# の構成要素の構文について説明します。Describes the syntax for F# constructs when lightweight syntax is not enabled. 冗語構文は、コード ファイルの先頭にある #light "off" ディレクティブで示されています。Verbose syntax is indicated by the #light "off" directive at the top of the code file.

F# の型F# Types

次の表に、F# 言語でサポートされる型について説明したリファレンス トピックを示します。The following table shows reference topics available that describe types supported by the F# language.

TitleTitle 説明Description
values 値について説明します。値は、特定の型を持つ変更不可の数量です。値は、整数または浮動小数点数、文字またはテキスト、リスト、シーケンス、配列、タプル、判別共用体、レコード、クラス型、関数値のいずれかです。Describes values, which are immutable quantities that have a specific type; values can be integral or floating point numbers, characters or text, lists, sequences, arrays, tuples, discriminated unions, records, class types, or function values.
基本型Basic Types F#言語で使用される基本的な基本型について説明します。Describes the fundamental basic types that are used in the F# language. また、対応する .NET 型と各型の最小値と最大値も示します。It also provides the corresponding .NET types and the minimum and maximum values for each type.
Unit 型Unit Type unit 型について説明します。これは、特定の値を持たないことを示す型です。unit 型には値が 1 つだけあり、他の値が存在しない場合や不要な場合のプレースホルダーとして機能します。Describes the unit type, which is a type that indicates the absence of a specific value; the unit type has only a single value, which acts as a placeholder when no other value exists or is needed.
文字列Strings F# の文字列について説明します。Describes strings in F#. string 型は、Unicode 文字のシーケンスとしての、変更不可のテキストを表します。The string type represents immutable text, as a sequence of Unicode characters. string は、.NET Framework の System.String のエイリアスです。string is an alias for System.String in the .NET Framework.
タプルTuples タプルについて説明します。タプルは、名前のない値の順序を指定したグループです。各値の型は異なる場合もあります。Describes tuples, which are groupings of unnamed but ordered values of possibly different types.
F# コレクション型F# Collection Types 配列、リスト、シーケンス (seq)、マップ、およびセットの型を含む、F# 機能のコレクション型の概要を示します。An overview of the F# functional collection types, including types for arrays, lists, sequences (seq), maps, and sets.
リストLists リストについて説明します。Describes lists. F# のリストは、順序が指定されており変更できない一連のすべて同じ型の要素です。A list in F# is an ordered, immutable series of elements all of the same type.
OptionsOptions オプション型について説明します。Describes the option type. F# のオプションは、値が存在する場合にも存在しない場合にも使用されます。An option in F# is used when a value may or may not exist. オプションには基になる型があり、その型の値を保持する場合と値がない場合があります。An option has an underlying type and may either hold a value of that type or it may not have a value.
シーケンスSequences シーケンスについて説明します。Describes sequences. シーケンスは、すべてが 1 つの型である論理的な一連の要素です。A sequence is a logical series of elements all of one type. シーケンスの個々の要素は必要な場合にのみ計算されるため、リテラル要素が示す数よりも少ない要素で表現されることがあります。Individual sequence elements are only computed if required, so the representation may be smaller than a literal element count indicates.
配列Arrays 配列について説明します。Describes arrays. 配列は、0 から始まる一連のデータ要素の、固定サイズの変更可能なシーケンスで、その型はすべて同じです。Arrays are fixed-size, zero-based, mutable sequences of consecutive data elements, all of the same type.
レコードRecords レコードについて説明します。Describes records. レコードは、名前付きの値の単純な集合を表しており、オプションでメンバーを含みます。Records represent simple aggregates of named values, optionally with members.
判別共用体Discriminated Unions 判別共用体について説明します。これは、さまざまな名前付きケースのうちのいずれかである可能性がある値をサポートします。値や型はそれぞれ異なる場合もあります。Describes discriminated unions, which provides support for values which may be one of a variety of named cases, each with possibly different values and types.
列挙体Enumerations 列挙型について説明します。列挙型は、定義された一連の名前付きの値を持つ型です。Describes enumerations are types that have a defined set of named values. リテラルの代わりに使用すると、コードの読み取りおよび保守が容易になります。You can use them in place of literals to make code more readable and maintainable.
参照セルReference Cells 参照セルについて説明します。参照セルは、参照セマンティクスを持つ変更可能な値を作成できる格納場所です。Describes reference cells, which are storage locations that enable you to create mutable variables with reference semantics.
型略称Type Abbreviations 型略称について説明します。型略称は、型の代替名です。Describes type abbreviations, which are alternate names for types.
クラスClasses クラスについて説明します。クラスは、プロパティ、メソッド、およびイベントを持つことができるオブジェクトを表す型です。Describes classes, which are types that represent objects that can have properties, methods, and events.
構造体Structures 構造体について説明します。構造体はコンパクトなオブジェクト型であり、データが少量で動作が単純な型のクラスよりも効率が良い場合があります。Describes structures, which are compact object types that can be more efficient than a class for types that have a small amount of data and simple behavior.
インターフェイスInterfaces インターフェイスについて説明します。インターフェイスでは、他のクラスが実装する関連メンバーのセットを指定します。Describes interfaces, which specify sets of related members that other classes implement.
抽象クラスAbstract Classes 抽象クラスについて説明します。抽象クラスは、一部またはすべてのメンバーを実装しないようにして、派生クラスから実装できるようにするためのクラスです。Describes abstract classes, which are classes that leave some or all members unimplemented, so that implementations can be provided by derived classes.
型拡張Type Extensions 型拡張について説明します。型拡張を使用すると、定義済みのオブジェクト型に新しいメンバーを追加できます。Describes type extensions, which let you add new members to a previously defined object type.
フレキシブル型Flexible Types フレキシブル型について説明します。Describes flexible types. フレキシブル型の注釈は、パラメーター、変数、または値の型が、指定された型と互換性があることを示します。互換性は、クラスまたはインターフェイスのオブジェクト指向の階層における位置によって決まります。A flexible type annotation is an indication that a parameter, variable or value has a type that is compatible with type specified, where compatibility is determined by position in an object-oriented hierarchy of classes or interfaces.
デリゲートDelegates デリゲートについて説明します。デリゲートとは、オブジェクトとしての関数呼び出しを表します。Describes delegates, which represent a function call as an object.
測定単位Units of Measure 測定単位について説明します。Describes units of measure. F# の浮動小数点値には測定単位を関連付けることができます。測定単位は一般に、長さ、体積、質量などを示すために使用されます。Floating point values in F# can have associated units of measure, which are typically used to indicate length, volume, mass, and so on.
型プロバイダーType Providers 型プロバイダーについて説明します。組み込みの型プロバイダーを使用してデータベースや Web サービスにアクセスする方法に関するチュートリアルへのリンクを提供します。Describes type provides and provides links to walkthroughs on using the built-in type providers to access databases and web services.

F# の式F# Expressions

次の表に、F# の式を説明するトピックの一覧を示します。The following table lists topics that describe F# expressions.

TitleTitle 説明Description
条件式: if...then...elseConditional Expressions: if...then...else if...then...else 式について説明します。これは、コードのさまざまな分岐を実行する機能であり、指定されたブール式に応じて異なる値に評価されます。Describes the if...then...else expression, which runs different branches of code and also evaluates to a different value depending on the Boolean expression given.
match 式Match Expressions match 式について説明します。この式により、式を一連のパターンと比較し、その比較に基づいて分岐を制御できます。Describes the match expression, which provides branching control that is based on the comparison of an expression with a set of patterns.
ループ: for...toLoops: for...to Expression for...to 式について説明します。この式は、ループでループ変数の値の範囲を繰り返し処理するために使用します。Describes the for...to expression, which is used to iterate in a loop over a range of values of a loop variable.
ループ: for...inLoops: for...in Expression for...in 式について説明します。これは、列挙可能なコレクション (範囲表現、シーケンス、リスト、配列、または列挙型をサポートするその他の構成要素) のパターンと一致するかどうかの照合を反復処理するために使用されるループ構造です。Describes the for...in expression, a looping construct that is used to iterate over the matches of a pattern in an enumerable collection such as a range expression, sequence, list, array, or other construct that supports enumeration.
ループ: while...doLoops: while...do Expression while...do 式について説明します。これは、指定したテスト条件が true の間に反復実行 (ループ) を行う場合に使用します。Describes the while...do expression, which is used to perform iterative execution (looping) while a specified test condition is true.
オブジェクト式Object Expressions オブジェクト式について説明します。これは、既存の基本型、インターフェイス、または一連のインターフェイスに基づいて、動的に作成される匿名のオブジェクト型の新しいインスタンスを作成する式です。Describes object expressions, which are expressions that create new instances of a dynamically created, anonymous object type that is based on an existing base type, interface, or set of interfaces.
遅延式Lazy Expressions 遅延式について説明します。これは、すぐに評価されるのではなく、結果が実際に必要になったときに評価される計算です。Describes lazy expressions, which are computations that are not evaluated immediately, but are instead evaluated when the result is actually needed.
コンピュテーション式Computation Expressions F# のコンピュテーション式について説明します。F# のコンピュテーション式には、制御フローの構成要素とバインドを使用してシーケンス化および結合できる計算を記述するための便利な構文が用意されています。Describes computation expressions in F#, which provide a convenient syntax for writing computations that can be sequenced and combined using control flow constructs and bindings. これらの計算式を使用すると、モナドの便利な構文が提供されます。モナドとは、関数型プログラムのデータ、制御、および副作用の管理に使用できる関数型プログラミングの機能です。They can be used to provide a convenient syntax for monads, a functional programming feature that can be used to manage data, control and side effects in functional programs. 非同期ワークフローはコンピュテーション式の一種であり、非同期の並列計算をサポートします。One type of computation expression, the asynchronous workflow, provides support for asynchronous and parallel computations. 詳細については、「非同期ワークフロー」を参照してください。For more information, see Asynchronous Workflows.
非同期ワークフローAsynchronous Workflows 非同期ワークフローについて説明します。非同期ワークフローは、同期コードを通常記述するのと非常に近い方法で非同期コードを記述できる言語機能です。Describes asynchronous workflows, a language feature that lets you write asynchronous code in a way that is very close to the way you would naturally write synchronous code.
コード クォートCode Quotations コード クォートについて説明します。この言語機能を使用すると、F# のコード式をプログラムで生成して使用できます。Describes code quotations, a language feature that enables you to generate and work with F# code expressions programmatically.
クエリ式Query Expressions クエリ式について説明します。これは、F# 用の LINQ を実装し、データ ソースや列挙可能なコレクションに対するクエリを記述できるようにする言語機能です。Describes query expressions, a language feature that implements LINQ for F# and enables you to write queries against a data source or enumerable collection.

コンパイラでサポートされる構成要素Compiler-supported Constructs

次の表に、特殊なコンパイラでサポートされる構成要素を説明するトピックの一覧を示します。The following table lists topics that describe special compiler-supported constructs.

トピックTopic 説明Description
コンパイラ オプションCompiler Options F# コンパイラのコマンド ライン オプションについて説明します。Describes the command-line options for the F# compiler.
コンパイラ ディレクティブCompiler Directives プロセッサ ディレクティブとコンパイラ ディレクティブについて説明します。Describes processor directives and compiler directives.
ソース行、ファイル、およびパスの識別子Source Line, File, and Path Identifiers __LINE____SOURCE_DIRECTORY____SOURCE_FILE__ の識別子について説明します。これは、コード内のソース行番号、ディレクトリおよびファイル名にアクセスするできるようにする組み込みの値です。Describes the identifiers __LINE__, __SOURCE_DIRECTORY__ and __SOURCE_FILE__, which are built-in values that enable you to access the source line number, directory and file name in your code.

関連項目See also