Skip to content

Instantly share code, notes, and snippets.

@yamasushi
Created July 28, 2012 06:10
Show Gist options
  • Save yamasushi/3192045 to your computer and use it in GitHub Desktop.
Save yamasushi/3192045 to your computer and use it in GitHub Desktop.
Slices of unifom vector(ユニフォームベクタのスライス)
(use gauche.uvector)
(define (uvector-slices u k)
(let [(uvclass (class-of u))
(l (uvector-length u))]
(receive (n r) (quotient&remainder l k)
(let1 s (* n k)
(let loop [(i s)
(d (if (= r 0)
'()
(list (uvector-alias uvclass u s (+ s r) ) ) ) ) ]
(cond
( (= i 0) d)
( (> i 0)
(let1 s (- i k)
(loop s (cons (uvector-alias uvclass u s (+ s k)) d)) ) )
( (< i 0)
(error "i < 0") ) ) ) ) ) ) )
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment