try converting 2-elem lists into pairs

I'd like to make \shape syntax shorter by using 2-element lists
instead of pairs (so that i don't have to type the dot).
Additionally, i'd like \shape to interpret an empty list as
a zero offset.  In other words, i'd like

\shape #'((0 1)()()(-0.5 0))

to be interpreted as

\shape #'((0 . 1)(0 . 0)(0 . 0)(-0.5 . 0))

However, i see the following problem that i have to solve first:
 if i understand correctly, this fragment of code

       ;; we work with lists of lists
       (if (or (null? offsets)
               (not (list? (car offsets))))
           (set! offsets (list offsets)))

is for converting ((0 . 1)(0 . 0)(0 . 0)(-0.5 . 0)) into
(((0 . 1)(0 . 0)(0 . 0)(-0.5 . 0))) (additional nesting layer,
as if the slur was broken).  It seems that this piece of code
depends on the fact that the fist element of
((0 . 1)(0 . 0)(0 . 0)(-0.5 . 0)) is not a list, but a pair.
If i wanted to use ((0 1)()()(-0.5 0)) as a synonym for
((0 . 1)(0 . 0)(0 . 0)(-0.5 . 0)), i'd have to change this condition.
I don't know what should it be - i've tried

       ;; we work with lists of lists
       (if (or (null? offsets)
               (not (list? (caar offsets))))
           (set! offsets (list offsets)))

but it didn't work...  Suggestions?