I've been following Paul Graham ever since he posted his first essay online. It's certainly interesting to read what he has to say (whether you agree or disagree with it). It's also interesting to see people dropping references to him hither and yon.
Case in point: I just ran across this in the SQLite 3 Overview:
In most other SQL database engines the datatype is associated with the table column that holds the data - with the data container. In SQLite 3.0, the datatype is associated with the data itself, not with its container. Paul Graham in his book ANSI Common Lisp calls this property "Manifest Typing". Other writers have other definitions for the term "manifest typing", so beware of confusion. But by whatever name, that is the datatype model supported by SQLite 3.0.There are dozens of other possible references for this behavior. It's the type model used in Perl, as well as many other dynamic languages. But somehow invoking the name Paul Graham makes the idea less scary to those who take issue with this unorthodox database behavior.
I'm taking bets on how long before there is a groundswell to invoke the name of Paul Graham as a justification for a full-fledged macro system, or continuation-based web frameworks. ;-)
Re:Continuations and the web
ziggy on 2004-07-01T13:12:31
That would be really cool. Thanks!
Continuations are one of the things (among others, I'm told) that Ruby borrowed from Lisp. At least one framework, Borges, uses continuations as a way to deal with state.
Unfortunately, I'm not one of those people smart enough to figure out how I can use continations to my advantage in daily work.
Re:Continuations
brev on 2004-07-05T18:57:52
Almost every web app spends most of its time just recreating a state that it understands. And the logic of transitions between pages have to be unrolled into a big switch statement up front.
If perl 7 had continuations, you could do this:
#!/usr/bin/perl7
# website that sells t-shirts
$user = CGI::Continuation.new();
show_start_page();
if ($user.t_shirts) {
show_shirts(); # each shirt has a buy button
if ($user.show_close_up) {
show_close_up($user.shirt_id); # also shows buy button
}
if ($user.buy) {
show_sizes();
show_legal_stuff();
show_credit_card_form();
if ($user.credit_card.buy($user.shirt_id)) {
show_thanks();
} else {
show_transaction_not_approved();
}
}
}Continuation frameworks aren't a panacea--they run into trouble when dealing with world outside their interaction model. But you can see why they excite some people.
N.B. it's not just about multi-page forms either. Check out Borges or Seaside for the details.