■
POP_ARG() 殲滅?
define とかは何か理由があってなーなーで済ませてたんだけど、解決したんだったような。
追記: ああそうそう、環境の ScmRef 化を待ってたんだった。すっきり書けるようになりそうだったから。
まあそれはさておき、"kinder error message"(=場に応じた message と解釈) のために POP_ARG() を避けるんだったら POP_ARG() 自体廃止した方が早いと思うんですが、どんなもんなんでしょうか。私はそれでもいいと思いますが。今さらだけどあの semantics はあんまりよくなかった。でも
(define a . 1)
- > define: improper argument list terminator: 1
(define (a))
- > define: missing argument(s)
と
(define a . 1)
- > define: proper list is required as
but got: 1 (define (a))
- > define: missing function body
でわかりやすさに大した違いがあると思えない。Backtrace が出るならなおさら。逆に
- message がそこら中にばらまかれて管理の負担が増える
- binary が太る
- 引数取り出しのときの CONSP() などの check を忘れる元になる
という問題が目につく。POP_ARG() を使わないなら使わないでいいから、上記三点を解決する代替物を書いてください。