Сравнение списков

We use cookies. Read the Privacy and Cookie Policy

Списки можно сравнивать, только если они содержат сравнимые элементы. При использовании операторов <, <=, >= и > сравнение происходит в лексикографическом порядке. Сначала сравниваются «головы» списков; если они равны, то сравниваются вторые элементы. Если равны и вторые элементы, то сравниваются третьи – и т. д., пока не будут найдены различающиеся элементы. Результат сравнения списков определяется по результату сравнения первой пары различающихся элементов.

Сравним для примера [3,4,2]<[3,4,3]. Haskell видит, что 3 и 3 равны, поэтому переходит к сравнению 4 и 4, но так как они тоже равны, сравнивает 2 и 3. Число 2 меньше 3, поэтому первый список меньше второго. Аналогично выполняется сравнение на <=, >= и >:

ghci> [3,2,1] > [2,1,0]

True

ghci> [3,2,1] > [2,10,100]

True

ghci> [3,4,2] < [3,4,3]

True

ghci> [3,4,2] > [2,4]

True

ghci> [3,4,2] == [3,4,2]

True

Непустой список всегда считается больше, чем пустой. Это позволяет сравнивать друг с другом любые два списка, даже если один из них точно совпадает с началом другого.