Форматирование у вас поплыло и опечатки, видимо выглядеть должно было так:
def create_pair(h,t):
def dispatch(command):
if command == "head":
return h
elif command == "tail":
return t
else:
print "Error, unknown command"
return none
return dispatch
Видимо преподаватель хотел показать списки в стиле LISP, хотя и в каком то извращенном виде. Через вашу функцию уже можно определить список неограниченной длины
l = create_pair(1, create_pair(2, create_pair(3, 4)))
получается структура вида - (1, (2, (3, 4)) чтобы достать первый элемент надо вызвать l('head'), а для остальных надо рекурсивно вызывать l('tail') столько раз, какой по счету элемент вы хотите достать. Думаю сами реализуете.
ЗЫ: все таки извращенный интерфейс придумал препод ;)