Как можно доказать, что для любого списка xs верно следующее:
undefined ++ xs = undefined
Как можно доказать, что для любого списка xs верно следующее:
undefined ++ xs = undefined
Доказывать особо нечего. Существует просто правило (которое нельзя объяснить или разбить на что-то меньшее), что операторы case
, которые пытаются сопоставить undefined
с конструктором, приводят к undefined
. Как только вы примете это правило, мы сможем наблюдать
undefined ++ ys
= { by definition of ++ }
case undefined of
[] -> ys
x:xs -> x : (xs ++ ys)
= { case that matches undefined against a constructor }
undefined