7 ответов:
CL-PPCRE часто приводится в качестве хорошего примера, по уважительной причине. На самом деле, вероятно, любая из библиотек Edi Weitz сделает хорошее чтение, но CL-PPCRE особенно умна, и это полезная и впечатляющая библиотека. Кроме того, многие реализации CL написаны в основном в CL. Это может быть довольно продуктивно, чтобы выбрать некоторую часть CL, которая обычно реализуется в CL и сравнить, как различные реализации обрабатывают его. В частности, некоторые из лучших примеров большого полезного макросистемы-это реализации вещей в стандарте. Loop-интересное чтение, или если вы действительно амбициозны, вы можете сравнить несколько реализаций CLOS.
Если есть какая-то область вычислений, которую вы особенно интересуете, возможно, стоит упомянуть об этом, чтобы люди могли адаптировать рекомендации к этому.
Это другая книга, так что это может быть не совсем то, что вы ищете, но Питер Норвиг парадигмы в программировании искусственного интеллекта содержит много хорошо написанных, небольших общих программ Lisp. Это не совсем естественный код, особенно в первых нескольких главах, потому что, как и код в Практический Common Lisp, он фокусируется на обучении вас, как программировать в CL, но это все еще очень стоит прочитать. Он также содержит некоторые отличные примеры того, как вы можете создавать другие языки поверх Common Lisp, и у него есть некоторые ценные советы о том, как улучшить производительность программ CL.
другие рекомендации (PAIP и CL-PPCRE) превосходны. Я бы также предложил познакомиться с Александрия ' s код, а также взглянув на GBBopen.
LISP (Lisp в небольших частях) опрятная книга; показывает clossette (малую систему obect) и некоторые вещи компилятора. Без сомнения, книга Норвига потрясающая.
Мне очень нравится "проблема построения соверс", а также, но код немного ерш. Я не используется для привязки переменных динамической области в списке параметров. Но это было очень весело улучшения пытаются "предварительно скомпилировать" сеть дискриминации. Эта книга дает другое подходы к некоторым кодам Норвига; я все еще думаю, что Норвиг код гораздо "аккуратнее и чище" (код легче читать и понимать, а еще творческий).
"Building problem solvers" должен поставляться с предупреждающей надписью, например: "вам понадобятся некоторые аспирен (СП). Мне показалось, что молния ударила мне в голову, когда я наконец-то "понятая" зависимость rms и sussmans направлена назад. Составление ИСПДн было также блестяще. Отличный материал. Я просто хотел бы вспомнить все это ...
единственное, что я бы предложил, это запрограммировать. Вот что я сделал.
Я сделал две вещи. Один из них я решил проблему, с которой я был знаком, структуру модульного тестирования и расширил ее, включив в нее наборы тестов. Чтобы получить представление о написании макросов.
второе, что я сделал, это поиграл с основными объектами в CL. Макросы, замыкания и стиль.
также не забывайте о получении обратной связи от шепота о вашем код.
Comments