2010-04-06 6 views
60

J'ai appris assez de Common Lisp pour être en mesure d'embrouiller mon chemin à travers l'écriture d'une application. J'ai lu le Lisp commun pratique de SeibelExemples d'excellent code Common Lisp?

Quelles bibliothèques ou programmes devrais-je lire pour comprendre les idiomes, le Tao, de Common Lisp?

Répondre

36

CL-PPCRE est souvent cité comme un bon exemple, pour une bonne raison. En fait, probablement toutes les bibliothèques d'Edi Weitz feront une bonne lecture, mais CL-PPCRE est particulièrement intelligent et c'est une bibliothèque utile et impressionnante. Au-delà de cela, beaucoup d'implémentations de CL sont écrites principalement en CL. Il peut être assez productif de choisir une partie de CL qui est habituellement implémentée dans CL et de comparer comment différentes implémentations le gèrent. En particulier, certains des meilleurs exemples de grands systèmes macro utiles sont des implémentations de choses dans la norme. Loop est une lecture intéressante, ou si vous êtes vraiment ambitieux, vous pouvez comparer quelques implémentations de CLOS.

S'il y a un domaine de l'informatique qui vous intéresse particulièrement, cela pourrait être utile de le mentionner, pour que les gens puissent adapter leurs recommandations.

+1

[Sacla] (http://homepage1.nifty.com/bmonkey/lisp/sacla /index-en.html) implémente un gros morceau de Common Lisp en Common Lisp, ce serait donc un bon exemple de ce que vous suggérez – jmbr

28

Il est un autre livre, donc il ne peut pas être précisément ce que vous cherchez, mais Paradigms in Artificial Intelligence Programming Peter Norvig contient beaucoup de programmes, plutôt petites Common Lisp bien écrit. Ce n'est pas un code parfaitement naturel, surtout dans les premiers chapitres, car, comme le code Practical Common Lisp, il se concentre sur l'apprentissage de la programmation en CL, mais il vaut toujours le coup d'être lu. Il contient également d'excellents exemples de façons de construire d'autres langages en plus de Common Lisp, et il contient de précieux conseils sur la façon d'améliorer les performances des programmes CL.

+1

C'est une excellente recommandation, le code dans le livre est généralement très bon, mais Norvig explique plus et plus comment écrire un meilleur code de cha pter au chapitre. Il commence par les versions de base et montre ensuite comment l'améliorer. –

+2

Je serais définitivement second. PAIP est l'un de mes livres préférés sur la programmation, bien que le nom soit un peu trompeur, à mon humble avis. Une chose que je dirais à ce sujet est que le style me semble un peu "démodé" ou académique. Ce n'est pas une critique cependant - il me semble que le langage CL à la mode a changé un peu au cours des 10-15 dernières années, mais il n'y a rien de mal avec le code qui ne suit pas la mode. –

11

Les autres recommandations (PAIP et CL-PPCRE) sont excellentes. Je suggère également de se familiariser avec le code de Alexandria et également en regardant GBBopen.

+0

Je n'avais jamais entendu parler de GBBopen - merci pour le lien! –

2

La seule chose que je voudrais offrir est de programmer. C'est ce que j'ai fait.

J'ai fait deux choses. J'ai abordé un problème que je connaissais, un cadre de tests unitaires et l'ai élargi pour inclure des suites de tests. Pour comprendre l'écriture de macro.

La deuxième chose que j'ai faite a été de jouer avec des objets de base dans CL. Macros, fermetures et style.

N'oubliez pas non plus d'obtenir des commentaires de Lispers à propos de votre code.

(defun ugly-lisp-code?()())

+2

Vous avez absolument raison de dire que vous devez réellement programmer pour développer la compétence. Cependant, comme avec les auteurs (et vous touchez à cela), nous avons parfois besoin de voir ce que «bon» signifie afin que nous puissions l'imiter. –

+0

C'est plus que de le faire «bien», cependant. Essayez le passage de l'impératif au déclaratif "BON". – Gutzofter

8

L'art du Protocole metaObject - est un livre avec le code le plus beau jamais écrit.

3

LISP (Lisp en petites pièces) est un livre soigné; montre clossette (petit système d'obect) et certains trucs du compilateur. Sans aucun doute, le livre de norvig est génial. J'aime vraiment "construire des problèmes", mais le code est un peu ruff. Je ne suis pas utilisé pour lier des variables à portée dynamique dans la liste des paramètres. Mais il a fait beaucoup d'améliorations en essayant de "pré-compiler" le filet de discrimination.Ce livre donne une autre approche à certains codes de Norvig; Je pense toujours que le code Norvigs est beaucoup plus "propre et plus" code (plus facile à lire et à comprendre, et toujours créatif).

« problème de construction solveurs » devrait venir avec une étiquette d'avertissement comme « vous allez besoin des aspiren (sp). Il se sentait comme un éclair qui m'a frappé dans la tête quand je finalement « compris » efficace et la dépendance de sussmans a dirigé le backtracking Compiler le pdis était également brillant Excellente substance J'aimerais juste que je pourrais rappeler tout le ...

Questions connexes