> But the geometric space explosion of cross-products makes you want to create new abstractions to cover more ground, and you start to lose what tables gave you to begin with.
What kind of abstractions are you thinking of? ORM?
There is an interesting comparison between tables and s-expression on c2.com that might interest you:
"The average for TOP is higher than es-exp's in my opinion, so they are the better general-purpose tool, especially if complexity of a project grows over time. I rarely see project complexity shrink over time, thus it seems more logical to emphasize the higher end when making a judgment rather than the lower end. If you see dark clouds on the horizon, you should pick the bigger umbrella even though the current rain may be light. -- top "
I'm thinking of functions with many arguments: every argument adds an extra dimension to the table. Even if you unwrap the dimensions (e.g. instead of a cube made of 1/2, a/b and x/y, you have a table of a1/b1/a2/b2 vs x/y) you still multiply the state space.
S-exprs are simply a representation for trees, and you can use trees for anything - not necessarily the most efficient way, but trees are very flexible. But trees encode policy: the choice of root and branch determines what's cheap and what's expensive. Tables are agnostic, but they pay for their agnosticism with their dimensionality.
What kind of abstractions are you thinking of? ORM?
There is an interesting comparison between tables and s-expression on c2.com that might interest you:
"The average for TOP is higher than es-exp's in my opinion, so they are the better general-purpose tool, especially if complexity of a project grows over time. I rarely see project complexity shrink over time, thus it seems more logical to emphasize the higher end when making a judgment rather than the lower end. If you see dark clouds on the horizon, you should pick the bigger umbrella even though the current rain may be light. -- top "
http://c2.com/cgi/wiki?AreTablesGeneralPurposeStructures