fork download
  1. (define (group-by xs f)
  2. (reverse (foldl (lambda (x l)
  3. (let ((val (cdr x)))
  4. (if (null? l)
  5. (list (list val))
  6. (let ((prev (caar l)))
  7. (if (= prev val)
  8. (cons (append (car l) (list val)) (cdr l))
  9. (cons (list val) l))))))
  10. '()
  11. (sort (map (lambda (x) (cons x (f x))) xs) (lambda (x y) (< (cdr x) (cdr y)))))))
  12.  
  13. (define f (lambda(x) (/ 1 x)))
  14. (group-by (list 2 5 4 5 8 2 8) f)
Runtime error #stdin #stdout 0.02s 4176KB
stdin
Standard input is empty
stdout
Standard output is empty