list-accessor-predicates.ss
(module list-accessor-predicates mzscheme
  
  (provide (all-defined))
  
  (define-syntax car? (syntax-rules () ((car? datum) (pair? datum))))
  
  (define-syntax cdr? (syntax-rules () ((cdr? datum) (pair? datum))))
  
  (define-syntax cadr? (syntax-rules () ((cadr? datum) (and (pair? datum) (pair? (cdr datum))))))
  
  (define-syntax cdar? (syntax-rules () ((cdar? datum) (and (pair? datum) (pair? (car datum))))))
  
  (define-syntax caar? (syntax-rules () ((caar? datum) (and (pair? datum) (pair? (car datum))))))
  
  (define-syntax cddr? (syntax-rules () ((cddr? datum) (and (pair? datum) (pair? (cdr datum))))))
  
  (define-syntax cdaar? (syntax-rules () ((cdaar? datum) (and (pair? datum) (pair? (car datum)) (pair? (caar datum))))))
  
  (define-syntax cadar? (syntax-rules () ((cadar? datum) (and (pair? datum) (pair? (car datum)) (pair? (cdar datum))))))
  
  (define-syntax caadr? (syntax-rules () ((caadr? datum) (and (pair? datum) (pair? (cdr datum)) (pair? (cadr datum))))))
  
  (define-syntax caddr? (syntax-rules () ((caddr? datum) (and (pair? datum) (pair? (cdr datum)) (pair? (cddr datum))))))
  
  (define-syntax cdadr? (syntax-rules () ((cdadr? datum) (and (pair? datum) (pair? (cdr datum)) (pair? (cadr datum))))))
  
  (define-syntax cddar? (syntax-rules () ((cddar? datum) (and (pair? datum) (pair? (car datum)) (pair? (cdar datum))))))
  
  (define-syntax caaddr? (syntax-rules () ((caaddr? datum) (and (pair? datum) (pair? (cdr datum)) (pair? (cddr datum)) (pair? (caddr datum))))))
  
  (define-syntax cadadr? (syntax-rules () ((cadadr? datum) (and (pair? datum) (pair? (cdr datum)) (pair? (cadr datum)) (pair? (cdadr datum))))))
  
  (define-syntax caddar? (syntax-rules () ((caddar? datum) (and (pair? datum) (pair? (car datum)) (pair? (cdar datum)) (pair? (cddar datum))))))
  
  (define-syntax cdaadr? (syntax-rules () ((cdaadr? datum) (and (pair? datum) (pair? (cdr datum)) (pair? (cadr datum)) (pair? (caadr datum))))))
  
  (define-syntax cdadar? (syntax-rules () ((cdadar? datum) (and (pair? datum) (pair? (car datum)) (pair? (cdar datum)) (pair? (cadar datum))))))
  
  (define-syntax cddaar? (syntax-rules () ((cddaar? datum) (and (pair? datum) (pair? (car datum)) (pair? (caar datum)) (pair? (cdaar datum))))))
  
  (define-syntax cadddr? (syntax-rules () ((cadddr? datum) (and (pair? datum) (pair? (cdr datum)) (pair? (cddr datum)) (pair? (cdddr datum))))))
  
  (define-syntax cdaddr? (syntax-rules () ((cdaddr? datum) (and (pair? datum) (pair? (cdr datum)) (pair? (cddr datum)) (pair? (caddr datum))))))
  
  (define-syntax cddadr? (syntax-rules () ((cddadr? datum) (and (pair? datum) (pair? (cdr datum)) (pair? (cadr datum)) (pair? (cdadr datum))))))
  
  (define-syntax cdddar? (syntax-rules () ((cdddar? datum) (and (pair? datum) (pair? (car datum)) (pair? (cdar datum)) (pair? (cddar datum))))))
  
  (define-syntax cddddr? (syntax-rules () ((cddddr? datum) (and (pair? datum) (pair? (cdr datum)) (pair? (cddr datum)) (pair? (cdddr datum))))))
  
  (define-syntax caaadr? (syntax-rules () ((caaadr? datum) (and (pair? datum) (pair? (cdr datum)) (pair? (cadr datum)) (pair? (caadr datum))))))
  
  (define-syntax caadar? (syntax-rules () ((caadar? datum) (and (pair? datum) (pair? (car datum)) (pair? (cdar datum)) (pair? (cadar datum))))))
  
  (define-syntax cadaar? (syntax-rules () ((cadaar? datum) (and (pair? datum) (pair? (car datum)) (pair? (caar datum)) (pair? (cdaar datum))))))
  
  (define-syntax cdaaar? (syntax-rules () ((cdaaar? datum) (and (pair? datum) (pair? (car datum)) (pair? (caar datum)) (pair? (caaar datum))))))
  
  (define-syntax caaaar? (syntax-rules () ((caaaar? datum) (and (pair? datum) (pair? (car datum)) (pair? (caar datum)) (pair? (caaar datum))))))
  
  )