Здравствуйте, Worminator X, Вы писали:
---
Схема — это Lisp-1. Common Lisp — это Lisp-N, т.е. буквально много пространств имен. Функции и переменные в разных пространствах имен.
В начале формы ищет название функции из пространства имен функций, а у вас, вообще, ячейка сons! Отсюда у вас недопонимание с компилятором.
Зачем это нужно? Сильно упрощает проверку кода при компиляции для динамического языка. Язык не статический, а именно динамический. Такая штука в итоге помогает создавать приложения с большим объемом кода, т.е. позволяет снизить сложность программирования.
По Common Lisp есть хороший учебник:
Практическое использование Common Lisp
А что касается укороченной формы "((lambda ...) arg)", то это небольшое отступление от общих правил, упрощение, да и просто архаизм, хотя лично мне нравится.