元のコード | 変更後のコード | ソース互換性 | バイナリ互換性 | メモ |
---|---|---|---|---|
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
はCompiledName
MS
は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
に、その逆