F# の型F# Types

このトピックでは、でF#使用される型とF# 、型の名前付けおよび記述方法について説明します。This topic describes the types that are used in F# and how F# types are named and described.

型のF#概要Summary of F# Types

一部の型は、ブール型 bool や、さまざまなサイズの整数および浮動小数点型などのプリミティブ型と見なされます。これには、バイトと文字の型が含まれます。Some types are considered primitive types, such as the Boolean type bool and integral and floating point types of various sizes, which include types for bytes and characters. これらの型については、「プリミティブ型」を参照してください。These types are described in Primitive Types.

言語に組み込まれているその他の型には、組、リスト、配列、シーケンス、レコード、および判別共用体が含まれます。Other types that are built into the language include tuples, lists, arrays, sequences, records, and discriminated unions. 他の .NET 言語の経験があり、学習F#中の場合は、これらの各型についてのトピックを読む必要があります。If you have experience with other .NET languages and are learning F#, you should read the topics for each of these types. これらの種類に関する詳細情報へのリンクは、このトピックの「関連トピック」セクションに記載されています。Links to more information about these types are included in the Related Topics section of this topic. これらF#の型は、関数型プログラミング言語に共通のプログラミングスタイルをサポートしています。These F#-specific types support styles of programming that are common to functional programming languages. これらの型の多くは、 F#これらの型に対する一般的な操作をサポートするライブラリ内のモジュールに関連付けられています。Many of these types have associated modules in the F# library that support common operations on these types.

関数の型には、パラメーターの型と戻り値の型に関する情報が含まれています。The type of a function includes information about the parameter types and return type.

.NET Framework は、オブジェクト型、インターフェイス型、デリゲート型などのソースです。The .NET Framework is the source of object types, interface types, delegate types, and others. 他の .NET 言語の場合と同様に、独自のオブジェクトの種類を定義できます。You can define your own object types just as you can in any other .NET language.

また、 F#コードでは、型の省略形であるエイリアスを定義することもできます。エイリアスは、型の代替名です。Also, F# code can define aliases, which are named type abbreviations, that are alternative names for types. 型が将来変更される可能性があり、型に依存するコードを変更しないようにする場合は、型の省略形を使用できます。You might use type abbreviations when the type might change in the future and you want to avoid changing the code that depends on the type. または、コードを読みやすく理解しやすい型のフレンドリ名として、型略称を使用することもできます。Or, you might use a type abbreviation as a friendly name for a type that can make code easier to read and understand.

F#関数型プログラミングを念頭に置いて設計された便利なコレクション型を提供します。F# provides useful collection types that are designed with functional programming in mind. これらのコレクション型を使用すると、スタイルでより機能的に機能するコードを記述するのに役立ちます。Using these collection types helps you write code that is more functional in style. 詳細については、「 F#コレクション型」を参照してください。For more information, see F# Collection Types.

型の構文Syntax for Types

コードF#では、多くの場合、型の名前を記述する必要があります。In F# code, you often have to write out the names of types. すべての型には構文形式があり、型の注釈、抽象メソッドの宣言、デリゲート宣言、シグネチャ、およびその他の構成体でこれらの構文形式を使用します。Every type has a syntactic form, and you use these syntactic forms in type annotations, abstract method declarations, delegate declarations, signatures, and other constructs. インタープリターで新しいプログラムコンストラクトを宣言するたびに、インタープリターはコンストラクトの名前とその型の構文を出力します。Whenever you declare a new program construct in the interpreter, the interpreter prints the name of the construct and the syntax for its type. この構文は、ユーザー定義型の識別子、または intstringのような組み込み識別子の場合もありますが、より複雑な型の場合は、構文がより複雑になります。This syntax might be just an identifier for a user-defined type or a built-in identifier such as for int or string, but for more complex types, the syntax is more complex.

次の表は、型のF#型構文の側面を示しています。The following table shows aspects of the type syntax for F# types.

[種類]Type 型の構文Type syntax 使用例Examples
プリミティブ型primitive type 型名type-name int


集計の種類 (クラス、構造体、共用体、レコード、列挙型など)aggregate type (class, structure, union, record, enum, and so on) 型名type-name System.DateTime

型略称type abbreviation 型略称-名前type-abbreviation-name bigint
完全修飾型fully qualified type 名前空間。型名namespaces.type-name


modules. type-namemodules.type-name


名前空間. modules. タイプ名namespaces.modules.type-name
arrayarray 型名[] またはtype-name[] or

型名の配列type-name array


int array
2次元配列two-dimensional array 型名[,]type-name[,] int[,]

