Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 37 additions & 0 deletions devel/215_6.md
Original file line number Diff line number Diff line change
@@ -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`
- 重构后功能完全保持,无回归问题
9 changes: 4 additions & 5 deletions tests/goldfish/liii/stack-test.scm
Original file line number Diff line number Diff line change
Expand Up @@ -253,9 +253,8 @@
(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))
(check-catch 'out-of-range (t :pop! :pop!))
) ;let1
(let ((t (stack (list 100))))
(check-catch 'out-of-range (t :pop! :pop!)))


#|
Expand Down Expand Up @@ -294,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)))
) ;let1
Expand Down Expand Up @@ -336,7 +335,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)))
Expand Down
Loading