Leniwa ocena i złożoność czasu
Rozglądałem się dookoła stosuNon-Trivial Lazy Evaluation, co doprowadziło mnie do prezentacji Keegana McAllistera:Dlaczego warto uczyć się Haskell. Na slajdzie 8 pokazuje minimalną funkcję zdefiniowaną jako:
minimum = head . sort
i stwierdza, że jego złożoność to O (n). Nie rozumiem, dlaczego mówi się, że złożoność jest liniowa, jeśli sortowanie według zastąpienia to O (nlog n). Sortowanie, o którym mowa w poście, nie może być liniowe, ponieważ nie zakłada niczego o danych, jak byłoby to wymagane w liniowych metodach sortowania, takich jak sortowanie.
Czy leniwa ocena odgrywa tu tajemniczą rolę? Jeśli tak, jakie jest tego wyjaśnienie?