擅长:python、mysql、java
<p><code>cons</code>是一个接受两个参数<code>a</code>和{<cd3>}并返回一个函数<code>pair</code>的函数。在</p>
<p>函数<code>pair</code>接受一个函数<code>f</code>作为一个参数,它使用两个参数。在</p>
<pre><code>def cons(a, b):
def pair(f):
return f(a, b)
return pair
f = lambda n, m: n**2 + m**3
car = lambda n, m: n
cdr = lambda n, m: m
print(cons(2, 3)(f))
print(cons(2, 3)(car))
print(cons(2, 3)(cdr))
</code></pre>
<p><code>f</code>返回<code>31 = 2**2 + 3**3</code></p>
<p>注意<code>cons</code>的括号是<code>(...)</code>的两倍,一次用于它自己的调用,另一次用于返回的函数调用。在</p>
<p>请注意<a href="https://stackoverflow.com/a/52481994/562769">this answer</a>以便能够调用<code>car(cons(2, 3))</code>。您可能还对<a href="https://softwareengineering.stackexchange.com/q/285941/25699">Why would a program use a closure?</a>感兴趣</p>