『汎用性の高いパターンをdefine で定義していって、
どうしても関数で出来ないことが出てきたらdefine-syntaxする。』
という判断基準を決めたと仮定してみる。

例えば、forの例で出てくる「body ...」や「step」といった可変長なことを
パターンマッチするのはdefine-syntaxでOK。
aprintもdefine-syntaxでOK。

でも四捨五入やkeisanは関数で良い。『汎用性の高いパターン』だけど関数で出来ない訳じゃない。
という理解で良いんでしょうか?