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