使用接口派生函数 - F#
Derive functions with interface - F#
我是 F# 的新手,我正在尝试使用这些接口实现一个小计算器...
但是我一到 f_add.
就在推导部分苦苦挣扎
如果有人可以帮助我,那就太好了。 :)
type IFunction =
interface
abstract member ToString: Unit -> String
abstract member Apply: Nat -> Nat
abstract member Derive: Unit -> IFunction
end
由于 f_add
是以柯里化形式定义的(典型的 F# 函数),而不是元组,您需要使用空格而不是元组来传递参数:
// HERE . Using comma makes that a tuple
// member self.Derive () = f_add(f.Derive (), g.Derive ()) //wrong
相反,作为 F# 样式函数传递:
member self.Derive () = f_add (f.Derive ()) (g.Derive ())
其他实现中也存在同样的问题。
我是 F# 的新手,我正在尝试使用这些接口实现一个小计算器...
但是我一到 f_add.
就在推导部分苦苦挣扎
如果有人可以帮助我,那就太好了。 :)
type IFunction =
interface
abstract member ToString: Unit -> String
abstract member Apply: Nat -> Nat
abstract member Derive: Unit -> IFunction
end
由于 f_add
是以柯里化形式定义的(典型的 F# 函数),而不是元组,您需要使用空格而不是元组来传递参数:
// HERE . Using comma makes that a tuple
// member self.Derive () = f_add(f.Derive (), g.Derive ()) //wrong
相反,作为 F# 样式函数传递:
member self.Derive () = f_add (f.Derive ()) (g.Derive ())
其他实现中也存在同样的问题。