我不理解以下练习面试问题:
cons(a, b)
构造一对,car(pair)
和cdr(pair)
返回 该对的第一个和最后一个元素。例如,car(cons(3, 4))
返回3
,而cdr(cons(3, 4))
返回4
。给出此缺点的实现:
def cons(a, b): def pair(f): return f(a, b) return pair
实施汽车和cdr。
此方法的实际应用是什么?
答案 0 :(得分:1)
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