リストがジッパーとして定義されている場合に TRUE を返す述語関数を作成しようとしています。ジッパーは、各要素が正確に 2 つの要素を持つリストであり、任意の式である適切なリストとして定義されます。
例として
(zipper? '((a 1)(b 2)))
#t
(zipper? '((a (1)) ((b) 2)))
#t
(zipper? '((a 1 2)(b 1)))
#f
最初に引数リストがいっぱいかどうかを確認してfalseを返し、次にリストのcarを要素の長さにチェックし、リストのcdrを関数に戻そうとしましたが、実行に問題があります。
(define (zipper? l)
(if (empty? l)
#f
(if (> 1 (length car(l)))
#t
(zipper? (cdr (l))))))
私が間違っていることと、それを修正する方法を教えてください。私はまだスキームを学んでいます。