The Forced Indentation Of En Passant Captures
scheme@(guile-user)> (display ((lambda (rec xjoin grid place cellx celly chars pieces home) ((lambda (xjoin symbol) (xjoin (* 8 celly) (lambda (k) (string-append (xjoin (* 8 cellx) (lambda (j) (symbol k j)) "") "\n")) "")) (lambda (n fun sep) (rec xjoin n fun sep "")) (lambda (k j) (or (place cellx celly pieces home k j) (grid cellx celly chars k j))))) (lambda (f . args) (apply f (cons f args))) (lambda (self n fun sep acc) (if (<= n 0) "" (if (= n 1) (string-append (fun 0) acc) (self self (- n 1) fun sep (string-append sep (fun (- n 1)) acc))))) (lambda (cellx celly chars k j) ((lambda (idx) (substring chars idx (+ idx 1))) (if (eq? (even? (quotient k celly)) (even? (quotient j cellx))) 1 0))) ((lambda (rowcol pawn rest) (lambda (cellx celly pieces home k j) ((lambda (rowcol) (if rowcol (apply (lambda (row col) (case row ((1) (pawn pieces #t)) ((6) (pawn pieces #f)) ((0) (rest pieces home col #t)) ((7) (rest pieces home col #f)) (else #f))) rowcol) #f)) (rowcol cellx celly k j)))) ((lambda (center) (lambda (cellx celly k j) (if (and (center celly k) (center cellx j)) `(,(- 7 (quotient k celly)) ,(quotient j cellx)) #f))) (lambda (cell kj) (= (modulo kj cell) (quotient cell 2)))) (lambda (pieces start) (substring (vector-ref pieces (if start 0 1)) 5 6)) (lambda (pieces home col start) ((lambda (idx) (substring (vector-ref pieces (if start 0 1)) idx (+ idx 1))) (vector-ref home col)))) 7 3 "▒ " #("♔♕♖♗♘♙" "♚♛♜♝♞♟") #(2 4 3 1 0 3 4 2)))
separate output for 413