У Haskell есть магическая функция с именем seq
, которая принимает аргумент любого типа и сводит его к нормальной форме слабой головы (WHNF).
Я прочитал несколько источников [не то, что я могу вспомнить, кем они были сейчас...], которые утверждают, что "полиморфный seq
плохой". В каком смысле они "плохие"?
Аналогично, существует функция rnf
, которая сводит аргумент к нормальной форме (NF). Но это метод класса; он не работает для произвольных типов. Мне кажется "очевидным", что можно изменить спецификацию языка, чтобы обеспечить это как встроенный примитив, похожий на seq
. Вероятно, это будет "еще хуже", чем просто seq
. Каким образом это так?
Наконец, кто-то предположил, что предоставление seq
, rnf
, par
и подобный же тип, что и функция id
, а не функция const
, как сейчас, будет улучшением. Как это так?