Я сейчас изучаю Guile Scheme, и в документации я неожиданно наткнулся на следующую конструкцию:
((lambda args (display args)) 42)
=> (42)
Это поставило меня в тупик; до этого момента я предполагал, что формальные параметры всегда заключаются в список:
((lambda (args) (display args)) 42)
=> 42
Интересно, когда использовать этот вариант и чем он отличается от точечной записи для переменного числа аргументов. В частности, в чем разница между двумя следующими вариантами:
((lambda args (display args)) 1 2 3) => (1 2 3)
((lambda (. args) (display args)) 1 2 3) => (1 2 3)
Есть ли разница - возможно, для более сложных примеров - о которой мне нужно знать, и есть ли какие-то причины предпочесть один другому?