繁体   English   中英

方案中奇怪的递归定义

[英]Strange recursive definition in Scheme

考虑以下方案定义:

(define f (lambda () (procedure? f)))

奇怪的是,当我评估(f)我得到#t 问题是:为什么该评估会终止? 我期望它无限循环。 鉴于f尚未定义,内部lambda求值什么?

这里没有递归。

当您执行此代码时,将定义过程f (未执行):

> (define f (lambda () (procedure? f)))
> f
#<procedure:f>

然后,当您执行它时,它将检查是否存在与符号f相关联的过程,该过程在当时是正确的,因此返回#t

> (f)
#t

为了递归,该过程必须使用(f)进行调用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM