> There are some other mistakes:
((ab . c) . d . nil)
isn't a valid s-expression. Maybe it should be
((ab . c) d . nil)
Can someone explain why ?