Closed3

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

このスクラップは2023/08/11にクローズされました