; http://cap-lore.com/code/Scheme/transpose.html
(lambda (sy) (cdr (assq sy (list (cons 'transpose
(lambda (x) (let tr ((x x)) (if (null? (car x)) '()
   (cons (map car x) (tr (map cdr x)))))))

(cons 'transpose0 (lambda (zer zer?) (lambda (x) (let trn ((x x)) (if (null? x) '()
  (let ((z (trn (cdr x)))) (let m ((u (car x))(v z))
    (if (null? u) (map (lambda (q) (if (null? q) '() (cons zer q))) v)
     (if (null? v) (let y ((q u)) (if (null? q) '() (let ((p (y (cdr q))))
         (if (and (null? p) (zer? (car q))) '()
           (cons (if (zer? (car q)) '() (list (car q))) p)))))
       (cons (cons (car u)(car v)) (m (cdr u)(cdr v))))))))))))
))))


(let* ((tr ((fileVal "transpose") 'transpose))
    (te (lambda (a b) (cons (equal? a (tr b)) (equal? b (tr a)))))) (list
 (te '((3)) '((3)))
 (te '((2 4)) '((2)(4)))
 (te '((2 4) (3 5) (5 2)) '((2 3 5) (4 5 2)))))

(define tr0 (((fileVal "transpose") 'transpose0) 0 zero?))
(tr0 '((0 0 0 0 0 1) () (0 0) (0 1 0))) ; => ((0 0 0) (0 0 0 1) () () () (1))
(tr '((0 0) (0 1 0))) ; => ((0) (0 1))