Мое первое знакомство с Лиспом было: Парадигмы программирования искусственного интеллекта Питера Норвига. Это очень читабельное и мягкое введение во многие особенности Common Lisp и концепции функционального программирования.
Начать непосредственно с некоторых книг по Clojure может быть предпочтительнее для вас, потому что между Common Lisp и Clojure есть несколько различий, которые могут запутать вас, если вы пытаетесь изучать оба языка одновременно.
В то же время постарайтесь получить практический опыт работы с Clojure REPL, выполняя некоторые упражнения вроде Project Euler, которые вы затем сможете сравнить с другими решениями на Clojure и императивном Java.
Кроме того, если у вас есть вопросы по программированию на Clojure и идиоматическому стилю, не стесняйтесь обсуждать свой код с другими Clojurians. Для этого есть несколько вариантов, например: Clojure в Google Groups, канал #clojure IRC на Freenode, Twitter по хэштегу #clojure, и, конечно, здесь, на Stackoverflow!
Для начинающего новичка, Как разрабатывать программы заставит вас думать как лиспер. Если вы теряете терпение, идите быстрее :-) Еще одна хорошая книга - это On Lisp Пола Грэма, которая в качестве бонуса теперь доступна бесплатно в Интернете.
Меня не интересует Структура и интерпретация компьютерных программ ; если вы уже знаете Lisp или Scheme, это отличный интеллектуальный tour de force и очень удовлетворяющий - но я и мои студенты не нашли хорошую книгу, из которой можно было бы учиться. Little Schemer содержит много полезной информации, если вы можете переварить его диалектическую организацию и стиль милого пирога. Я не могу.
Я бы рекомендовал приобрести MEAP-версию "Радости Clojure". У меня она есть, и сейчас MEAP предлагает в общей сложности 12 глав. Пока что это лучшая книга по языку программирования, которую я когда-либо читал. Этих 12 глав достаточно, чтобы начать работу с Clojure, вплоть до некоторых продвинутых тем. Текущий MEAP (который довольно часто обновляется новыми главами) в сочетании с ociweb Clojure tutorial, stackoverflow.com и IRC-каналом #clojure на freenode, я думаю, вы справитесь.
Хотя я согласен с тем, что Programming Clojure - это отличное введение в Clojure, и делает очень хорошую работу, мы не можем отрицать тот факт, что с каждой неделей он все больше и больше устаревает. Вы должны помнить, что Programming Clojure был написан для Clojure 1.0. Сейчас мы стремительно приближаемся к выходу Clojure 1.2. Например, с включением defrecord, структуры станут устаревшими.
Если вы ищете введение в «лиспийское мышление», я бы порекомендовал Практический Common Lisp . Это хорошее чтение, и ИМХО идеально подходит для опытных программистов, не знающих шепелявости.
Обратной стороной является то, что он нацелен на Common Lisp, а не на Clojure; Основная причина в том, что подход Clojure гораздо более функциональный. Возможно, вам также понадобится специальная книга для Clojure.
Все ответы на данный момент замечательные. Я бы добавил:
Мне очень нравится серия видео Брайана Твилла о Clojure на YouTube как безболезненное введение в некоторые идеи Clojure. Они не предполагают больших знаний Лиспа или языков функционального программирования.
Что касается книг, я согласен с Исааком в том, что Программирование Clojure - отличный ресурс. Вы также можете рассмотреть несколько готовящихся к выпуску книг по Clojure:
Обе книги имеют ранний доступ онлайн, если вы купите их сейчас. Также я думаю, что у обоих есть скидки - попробуйте заглянуть на clojure.org.
Книги по Lisp, упомянутые Питером и Норманом, вероятно, являются хорошим выбором (мне нравится SICP, но я не читал другие). Но различия в синтаксисе Clojure могут немного расстроить, если вы только начинаете. По этой причине я рекомендую вначале начать с книг, посвященных Clojure.
(Отредактировано для исправления ссылки.)
Переходя прямо к Clojure из ООП, я бы рекомендовал только превосходный Programming Clojure Стюарта Хэллоуэя.
Мне он нравится, и он отлично справляется с охраной большого количества Clojure и изрядной долей функционального программирования в процессе.
Little Schemer и SICP великолепны, но они не так актуальны для Clojure, если это то, чему вы хотите научиться.