2
在方案或球拍中是否可以检测功能的主叫方?检测方案或球拍中功能的主叫方
例如,我可以写一个函数来测试一个列表是原子的列表如下:
(define atom? (lambda (x) (and (not (pair? x)) (not (empty? x)))))
(define lat? (lambda (l)
(define latt?
(lambda (l)
(cond
((null? l) #t)
((atom? (car l)) (latt? (cdr l)))
(else #f))))
(if (null? l) #f (latt? l))))
但代替上述情况,有像“被叫由”做的功能这样的事情:
(define lat?
(lambda (l)
(cond
((and (null? l) (called-by "lat?")) #t)
((atom? (car l)) (lat? (cdr l)))
(else #f))))
非常感谢。我有点不清楚你的意思,“最后,我希望(lat?null)返回#t,因为它是一个只有原子作为元素的列表。”你的意思是空列表被认为是一个原子列表,或者你在编码时指出了一些错误。 –
我的意思是说,空列表通常被认为是一个原子列表(或任何你想要的列表) - 并且这样做会自然消除将你引向这个问题的难题。 –