undef 和 list 的串联是 undef - 证明 Haskell

Concatenation of undef and list is undef - proof Haskell

如何证明以下对于每个列表 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