是否有任何函数式编程语言,其功能不会自动进行处理,是否具有内置或库高级函数,该函数采用(AxB)-> C形式的函数并返回该形式的等效函数( BxA)-> C?这类似于Haskell的翻转功能。
答案 0 :(得分:2)
您无需执行任何操作即可实现flip
。这是Scala中的一个实现:
def flip[A,B,C](f: (A, B) => C): (B, A) => C = (b: B, a: A) => f(a, b)
是否“内置”是另一个问题。在函数式编程中,它并不那么重要。如果不进行粗略介绍,它也没有用,因为通常您想使用flip
来使合成工作。
答案 1 :(得分:1)
在第26页的1.4中的"Homotopy Type Theory"中,该咖喱版本的功能称为“交换” :
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)
我不知道您为什么要为未咖喱的版本使用一个单独的名称,到底有什么区别...