fork download
  1. ; squares of a sorted array
  2.  
  3. (define (square x) (* x x))
  4.  
  5. (display (sort (map square '(-4 -1 0 3 10)) <)) (newline)
  6.  
  7. (define (sq-sort xv)
  8. (let loop ((lo 0) (hi (- (vector-length xv) 1)) (xs (list)))
  9. (if (= lo hi) (cons (square (vector-ref xv lo)) xs)
  10. (if (< (abs (vector-ref xv lo)) (abs (vector-ref xv hi)))
  11. (loop lo (- hi 1) (cons (square (vector-ref xv hi)) xs))
  12. (loop (+ lo 1) hi (cons (square (vector-ref xv lo)) xs))))))
  13.  
  14. (display (sq-sort '#(-4 -1 0 3 10))) (newline)
Success #stdin #stdout 0.01s 7976KB
stdin
Standard input is empty
stdout
(0 1 9 16 100)
(0 1 9 16 100)