F# と C# の記法比較

MSDN F# リファレンスを使い C# と記法を比較する

コレクション型

F# コレクション型 F# Collection Types 元ネタ http://msdn.microsoft.com/ja-jp/library/hh967652.aspx System.Collections.Generic の名前空間の要素などの .NET Framework とは異なります。 具体的には、配列のコレクションにのみ変更可能な要素がありま…

タプル

タプル Tuples ネタ元 http://msdn.microsoft.com/ja-jp/library/dd233200.aspx タプルには、2 個タプル、3 個タプルなどがあり、型が同じである場合と異なる場合があります。 // Tuple of two integers. ( 1, 2 ) // Triple of strings. ( "one", "two", "t…

文字列

文字列 Strings 元ネタ http://msdn.microsoft.com/ja-jp/library/dd323829.aspx エスケープシーケンスの扱いは C# と同じ。 @ 記号の後に続くリテラルは、逐語的文字列です。 この場合、2 つの引用符文字が 1 つの引用符文字として解釈されることを除いて、…

unit 型

unit 型 Unit Type 元ネタ http://msdn.microsoft.com/ja-jp/library/dd483472.aspx unit 型は、特定の値を持たないことを示す型です。unit 型には値が 1 つだけあり、他の値が存在しない場合や不要な場合のプレースホルダーとして機能します。 F# // The va…

プリミティブ型

プリミティブ型 Primitive Types 元ネタ http://msdn.microsoft.com/en-us/library/dd233210.aspx 省略。 F# では、float, double が Double になっていることぐらい。なので、F# では実数型として「float」をよく使う。 nativeint IntPtr 符号付き整数とし…

型推論

型推論 型推論 Type Inference 元ネタ http://msdn.microsoft.com/ja-jp/library/dd233180.aspx パラメーターおよび戻り値の型の推論 たとえば、次のコードでは、パラメーターの型 a および b と戻り値の型は、いずれも int と推論されます。これは、リテラ…

リテラル

リテラル literal 元ネタ http://msdn.microsoft.com/ja-jp/library/dd233193.aspx リテラル型 省略。"text"B で ASCII の byte[] を返すのが、それらしい。 F# 3.1 では、文字列リテラルを結合するために + 符号を使用できます。 また、列挙型フラグを結合…

null 値

null 値 Null Values 元ネタ http://msdn.microsoft.com/ja-jp/library/dd233197.aspx .NET のメソッドに null 値を渡すには、呼び出し元のコードで null キーワードを使用します。 F# open System // Pass a null value to a .NET method. let ParseDateTim…

値 Values 元ネタ http://msdn.microsoft.com/ja-jp/library/dd233185.aspx 値の束縛 束縛とは、名前と定義を関連付けることを意味します。 let キーワードは、次の例のように、値のバインディングを行います。 F# let a = 1 let b = 100u let str = "text" …

インライン関数

インライン関数 Inline Functions 元ネタ http://msdn.microsoft.com/ja-jp/library/dd548047.aspx inline 修飾子は、最上位の関数、モジュール レベルの関数、またはクラスのメソッド レベルの関数に適用できます。 最上位のインライン関数、インラインのイ…

外部関数

外部関数 External Functions 元ネタ http://msdn.microsoft.com/ja-jp/library/dd393785.aspx 次のエクスポート関数を含むネイティブ C++ DLL があると仮定します。 #include <stdio.h> extern "C" void __declspec(dllexport) HelloWorld() { printf("Hello world, </stdio.h>…

エントリ ポイント

エントリ ポイント Entry Point 元ネタ http://msdn.microsoft.com/ja-jp/library/dd402151.aspx 簡単な main 関数の例を次に示します。 [<EntryPoint>] let main args = printfn "Arguments passed to function : %A" args // Return 0. This indicates success. 0 C# </entrypoint>…

再帰関数: rec キーワード

再帰関数: rec キーワード Recursive Functions: The rec Keyword 元ネタ http://msdn.microsoft.com/ja-jp/library/dd233232.aspx rec キーワードは、再帰関数を定義するときに let キーワードと一緒に使用します。 n 番目のフィボナッチ数を計算する再帰関…

ラムダ式: fun キーワード

ラムダ式: fun キーワード Lambda Expressions: The fun Keyword 元ネタ http://msdn.microsoft.com/ja-jp/library/dd233201.aspx ラムダ式、つまり匿名関数を定義するには、fun キーワードを使用します。 F# // Lambda expressions with parameter lists. f…

do 束縛

let 束縛 do 束縛 do Bindings 元ネタ http://msdn.microsoft.com/en-us/library/dd393786.aspx 関数または値の定義を使用しないでコードを実行する場合は、do 束縛を使用します。 do 束縛内の式は、unit を返す必要があります。 最上位の do 束縛内のコード…

let 束縛

let 束縛 let Bindings 元ネタ http://msdn.microsoft.com/ja-jp/library/dd233238.aspx 1つの名前を 1 つの単純な値にバインドする式です。 F# let i = 1 バインド(束縛)を強調すれば、const を付けることになる。 C# const int i = 1; 式の各行にインデ…

関数

関数 元ネタ http://msdn.microsoft.com/ja-jp/library/dd233229.aspx 単純な関数定義の例を以下に示します。 単純な関数 F# let f x = x + 1 C# int f( int x ) { return x+1; } スコープ たとえば次のコードは、モジュール スコープではエラーになりますが…

目次

MSDN F# リファレンス http://msdn.microsoft.com/ja-jp/library/dd233181.aspx 文法を全体を通して学ぶためと、MSDN のサンプルコードを C# と書き直してみる。