| 元のコード | 変更後のコード | ソース互換性 | バイナリ互換性 | メモ |
|---|---|---|---|---|
let f x y = ... |
let f (x, y) = ... |
No | ||
let f (x, y) = ... |
let f x y = ... |
No | ||
type t = int |
type s = int |
No | Yes | 型略称の名前を変更してもF#用のメタデータにしか影響はない |
[<CN("a")>] type t = ... |
[<CN("a")>] type s = ... |
No | Yes | IL上の言語からはCNが変わっていなければいい |
CNはCompiledNameMSはCompilationRepresentation(CompilationRepresentationFlags.ModuleSuffix)
CNを付ける、外すMS関連- DUの順番入れ替え
- レコードのフィールドの順番入れ替え
- レコードのフィールド追加
- inline化
- 継承関係
- 省略可能なパラメータ
- null使うやつ
- アクティブパターンのあれこれ
- F#の型拡張を拡張メソッドに。またはその逆
- 測定単位を付ける、はずす
- 測定単位をジェネリックにする、固定する
- DUのフィールド名を付ける、はずす
- DUのデータをタプル化する、タプル化をやめる
- 関数を値(
FSharpFunc)にする、その逆 moduleの関数をtypeのstatic memberにする、その逆(名前はそのまま)moduleの値をtypeのstatic memberにする、その逆(名前はそのまま)nullパターンをifによるnullチェックにする、その逆refをmutableにする、その逆- レコードのフィールドを
mutableにする、その逆 Mapをdict、その逆exceptionをtypeにする、その逆ReferenceEquality等fsiの追加、削除- アクセス修飾子の変更
CLIMutableの追加、削除letによる演算子の定義をstatic member化、その逆- 制約を付ける、外す
- 型推論の結果が変わるようなオーバーロードの追加
- コンピュテーションビルダーのシグネチャ変更
- コンピュテーションビルダーへのメンバーの追加(特に
DelayやRun?) ValueWithName- メソッドのカリー化、その逆
- メンバーを追加、削除
- DUをenumに、その逆
FuncやActionをFSharpFuncに、その逆