It appears that my OSCON proposal has been accepted. The working title is "Logic Programming in Perl: let the computer do the hard work." This means I need to buckle down and figure out which of two directions to take my talk. Give simple examples everyone can understand and only allude to the real power or give a powerful example that no one can understand? Obviously, there are other choices, but I have 45 minutes and that's not a lot of time.
In other news, there's some question of the grammar I'm using in AI::Prolog. In trying to nail down some problematic aspects of it, I've learned some curious things. As it turns out, the ISO standard for Prolog is pretty much ignored by everyone. One page actually details the problem and points out some of the issues with the standard. For example, one operator may not follow another operator in ISO Prolog. Thus, since the comma is an operator and the cut (!) is an operator, this is illegal:
p :- !, q.
You can make it legal by enclosing the cut operator in parenthesis, but that's frickin' ridiculous. To be fair, I think they just failed to consider the implications of their choice and ordinarily I would be more forgiving (I don't yell at Larry for the behavior of chomp, for example), but in this case, not only is the the standards body failing to consider the implications, but this goes against virtually every Prolog implementation that existed prior to the standard being created. It kind of reminds me of a company I worked for that had a "coffee tasting" for employees to choose the coffee they wanted available at work. Since the employees couldn't agree, the company thought it would only be fair to choose a coffee that no one had voted for. After many bitter (ha!) complaints, the company finally conceded that maybe there was a reason no one had voted for the coffee.
The ISO standard, by the way, also has no mention of modules or grammars, two things that are considerably more widespread in Prolog today. Bummer.
Re:congrats!
Ovid on 2005-03-11T19:04:48
Thanks! And I'd be happy to show you my state machine tricks. They're really, really easy once you "get" it. Maybe I'll show you a state machine in Prolog
:)