我正在尝试使用显式类型参数和限制条件来定义运算符:
let inline (===)<'a, 'b
when 'a : not struct
and 'b : not struct> a b = obj.ReferenceEquals (a,b)
在F# 2.0中它能很好地工作,但会产生以下警告:FS1189警告:类型参数必须直接放置在类型名称旁边,例如"type C<'T>", 而不是 "type C <'T>"。那么,对于运算符定义,明确的类型参数规范的正确方法是什么呢?附言:请不要告诉我关于隐式类型参数和其他解决方法,我想具体解决这个问题。
let (|SomePatternName|)<'a, 'b> x = x
- controlflow