我试图找出背后“柯里化”的因果逻辑,并得出以下结果:为什么哈斯克尔有一个参数
- 多个参数函数可以表达为元组(结合多个参数以不同类型作为一个参数)和列表(将多个参数与同一类型组合为一个参数)。所以所有函数都可以表示为单参数函数。
- 所以在Haskell中,函数只需要一个参数。我们如何实现多参数函数。
- 使用柯里。柯里化是实现多个参数功能的一种方式。
我认为上述逻辑1 - > 2 - > 3是混淆回答“为什么使用咖喱”。对于语句3,还可以将多个元组或列表组合为单个参数来实现多个参数函数。
看起来声明1不是声明2的正确理由。我敢肯定的是2-> 3是正确的推理,但背后的原因是什么?为什么Haskell作为一种函数式语言,只有一个参数?
大多数书籍将语句2视为公认的事实。有人知道2背后的原因吗?还是有人知道“为什么要加油”的正确逻辑?
你问:“为什么要使用咖喱?”,这意味着在某些时候有人认为:“让我们用柯里化来解决我们有的语言设计问题。”但事实并非如此。有人认为,“让我们制作一种简单,优雅,表达,方便,安全和灵活的语言。”解决这些问题的方法是使用具有归纳类型的lambda微积分,一个很好的类型系统以及一种不寻常的减少策略。 “使用柯里化”不是解决这些问题的方法之一,而是解决这些问题的巧妙便捷的工具。 –
如果你想到产品类型的元组(例如:“Bool”有两个居民,“Maybe Bool”有三个居民,(Bool,Maybe Bool)有六个居民),那么函数类型就是指数。由于'e ^(x * y)=(e^x)^ y',您总是可以用类型'(x,y) - > e'将类型为'y - >(x - > e)'。这简直就是咖啡。因为您总是可以重写这些函数(在这种情况下,成本相对较低),所以您不需要*将多参数函数作为一个基本概念,否则会使语言定义复杂化。 –