質問なんですけど、皆さんはSchemeで内部関数を書く時
・letrecとinternal defineのどちらを使いますか?
・定義部のみbeginで囲みますか?本体部のみbeginで囲みますか?beginを書きませんか?
・beginをそのまま使いますか?マクロでラップしていますか?

自分は内部関数定義部と本体部でインデントが違って欲しいので
internal defineをbeginに展開されるマクロwhereで囲って書いています。

でも逐次式としてのbeginはまだ意味が分かるんですけど
定義部のbeginは意味が分からない…
内部定義は未規定の順番で行われる訳ですし。

なぜ定義にもbeginが使えるのでしょうか?
なぜsyntax-rulesでもCLマクロでも記述できないのに派生式扱いなのでしょうか?
どんな歴史的経緯からSchemeに導入されたのでしょうか?