使用接口派生函数 - 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 ()) 

其他实现中也存在同样的问题。