Когда использовать определение лямбда с «голым» формальным параметром?

Я сейчас изучаю 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)

Есть ли разница - возможно, для более сложных примеров - о которой мне нужно знать, и есть ли какие-то причины предпочесть один другому?

8
задан Óscar López 11 January 2012 в 19:53
поделиться