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() を使わないなら使わないでいいから、上記三点を解決する代替物を書いてください。