Чем 'seq' в Haskell отличается от других функций?

Я запутался в описании того, как Хаскеллаseq работает вучебник я читаю.

Учебник утверждает, что

оценивая выражениеseq x y сначала оценимx в WHNF и только затем продолжить оценкуy

Но ранее в том же учебном пособии, в котором объясняется, как ленивая оценка Haskell работает в целом, говорится, что при оценке функции аргументы «оцениваются, но только по мере необходимости», что означает, что

аргументы будут оцениваться слева направо, пока их верхние узлы не станут конструкторами, соответствующими шаблону. Если шаблон является простой переменной, то аргумент не оценивается; если шаблон является конструктором, это означает оценку для WHNF.

Это описание оценки функции в целом, похоже, не отличается от описания, приведенного дляseq, Оба - в чтении моего новичка - просто сводят свой первый аргумент к WHNF.

Это верно? Какseq отличается - особенно в том, как он обрабатывает свой первый аргумент - от любой другой функции Haskell?

Ответы на вопрос(1)

Ваш ответ на вопрос