(apply f x '(y z))
эквивалентно (f x y z)
, поэтому ваш код эквивалентен (map list '(1 a) '(2 b) '(3 c))
.
При вызове с несколькими списками, map
выполняет итерации списков параллельно и вызывает данную функцию с одним элементом из каждого списка для каждого элемента (т.е. первый элемент списка результатов является результатом вызова функции с первым элемент каждого списка в качестве аргументов, второй - результат для вторых элементов и т. д.).
Итак, (map list '(1 a) '(2 b) '(3 c))
сначала вызывает list
с первыми элементами списков (т.е. числами) в качестве аргументов, а затем со вторыми элементами (буквами). Итак, вы получите ((list 1 2 3) (list 'a 'b 'c))
.