F# リストで拡張メソッドを定義するにはどうすればよいですか?
このような素朴な試みはエラーになります:
type list with
member this.abc() = 100
F# リストで拡張メソッドを定義するにはどうすればよいですか?
このような素朴な試みはエラーになります:
type list with
member this.abc() = 100
正しい構文は次のとおりです。
type List<'a> with
member this.abc() = 100
修飾名も使用できますMicrosoft.FSharp.Collections.List<'a>
が、型の省略形list<'a>
は使用できません。
とはいえ、モジュール関数の使用はより慣用的です。(|>)
モジュール関数を作成して、パイプ演算子を介して他の関数と簡単に組み合わせる必要があります。
module List =
let abc (xs: _ list) = 100
type Microsoft.FSharp.Collections.List<'T> with
member x.IsNotEmpty() = not (List.isEmpty x)
let xs = [1]
xs.IsNotEmpty