opening it up with Common Lisp

Favorite weblogs

Lisp Related

Bill Clementson

Finding Lisp

Lemonodor

Lispmeister.com

Planet Lisp

Politics

Orcinus

Talking Points Memo

This Modern World

Working for Change

Other home

Polliblog

Recent Readings

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

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

Runner
Reviewed: Tuesday, July 18, 2006

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

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





tinderbox
 width=

One, two, many
Sunday, February 5, 2006

I'm pretty tired tonight, so I can only hope I'm coherent!

One of my personal design-issue favorites is the switch between things that are zero/one and things that can be two and things that are many. I've been pushing Tinaa a tiny bit lately because I want to document all the software I'm trying to corral. Tinaa started out with a very simple model:

  • the thing you want to document is a part
  • parts have sub-parts of different kinds (some of which get documented separately)
  • each part with documentation gets a page to itself (plus various summary pages)

One restriction was that a given part only had only set of sub-parts of any given kind. For example, a class has method sub-parts and slot sub-parts. The first iteration of Tinaa also displayed class sub-classes but the restriction meant that I could not display both sub-classes and super-classes (or direct and non-direct methods or direct and non-direct slots and so on). Changing this wasn't all that hard but it was a switch from one to many, it took more work than I thought it should have -- more redesign that I had hoped.

The next Tinaa restriction to go will be the one that links parts up with a single page describing them. These need to go because it restricts how I want to describe packages; currently, you can ask Tinaa to build you documentation for either the internal symbols or the external symbols but what I think you really want (most of the time) is to document everything but include two tables of contents: an external one and an everything one.

This is another one to many change so we already know that there will be a new level of indirection (we move from a pointer to a thing to a pointer to a list that has pointers to things). It's an interesting switch because it occurs often (and often remains surprising though perhaps it shouldn't) and yet we don't just start with these extra layers of indirection because we often don't need them... Writing this out is making me wonder if there is room for some simple language constructs here... That, however, will need to wait until tomorrow.


|

Home | About | Quotes | Recent | Archives

Copyright -- Gary Warren King, 2004 - 2006