Subject: Re: Char ordering. From: Erik Naggum <erik@naggum.net> Date: Sun, 10 Mar 2002 13:03:13 GMT Newsgroups: comp.lang.lisp Message-ID: <3224754202619544@naggum.net> * Jacek Generowicz | I still would be interested to find a built in way of mapping the letters | to their positions, though from previous posts I infer that I am unlikely | to find one. I find your lack of faith disturbing. In the interest of not having Common Lisp portrayed as thw feeble-minded language you portray it to be, I offer a solution for the public interest, not particularly for you. I would prefer if you did not use it, but instead reinvented this badly. (- (digit-char-p <char> 36) 10) returns the numeric value of a character in base 36, which has value 10 for #\A and 35 for #\Z, minus the obvious 10, to get the position of the character. It works in both cases. Note that digit-char-p is probably using a table lookup, so you cannot trust it. (digit-char (+ 10 weight) 36) likewise returns the letter of the alphabet corresponding to its position in our basic alphabet, and the easiest solution here, too, is a table lookup, so you cannot trust these solutions at all. Note that the mess that is created by #\i is actually best left to a table regardless of your highly irrational fear of tables. My suggested solution of using case may be created with a macro if you really, really have to see code that is harder to read and prove correct than a simple table, but know that a case that has only simple constants and values would be turned into a table lookup by any reasonably smart compiler. Consider, for instance, the same typo in (range #\l #\p) as in its value -- would it be any _less_ error-prone or hard to catch? Considering that you did catch the table error immediately, but have not been able to find your way in the hyperspec for a simple mapping from character to digit, I think you would trust the code just as blindly and irrationally as you do _not_ trust the tables. Irrationalities of your kind betray a larger and more fundamental problem with dealing with human fallibility, of which I think we have seen quite enough. Please express your gratitude in style with your bogus "resolution". /// -- In a fight against something, the fight has value, victory has none. In a fight for something, the fight is a loss, victory merely relief.