我对 Scala 非常陌生。我正在阅读 Paul Chiusano 和 Rúnar Bjarnason 写的一本名为《Scala 函数式编程》的书。到目前为止,我觉得这很有趣。我看到了 curry 和非 curry 的解决方案

def curry[A,B,C](f: (A, B) => C): A => (B => C)= {
    a => b => f(a,b)
  }

def uncurry[A,B,C](f: A => B => C): (A, B) => C = {
    (a,b) => f(a)(b)
  }

在 Curry 中,我理解 f(a,b) 导致类型 C 的值,但在 uncurry 中我不理解 f(a)(b)。谁能告诉我如何阅读 f(a)(b) 或者这如何导致 C 类型,或者请向我推荐一些可以向我解释这一点的在线 Material ?

谢谢你的帮助。

最佳答案

基本上 f(a) 的返回类型是 B => C 类型的函数,我们可以调用这个结果 g
如果您随后调用 g(b) ,您将获得 C 类型的值。f(a)(b) 可以扩展为 f.apply(a).apply(b)

关于scala - Scala 中 f(a,b) 和 f(a)(b) 之间的区别,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38746355/

10-16 02:41