Я выучил достаточно Common Lisp, чтобы писать приложения. Я прочитал Практический Common Lisp Сейбеля
Какие библиотеки или программы мне следует прочитать, чтобы понять идиомы, Дао, Common Lisp?
Я выучил достаточно Common Lisp, чтобы писать приложения. Я прочитал Практический Common Lisp Сейбеля
Какие библиотеки или программы мне следует прочитать, чтобы понять идиомы, Дао, Common Lisp?
CL-PPCRE не зря часто приводят в качестве хорошего примера. На самом деле, вероятно, любая из библиотек Эди Вейца будет полезна для чтения, но CL-PPCRE особенно умен, и это полезная и впечатляющая библиотека. Кроме того, многие реализации CL написаны в основном на CL. Может быть довольно продуктивно выбрать какую-то часть CL, которая обычно реализуется в CL, и сравнить, как с ней справляются разные реализации. В частности, одними из лучших примеров больших полезных макросистем являются реализации вещей в стандарте. Loop - интересное чтение, или, если вы действительно амбициозны, можете сравнить несколько реализаций CLOS.
Если есть какая-то область вычислений, которая вас особенно интересует, возможно, стоит упомянуть об этом, чтобы люди могли адаптировать для этого рекомендации.
Это другая книга, так что это может быть не совсем то, что вы ищете, но Парадигмы в искусственном Интеллектуальное программирование содержит множество хорошо написанных небольших программ на Common Lisp. Это не совсем естественный код, особенно в первых нескольких главах, потому что, как и код в Practical Common Lisp, он фокусируется на обучении программированию на CL, но его все же стоит прочитать. Он также содержит несколько отличных примеров того, как вы можете создавать другие языки на основе Common Lisp, и дает несколько ценных советов о том, как улучшить производительность программ CL.
Остальные рекомендации (PAIP и CL-PPCRE) превосходны. Я также предлагаю ознакомиться с кодом Александрии, а также взглянуть на GBBopen.
Искусство протокола метаобъектов - это книга с самым красивым кодом из когда-либо написанных.
LISP (Lisp In Small Pieces) - отличная книга; показывает clossette (небольшую систему объектов) и некоторые вещи компилятора. Без сомнения, книга Норвига потрясающая.
Мне тоже очень нравится «Построение решателей проблем», но код немного грубоват. Я не привык связывать переменные с динамической областью видимости в списке параметров. Но он сделал много забавных улучшений, пытаясь «предварительно скомпилировать» сеть дискриминации. В этой книге представлены другие подходы к некоторым кодам Норвига; Я по-прежнему считаю, что код Норвига - это гораздо более «аккуратный и чистый» код (его легче читать и понимать, но при этом он остается креативным).
«Построение решателей проблем» должно иметь предупреждающую метку вроде «вам понадобится аспирен (sp)». Мне показалось, будто молния ударила меня в голову, когда я наконец «понял» rms и зависимость Суссмана, направленную на возврат. Компиляция pdis тоже была великолепной. Отличный материал. Я просто хотел бы все это запомнить ...
Мне нравится код SBCL.
Единственное, что я предлагаю, - это программировать. Я так и сделал.
Я сделал две вещи. Один я решил проблему, с которой я был знаком, фреймворк модульного тестирования и расширил его, включив в него наборы тестов. Чтобы получить представление о написании макросов.
Второе, что я сделал, - это поигрался с базовыми объектами в CL. Макросы, замыкания и стиль.
Также не забывайте получать отзывы от Lispers о вашем коде.