使用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 ()) 

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

最新更新