1 (use-modules (srfi srfi-1))
6 (define (distance-change bpm_c bpm_n bpm_n+1)
7 (- (abs (distance bpm_c bpm_n) (distance bpm_c bpm_n+1))
8 (distance bpm_a bpm_b)))
10 (define (insert-song song playlist)
12 (let find-minimum ((current-minimum (inf))
18 ((< (distance-change song (first plist) (second plist))
20 (find-minimum (distance-change song (first plist) (second plist))
23 (else (find-minimum current-minimum min-cons (rest plist)))))))
24 (let insert-copy ((old-list playlist))
25 (cond ((eq? last old-list)
26 ;; (list... (car old-list) song (cdr old-list))
27 (cons* (car old-list) song (cdr old-list)))
28 (else (cons (car old-list) (insert-copy (cdr old-list))))))))