opening it up with Common Lisp

Favorite weblogs

Lisp Related

Bill Clementson

Finding Lisp


Planet Lisp



Talking Points Memo

This Modern World

Working for Change

Other home


Recent Readings

Book review: Darwinia
Reviewed: Friday, August 11, 2006

Summer reading: Spin
Reviewed: Saturday, August 5, 2006

Reviewed: Tuesday, July 18, 2006

the Omnivoire's Delimma
Reviewed: Wednesday, July 12, 2006

the Golem's Eye
Reviewed: Wednesday, May 31, 2006


Tuesday, September 21, 2004

I've seen several reference to lint like Common Lisp tools recently (here on the CLiki, an old one by Barry Margolin on the CMU AI repository and others). I think this is a good thing. I've just started thinking about my own tool which I think I'll name Eastwood as in CLint Eastwood. Here are a few examples of things to look for

  • Exported symbols symbols with no binding. If it's not bound, why export it?
  • Doubly non-destructive function. It makes no sense to call (remove-duplicates (append ...)).
  • Function names like initial-instance. I created this function the other day when I was trying to define initialize-instance. I've actually done this several times and it's not an easy bug to track down!

Doing this right (IMHO) requires declarative ways of saying that such and such a thing is wrong. Otherwise, you'd end up with a tool that was a hodgepodge instead of a help. Secondly, a Eastwood should maintain state across runs over the same code base. The user should be able to say that some particular warning is not a problem. Otherwise, the tool will become an irritant as it generates the same warnings again and again. Finally, my third example in the list above shows that Eastwood needs to run concurrently during development, not as a separate phase of the development process.


Home | About | Quotes | Recent | Archives

Copyright -- Gary Warren King, 2004 - 2006