From e26f86289f205dc0d8aa13fa19ac7359d8bcb1a4 Mon Sep 17 00:00:00 2001 From: JerryMain <16806246+jerrymain521@user.noreply.gitee.com> Date: Sun, 22 Mar 2026 17:07:26 +0800 Subject: [PATCH] [215_6] change-let1-to-let --- devel/215_6.md | 37 ++++++++++++++++++++++++++++++ tests/goldfish/liii/stack-test.scm | 6 ++--- 2 files changed, 40 insertions(+), 3 deletions(-) create mode 100644 devel/215_6.md diff --git a/devel/215_6.md b/devel/215_6.md new file mode 100644 index 00000000..b8bc6226 --- /dev/null +++ b/devel/215_6.md @@ -0,0 +1,37 @@ +# [215_6] 重构 stack-test.scm 中的 let1 为 let + +## 任务相关的代码文件 +- tests/goldfish/liii/stack-test.scm + +## 如何测试 +1. 构建项目:`xmake build -y` +2. 检查代码格式:`bin/lint tests/goldfish/liii/stack-test.scm` +3. 运行测试:`bin/goldfish tests/goldfish/liii/stack-test.scm` + +## 2026-03-22 重构 let1 为 let +### What +将 stack-test.scm 文件中的所有 let1 宏重构为标准 Scheme let 表达式,以提高代码的可移植性和一致性。 + +1. 将第256行的 let1 表达式重构为 let +2. 将第296行的 let1 表达式重构为 let +3. 将第337行的 let1 表达式重构为 let + +### Why +- 使用标准 Scheme let 语法替代自定义 let1 宏,提高代码可读性和可移植性 +- 保持代码风格的一致性,避免混用不同的宏定义 +- 符合 Scheme 标准规范,便于维护和后续开发 + +### How +直接将 let1 的单绑定形式转换为 let 的多绑定语法: +```scheme +;; 原格式 +(let1 var expr body...) + +;; 新格式 +(let ((var expr)) body...) +``` + +## 2026-03-22 测试结果验证 +- 代码格式检查通过:`tests/goldfish/liii/stack-test.scm: OK (balanced parentheses)` +- 测试用例全部通过:`33 correct, 0 failed` +- 重构后功能完全保持,无回归问题 diff --git a/tests/goldfish/liii/stack-test.scm b/tests/goldfish/liii/stack-test.scm index d4f72b51..82424c19 100644 --- a/tests/goldfish/liii/stack-test.scm +++ b/tests/goldfish/liii/stack-test.scm @@ -253,7 +253,7 @@ (check ((stack (list 1)) :pop!) => (stack (list))) (check ((stack (list 1 2)) :pop!) => (stack (list 2))) (check ((stack (list "A" "B" "C" "D" "E")) :pop! :pop! :pop!) => (stack (list "D" "E"))) -(let1 t (stack (list 100)) +(let ((t (stack (list 100)))) (check-catch 'out-of-range (t :pop! :pop!))) @@ -293,7 +293,7 @@ element : any-type -------- 支持链式调用,如:(stack :push 1 :push 2 :push 3) |# -(let1 t (stack (list 1 2 3)) +(let ((t (stack (list 1 2 3)))) (check (t :push 1) => (stack (list 1 1 2 3))) (check (t :push 1 :push 1) => (stack (list 1 1 1 2 3)))) @@ -334,7 +334,7 @@ element : any-type -------- 该方法返回原栈对象本身,支持链式调用,如:(stack :push! 1 :push! 2 :push! 3) |# -(let1 t (stack (list 1 2 3)) +(let ((t (stack (list 1 2 3)))) (check (t :push! 1) => (stack (list 1 1 2 3))) (check (t :push! 1 :push! 1) => (stack (list 1 1 1 1 2 3))) (check (t :pop! :push! 2) => (stack (list 2 1 1 1 2 3))))