gpt4 book ai didi

scheme - 检测 Scheme 或 Racket 中函数的调用者

转载 作者:行者123 更新时间:2023-12-04 02:20:26 25 4
gpt4 key购买 nike

在 Scheme 或 Racket 中是否可以检测函数的调用者?

例如,我可以编写一个函数来测试列表是否为原子列表,如下所示:

(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))))

但不是上面的,是否有像“called-by”这样的函数来做这样的事情:

(define lat?
(lambda (l)
(cond
((and (null? l) (called-by "lat?")) #t)
((atom? (car l)) (lat? (cdr l)))
(else #f))))

最佳答案

执行此操作的通常方法是向函数添加一些参数,或者像您一样通过内部定义进行循环。除此之外,没有可靠的方法来找出函数的调用者。

但在您的情况下,这似乎是一个很好的功能缺乏——使用它来解决上述问题是非常糟糕的。内部帮助程序版本没有任何问题。 (它也与任何其他语言非常相似。)

最后,我希望 (lat? null) 返回 #t,因为它只有原子作为元素的列表.

关于scheme - 检测 Scheme 或 Racket 中函数的调用者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7961749/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com