(define nums '(1 2 3 4 5 6 7 8 9)) (defun amount (x y) (foldr (lambda (z q) (if (eq x z) (+ q 1) q)) 0 y)) (defun valid (x) (if (= 9 (length x)) (foldr (lambda (y z) (if (<= y 1) z nil)) t (map (lambda (y) (amount y x)) nums)) nil)) (defun getRow (grid x) (ix grid x)) (defun transpose (grid) (match grid (nil nil) (((? x)) (map (lambda (y) (list y)) x)) (((? x) . (? xs)) (zipWith cons x (transpose xs))))) (defun getCol (grid x) (getRow (transpose grid) x))