You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在给定的Scheme β-reductor中显示β归约中间项?

为Scheme的β归约器添加中间归约步骤打印的方法

我手头有一段用Scheme实现的β归约器代码,现在想分析它的β归约顺序,但因为对Scheme不太熟悉,找不到合适的位置插入(display term) (newline)代码,来显示归约过程中生成的纯lambda表达式中间项——目前这个归约器只能输出最终结果。

先贴出原始的β归约器代码:

(define (normalize v) (set! count 0) (set! reflected '()) (reify v))
(define (reify v) (if (memq v reflected) (v cancel) (let ((x (gensym))) (ABS x (reify (v (reflect x)))))))
(define (reflect e) (let ((f (lambda (v) (if (eq? v cancel) e (reflect (APP e (reify v))))))) (set! reflected (cons f reflected)) f))
(define (APP e1 e2) `(,e1 ,e2))
(define (ABS x e) `(lambda (,x) ,e))
(define reflected '())
(define count 0)
(define cancel '(cancel))
(define (gensym) (set! count (+ 1 count)) (string->symbol (string-append "x" (number->string count))))

接下来是验证用的测试项,包括Church数1和succ的Scheme定义:

(define One (lambda (f) (lambda (x) (f x))))
(define succ (lambda (n) (lambda (f) (lambda (x) (f ((n f) x))))))

测试调用是:(normalize (succ One))

想请教一下,能不能修改这段归约器代码,让它显示计算过程中的中间项?

内容的提问来源于stack exchange,提问作者ljedrz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:38:11