基本的に、次のコード行がコンパイルされない理由を尋ねています。
type IGenericType<'a> =
abstract member MyFunc : 'a -> 'a -> 'a
type Implementer() =
member x.Test () () = () // unit->unit->unit
interface IGenericType<unit> with
member x.MyFunc a b = b // FS0017
// member x.MyFunc () () = () // FS0017
これを意図したとおりに機能させる方法があるかどうか、ただ興味があります。これは、ユニットとジェネリックの実装に関係する制限だと思います。
現時点では、次の回避策を使用しています。
type Nothing =
| Nothing
type Implementer() =
interface IGenericType<Nothing> with
member x.MyFunc a b = b
誰かがこの行動に光を当ててくれることを願っています。