3次元配列three-dimensional array 型名[,,]type-name[,,] float[,,]
tupletuple 「-name1 * 型-name2 ...」と入力します。type-name1 * type-name2 ... たとえば、(1,'b',3) の型 int * char * intFor example, (1,'b',3) has type int * char * int
ジェネリック型generic type 型パラメーター汎用型名type-parameter generic-type-name


'a list


Dictionary<'key, 'value>
構築された型 (特定の型引数が指定されたジェネリック型)constructed type (a generic type that has a specific type argument supplied) 型引数汎用型名type-argument generic-type-name


int option

string list

int ref




Dictionary<int, string>
1つのパラメーターを持つ関数型function type that has a single parameter パラメーター-type1 ->戻り値の型parameter-type1 -> return-type int を受け取り、型を持つ string を返す関数 int -> stringA function that takes an int and returns a string has type int -> string
複数のパラメーターを持つ関数の型function type that has multiple parameters パラメーター-type1 ->パラメーター- 型 ->...->戻り値の型parameter-type1 -> parameter-type2 -> ... -> return-type intfloat を受け取り、型を持つ string を返す関数 int -> float -> stringA function that takes an int and a float and returns a string has type int -> float -> string
パラメーターとしての高階関数higher order function as a parameter (関数型)(function-type) List.map の型 ('a -> 'b) -> 'a list -> 'b listList.map has type ('a -> 'b) -> 'a list -> 'b list
デリゲートdelegate 関数型のデリゲートdelegate of function-type delegate of unit -> int
柔軟な型flexible type #の種類名#type-name #System.Windows.Forms.Control

トピックTopic 説明Description
プリミティブ型Primitive Types 整数型、ブール型、および文字型など、組み込みの単純型について説明します。Describes built-in simple types such as integral types, the Boolean type, and character types.
Unit 型Unit Type unit 型について説明します。この型は、1つの値を持ち、() によって示されます。Visual Basic でのC# voidNothing と同じです。Describes the unit type, a type that has one value and that is indicated by (); equivalent to void in C# and Nothing in Visual Basic.
タプルTuples 組の型 (ペア、3要素、となどでグループ化された任意の型の関連する値で構成される型) について説明します。Describes the tuple type, a type that consists of associated values of any type grouped in pairs, triples, quadruples, and so on.
OptionsOptions オプションの種類について説明します。この型は、値を持つか空にすることができます。Describes the option type, a type that may either have a value or be empty.
リストLists 順序付けられ、変更できない一連の要素をすべて同じ型のリストについて説明します。Describes lists, which are ordered, immutable series of elements all of the same type.
配列Arrays 配列について説明します。配列は、連続したメモリブロックを占有し、固定サイズの、同じ型の変更可能な要素の順序付きセットです。Describes arrays, which are ordered sets of mutable elements of the same type that occupy a contiguous block of memory and are of fixed size.
シーケンスSequences 一連の値を表すシーケンス型について説明します。個々の値は、必要な場合にのみ計算されます。Describes the sequence type, which represents a logical series of values; individual values are computed only as necessary.
レコードRecords レコードの種類 (名前付きの値の小さな集計) について説明します。Describes the record type, a small aggregate of named values.
判別共用体Discriminated Unions 判別共用体型を記述します。この型は、値が一連の可能な型のいずれかになることができます。Describes the discriminated union type, a type whose values can be any one of a set of possible types.
関数Functions 関数の値について説明します。Describes function values.
クラスClasses .NET 参照型に対応するオブジェクト型であるクラス型について説明します。Describes the class type, an object type that corresponds to a .NET reference type. クラス型には、メンバー、プロパティ、実装されたインターフェイス、および基本型を含めることができます。Class types can contain members, properties, implemented interfaces, and a base type.
構造体Structures .NET 値型に対応するオブジェクト型である struct 型について説明します。Describes the struct type, an object type that corresponds to a .NET value type. struct 型は、通常、小さいデータの集計を表します。The struct type usually represents a small aggregate of data.
インターフェイスInterfaces インターフェイス型について説明します。これは、特定の機能を提供し、データを含まないメンバーのセットを表す型です。Describes interface types, which are types that represent a set of members that provide certain functionality but that contain no data. インターフェイス型は、役に立つオブジェクト型によって実装される必要があります。An interface type must be implemented by an object type to be useful.
デリゲートDelegates 関数をオブジェクトとして表すデリゲート型について説明します。Describes the delegate type, which represents a function as an object.
列挙体Enumerations 名前付きの値のセットに値が属する列挙型について説明します。Describes enumeration types, whose values belong to a set of named values.
属性Attributes 別の型のメタデータを指定するために使用される属性について説明します。Describes attributes, which are used to specify metadata for another type.
例外の種類Exception Types エラー情報を指定する例外について説明します。Describes exceptions, which specify error information.