Changeset 30525

Show
Ignore:
Timestamp:
02/26/09 00:19:09 (4 years ago)
Author:
miyamuko
Message:

lang/xyzzy/pci-code: (transform-prefs) p18 2.5 似ている製品

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • lang/xyzzy/pci-code/site-lisp/chapter2/recommendations.l

    r30524 r30525  
    172172;(get-recommendations *critics* "Toby") 
    173173;(get-recommendations *critics* "Toby" :similarity #'sim-distance) 
     174 
     175 
     176;;; p18 2.5 似ている製品 
     177 
     178(defun transform-prefs (prefs) 
     179  (labels ((items (prefs person) 
     180             (mapcar #'car ($ prefs person))) 
     181           (ratings (prefs person items) 
     182             (mapcar #'(lambda (item) 
     183                         ($ prefs person item)) 
     184                     items)) 
     185           (persons (prefs) 
     186             (mapcar #'car prefs)) 
     187           (all-items (prefs) 
     188             (remove-duplicates 
     189              (mapcan #'(lambda (person) 
     190                          (items prefs person)) 
     191                      (persons prefs)) 
     192              :test #'string=))) 
     193    (mapcar #'(lambda (item) 
     194                (cons item 
     195                      (remove-if-not #'cdr 
     196                                     (mapcar #'(lambda (person) 
     197                                                 (cons person ($ prefs person item))) 
     198                                             (persons prefs))))) 
     199            (all-items prefs)))) 
     200 
     201;(transform-prefs *critics*) 
     202 
     203;(let ((movies (transform-prefs *critics*))) 
     204;  (top-matches movies "Superman Returns"))