(defun server-link (&optional (server +DEFAULT-SERVER+) (domain "4chan.org"))
"Return link to a suitable HTTP link to the domain/ip"
(concatenate 'string
"http://" server "." domain))
(defun thread-link (&key (id nil) (server +DEFAULT-SERVER+)
(bbs +DEFAULT-BOARD+) (post-number ""))
(concatenate 'string
(server-link server)
(if id
(concatenate 'string
"read/" bbs "/" id "/"
(num-to-str post-number))
(concatenate 'string "/" bbs))))
>>28,30
I'm just happy using (setf (car x) y) and (setf (cdr x) y), they expand to rplaca/rplacd anyway. I don't remember the exact naming rationale of RPLACA/RPLACD, but I think it was something along the lines of ``RePLAce Contents of the Accumulator/Decrement part.'', which do make some sense if you think of car/cdr's naming, albeit they're both historical artifacts, not that having a better name would be of much benefit: FIRST/REST make sense when you're talking of lists, but cons cells are more general than that (an efficient stucture holding 2 arbitrary pointers can be used for many things).