#ああ。まさにそれです。
#listから引数を3つに制限したlist3を作るようなことってあまりlisp的にやらない気がする(メリットがなさそう)のですが、どういう場所で活躍するのでしょう?(コンパイル時のチェックを期待など?)。 引数の個数チェックということだと、((lambda (a b c) (list a b c)))と書けばよさそうですが……
#などと思いましたが、Software Design for Flexibilityにある例なのですね。用途が思考実験ということならmit schemeのコードはポータブルに見えます。
#アリティをポータブルにプログラム内で取得するのが肝ということだと、srfiに何度か提案されていますが、没になってるみたいです。 https://srfi.schemers.org/srfi-191/srfi-191.html #アリティをnargsで与えたいなら、マクロにするか、一旦可変長で受け取ってランタイムに引数の数をチェックするかですかねえ。
#マクロ展開時にnargsがわかるならマクロが実用的には良いと思うんですが。
##実装より先に考えることいろいろありそう。そちらをもうすこし整理してみようと思います。