Обратите внимание, что (atom . (x1 ... xn))
- это еще один способ записи (atom x1 ... xn)
, поэтому (c . ((d . 3) (e . 4)))
просто эквивалентно (c (d . 3) (e . 4))
, который является не чем иным, как списком из трех элементов (и по этой причине dotted-list?
возвращает false в этом случае ).
Если вам не нравится определение dotted-list?
, данное в srf-1, тогда определите свою собственную версию:
(define (my-dotted-list? l)
(and (dotted-list? l)
(pair? l)))