簡體   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