functional-programming - OCaml:首先应用第二个参数(高阶函数)

标签 functional-programming ocaml readability higher-order-functions

我这样定义了一个高阶函数:

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/

相关文章:

F# 如果为真则打印

scala - 如何组合 Kleisli[M, A, C] 和 Kleisli[M, B, C]

javascript - 如何构造一个js对象并用js_of_ocaml调用它的方法?

syntax - OCaml中的一元减号和 float

colors - 为了提高可读性,易于使用和减轻眼睛疲劳,最佳的色彩组合是什么?

c# - 如何使这段代码更具可读性?

java - 如何在 scala 中用其不可变的 couterpart 替换 java 可变类?

arrays - 将函数应用于 Julia 中的列对

ocaml - ocaml 中的延迟评估

c# - 使用委托(delegate)而不是接口(interface)来解耦。好主意?