リストがアトムとサブリストの間で交互になっているかどうかを検出する関数を作成する必要があります。たとえば、リストが (a (bc) d (ef)) の場合は true を返し、リストが (ab) の場合は false を返します。
これは私がこれまでに持っているものです:
(define (altlist? lis)
(cond
((null? lis)#t)
((null? (cdr lis))#t)
((list? (car lis))
(not(list? (cadr lis)
(altlist? cdr lis)
'() )
(list? (cadr lis)
(altlist? cdr lis)
'())
))))