一种函数式编程语言,具有类似于Haskell的翻转但未柯里化的高阶函数
A functional programming language with a higher-order function similar to Haskell's flip but uncurried
有没有函数式编程语言的函数不是自动柯里化的,它有一个内置或库的高阶函数,其函数形式为 (AxB)->C 和 returns 一个(BxA)->C 形式的等效函数?这类似于Haskell的翻转功能。
您不需要柯里化来实现 flip
。这是 Scala 中的一个实现:
def flip[A,B,C](f: (A, B) => C): (B, A) => C = (b: B, a: A) => f(a, b)
是否"built in"是另一个问题。在函数式编程中,这并不重要。如果没有柯里化,它也没有那么有用,因为通常你想使用 flip
来使合成工作。
在第 26 页的 1.4 中的 "Homotopy Type Theory" 中,柯里化版本的函数称为 "swap":
swap: Π(A:U)Π(B:U)Π(C:U) (A -> B -> C) -> (B -> A -> C)
swap(A, B, C, g)(b, a) := λb.λa.g(a)(b)
我不知道你为什么要为非柯里化版本取一个单独的名称,反正有什么区别...
有没有函数式编程语言的函数不是自动柯里化的,它有一个内置或库的高阶函数,其函数形式为 (AxB)->C 和 returns 一个(BxA)->C 形式的等效函数?这类似于Haskell的翻转功能。
您不需要柯里化来实现 flip
。这是 Scala 中的一个实现:
def flip[A,B,C](f: (A, B) => C): (B, A) => C = (b: B, a: A) => f(a, b)
是否"built in"是另一个问题。在函数式编程中,这并不重要。如果没有柯里化,它也没有那么有用,因为通常你想使用 flip
来使合成工作。
在第 26 页的 1.4 中的 "Homotopy Type Theory" 中,柯里化版本的函数称为 "swap":
swap: Π(A:U)Π(B:U)Π(C:U) (A -> B -> C) -> (B -> A -> C)
swap(A, B, C, g)(b, a) := λb.λa.g(a)(b)
我不知道你为什么要为非柯里化版本取一个单独的名称,反正有什么区别...