3 clojure
数据是如何得到的结构与嵌套评估partial在下列:((partial (partial - 3)6)9).内部partial收益率-3,然后我们有((partial -3)9).但是为什么部分原因如何(-3 -9)?它从何处获得减法指令?
我想对Clojure阅读和评估这种数据表示的方式有所帮助.
Cha*_*ffy 10
((partial - 3) 6)在评估此表达式的过程中调用的声明是不正确的,这是误解的核心.
为了简化这一点,让我们分解一下:
((partial (partial - 3) 6) 9)
Run Code Online (Sandbox Code Playgroud)
...而是将其重写为:
(let [p1 (partial - 3)]
((partial p1 6) 9)
Run Code Online (Sandbox Code Playgroud)
现在,(partial p1 6)返回什么?一个函数,它调用p1第一个参数6,并附加任何后续参数.因此,我们可以再次详细地写它:
(let [p1 (partial - 3)
p2 (partial p1 6)]
(p2 9)
Run Code Online (Sandbox Code Playgroud)
因此,(p2 9)呼叫(p1 6 9),呼叫(- 3 6 9).(- 3 6)永远不会在执行过程中的任何地方调用,因此-在最终调用所有参数之前,永远不会消耗初始函数调用.
(实际的实现可以优化中间调用,将p1的参数折叠为p2,但不需要将这些优化合并到概念模型中;行为等同于上面的内容).
| 归档时间: |
|
| 查看次数: |
117 次 |
| 最近记录: |