So as I sit here figuring out how to do a Minimum Spanning Tree, I look at my LISP code and realize how crazy LISP and it's derivatives can be.
Here's a procedure I wrote to find a key in a list (the language's full name is LISt Processing language) and add a value to it:
(defun lookup-add (symbol list value)
(if (eql list '())
'()
(if (eql (car (car list)) symbol)
(setf (cdr (car list)) (+ (cdr (car list)) value))
(lookup-add symbol (cdr list) value))))
The procedure works on a data structure that looks like this:
((A . v1) (B . v2) ... (Sn . vn))
All to find a minimum spanning tree on a map (which is a graph) for a Travelling Salesman Problem. Then after that, I have to rehammer the procedure into something that can provide a reasonable heuristic for an informed search (basically A*).
I really do like AI, although I do find this love of LISP to be a pedantic hold-over from the early, early days of AI. Some things are actually encoded in LISP that you may use everyday: a trip planner, task schedulers often have compiled LISP at their core solving what are known as Constraint Satisfaction Problems.
So I'm thinking of combing AI and networks (intelligent searching mechanisms, something akin to the mighty Google-bot) for my major emphasis. It should be fun, provided I don't have to fiddle around too much with LISP. The language has its uses, but as time goes on, a lot of the things it is applied to become better done by other tools. As I always say, use the right tool for the job.
All in case you wanted to know what I'm doing at the moment.
Also, still fiddling around with the new CMS and getting a test setup I really like. Things are progressing nicely.