F#のbase libraryであるFSharp.Coreを知る
printfn
とかはどこから来ているのという話
そもそもC#が事実上そうであるように、Microsoftが開発したF#の標準ライブラリというのもまた.NETのクラスライブラリを指している……わけではない。F#にはF#独自の標準ライブラリが用意されている。それがFSharp
名前空間に属しているモジュールとかであるようだ。
なかでもFSharp.Core
名前空間に属するものは
This site contains the documentation for the FSharp.Core library used in all F# code.
とされている。つまりF#のコードを書いた時点で自動的にopen FSharp.Core
ディレクティブが働いて基本的な機能が使えるようになっているらしい。
printfn
など特によく使う関数のほか、基本的な演算子、プリミティブ型なんかがこれらの昨日に含まれている。
C#でusing System;
ディレクティブを使った後でConsole.WriteLine()
が呼び出せるのとは違い、トップレベルの記述でprintfn
がいきなり使えるのもこうしたおかげ。
ただし、その実装はやはり.NETのクラスライブラリに依存しており、.NETを断ち切ってコードが書けるというわけでもない。C#と同様にプリミティブ型は.NETの共通言語基盤(?)におけるデータ型の別名であったりなど。
Basic Types
C#でいうところの組み込み型 (Built-in types)。中でも主要なものだけを列挙する。
F#の型 | .NETの型 |
---|---|
'T array | System.Array |
bool | System.Boolean |
byte | System.Byte |
char | System.Char |
decimal | System.Decimal |
float | System.Double |
int | System.Int32 |
obj | System.Object |
unit | - |
なおstring
型はここには含まれない。
unit
unit
型はF#特有の型で、これは唯一()
という値を持つ。基底のデータ型はobj
であり、IComparable
Interfaceを実装する。
'T array
Single dimensional, zero-based arrays, written
int[]
,string[]
etc.Use the values in the Array module to manipulate values of this type, or the notation
arr.[x]
to get/set array values.
いわゆる配列。'T array
型は次にあげるインターフェースを実装する:
IList
, ICollection
, IStructuralComparable
, IStructuralEquatable
, ICloneable
, IList<'T>
, ICollection<'T>
, IEnumerable<'T>
, IEnumerable