我是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 ())
同样的问题也存在于其他实现中。