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,因爲它是一個只有原子作爲元素的列表。」你的意思是空列表被認爲是一個原子列表,或者你在編碼時指出了一些錯誤。 –
我的意思是說,空列表通常被認爲是一個原子列表(或任何你想要的列表) - 並且這樣做會自然消除將你引向這個問題的難題。 –