我这样定义了一个高阶函数:
val func : int -> string -> unit
我想通过两种方式使用这个功能:
other_func (func 5)
some_other_func (fun x -> func x "abc")
即,通过使用已定义的参数之一创建函数。但是,第二种用法不如第一种用法简洁易读。有没有更易读的方法来传递第二个参数来创建另一个函数?
最佳答案
在 Haskell 中,有一个函数 flip
可以做到这一点。你可以自己定义:
let flip f x y = f y x
那么你可以说:
other_func (func 5)
third_func (flip func "abc")
Flip 在 Jane Street Core 中定义为 Fn.flip
。它在 OCaml Batteries Included 中定义为 BatPervasives.flip
。 (换句话说,每个人都同意这是一个有用的功能。)
关于functional-programming - OCaml:首先应用第二个参数(高阶函数),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23228172/