我不明白下面的面试练习题:
cons(a, b)
constructs a pair, andcar(pair)
andcdr(pair)
return the first and last element of that pair. For example,car(cons(3, 4))
returns3
, andcdr(cons(3, 4))
returns4
.Given this implementation of cons:
def cons(a, b): def pair(f): return f(a, b) return pair
Implement car and cdr.
这有什么实际应用?
最佳答案
Cons 是一个函数,它接受 2 个参数并返回一个函数,该函数将一个函数应用到一对中,因此我们可以以相同的方式构建 car
和 cdr
:
def car(pair):
def unpack(a, b):
return a
return pair(unpack)
def cdr(pair):
def unpack(a, b):
return b
return pair(unpack)
这是一个来自函数式编程的示例/练习,其中一切都可以抽象为函数(简单地说)。
它在 Haskell
或 Racket
等语言中有实际应用。但我认为它不应该是 python (IMO) 的真正生产就绪选项。
如您所见,除了参数本身,代码中没有其他变量:
>>> car(cons(1, 2))
1
>>> cdr(cons(1, 2))
2
关于python - 简单用例的闭包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55427150/