私は現在 Guile Scheme を学んでおり、ドキュメンテーションで突然次の構造に出くわしました:
((lambda args (display args)) 42)
=> (42)
これは私をループに陥れました。この時点まで、仮パラメーターは常にリストで囲まれていると想定していました。
((lambda (args) (display args)) 42)
=> 42
このバリアントをいつ使用するのか、これが可変数の引数のドット表記とどのように異なるのか疑問に思います。具体的には、次の 2 つのバリアントの違いは何ですか。
((lambda args (display args)) 1 2 3) => (1 2 3)
((lambda (. args) (display args)) 1 2 3) => (1 2 3)
おそらくより複雑な例では、注意する必要がある違いはありますか?また、どちらかを優先する理由はありますか?