Sysop: | Amessyroom |
---|---|
Location: | Fayetteville, NC |
Users: | 40 |
Nodes: | 6 (0 / 6) |
Uptime: | 11:10:10 |
Calls: | 291 |
Files: | 910 |
Messages: | 76,440 |
Raffael Cavallaro wrote:
Indeed. Here's rob Warnock's version with the full boat of loop
keywords using triplets instead of an association list:
CL-USER 22 > (defun find-maximizing-item (list &key (key #'identity)
(test #'<))
(loop for item in list
for value = (funcall key item)
and position from 0
for current-triplet = (list item value position)
as max-triplet = current-triplet
then (if (funcall test (second max-triplet)
(second current-triplet))
current-triplet
max-triplet)
finally return
(values (first max-triplet) (second max-triplet) (third max-triplet))))
Rejected by ABCL:
Debugger invoked on condition of type PROGRAM-ERROR: