Clojure-Curring技术细节
我知道clojure没有对咖喱的内置支持。但是我想理解为什么这个代码失败的技术细节--> 在repl--> 有人能解释一下这里发生了什么事吗?为什么c不是由三角形函数的面积计算的值Clojure-Curring技术细节,clojure,currying,Clojure,Currying,我知道clojure没有对咖喱的内置支持。但是我想理解为什么这个代码失败的技术细节--> 在repl--> 有人能解释一下这里发生了什么事吗?为什么c不是由三角形函数的面积计算的值 非常感谢,Alex这是因为这里有双函数调用: ((area-of-triangle a b c)) 您正在将函数三角形区域的结果作为函数调用。这是因为这里有双函数调用: ((area-of-triangle a b c)) 您正在将函数三角形区域的结果作为函数调用。您有一组额外的括号: (fn [c] ((are
非常感谢,Alex这是因为这里有双函数调用:
((area-of-triangle a b c))
您正在将函数
三角形区域的结果作为函数调用。这是因为这里有双函数调用:
((area-of-triangle a b c))
您正在将函数三角形区域的结果作为函数调用。您有一组额外的括号:
(fn [c] ((area-of-triangle a b c)))
^
这是一个问题,因为三角形的面积计算为一个数字。假设评估值为10,则您有:
(fn [c] (10))
这没有任何意义,因为10是不可调用的 您还有一组额外的括号:
(fn [c] ((area-of-triangle a b c)))
^
这是一个问题,因为三角形的面积计算为一个数字。假设评估值为10,则您有:
(fn [c] (10))
这没有任何意义,因为10是不可调用的 这里有两件事:
在周围有额外的括号(三角形a b c的区域)
对于咖喱,您可以使用功能
e、 g:
这里有两件事:
在周围有额外的括号(三角形a b c的区域)
对于咖喱,您可以使用功能
e、 g:
没有部分函数,这是不可能的?我只是认为这是最惯用的方法,不是唯一的方法不,没有部分是不可能的。@Alex好吧,没有partial
实际上是可能的,因为partial
不是“魔法”;只是。只是因为它很好地完成了预期的目的(除了过于冗长),所以再发明轮子没有任何意义。你是对的。我说过,没有部分功能是不可能的,没有部分功能是不可能的?我只是认为这是最惯用的方法,不是唯一的方法不,没有部分是不可能的。@Alex好吧,没有partial
实际上是可能的,因为partial
不是“魔法”;只是。只是因为它很好地完成了预期的目的(除了过于冗长),所以再发明轮子没有任何意义。你是对的。我说过,如果没有部分功能,不重新发明轮子,这是不可能的。为了澄清任何混淆,这个问题中的代码工作得很好,最后一行只是有一对多余的括号。错误与咖喱或部分
无关,您在((inc 1.0))
中会得到相同的示例。为了消除任何混淆,此问题中的代码工作正常,最后一行有一对多余的括号。该错误与咖喱或部分
无关,您在((inc1.0))
中会得到相同的示例。