Я не понимаю роли bottom
(⊥
или _|_
) в определениях функций Haskell.
Определение zip
, например, описывает его как "правильное ленивое", потому что
zip [] _|_ = []
но я не понимаю, как это отличается от
zip [] _ = []
Какую роль играет _|_
в определении функций, например, выше? В частности, как это отличается от использования _
?
ОБНОВЛЕНИЕ И ЗАМЕЧАНИЕ: поскольку читатели превосходных ответов обнаружат для себя, важная часть этих ответов стоит здесь: ⊥
не (и не может), по сути, появляются в определениях функций Haskell. Читайте дальше.