Распакованные типы, как Int# и строгие функции, как f (! x) =..., что-то другое, но я вижу концептуальное подобие - они запрещают преобразователей/лень в некотором роде. Если Haskell был строгим...
Что означает нормальная форма слабой головы (WHNF)? Что означает нормальная форма головы (HNF) и нормальная форма (NF)? Real World Haskell заявляет: Знакомая функция seq оценивает выражение для того, что мы ...
У меня проблема, о которой я не знаю, как рассуждать. Я как раз собирался спросить, может ли кто-нибудь помочь мне с конкретной проблемой, но меня осенило, что я могу задать более общий вопрос и...
Например, у меня есть операция fnB :: a -> Bool, которая не имеет смысла, пока fnA :: Bool не вернет False. В CI можно объединить эти две операции в один блок if: if (fnA && fnB (a)) {...
У меня есть фрагмент кода, который многократно выбирает из распределения вероятностей с использованием последовательности. Морально это выглядит примерно так: :sampleMean ::MonadRandom m => Int -> m Float -> m Float...
Одно раздражение, связанное с ленивым вводом-выводом, привлекло мое внимание недавно import System.IO
import Control.Applicative main = withFile "test.txt" ReadMode getLines >> = mapM_ putStrLn where getLines h = ...
Все мы знаем (или должны знать), что Haskell по умолчанию является ленивым. Ничего не оценивается до тех пор, пока его не нужно оценивать. Итак, когда нужно что-то оценивать? Есть моменты, в которых Haskell должен быть строгим. Я ...
Теперь это может быть немного нечетко, но мне было интересно, какое-то время. Насколько мне известно с!, Можно убедиться, что параметр для конструктора данных оценивается до создания значения: ...
В Haskell есть две функции левой свёртки для списков: foldl, и «строгий» вариант, фолдль. Проблема с нестрогим foldl состоит в том, что он строит башню преобразователей: foldl (+) 0 [1..5]
-> ((((0 + ...
Я действительно потратил время алгоритм потребления, который в результате выдает короткую строку. Когда я пытаюсь распечатать его (через putStrLn), он появляется на экране символ за символом. Я действительно понял, почему это ...
Существует две строгих версии функции zipWith: 1) Действительно строгие, элементы списков l1 и l2 оцениваются, поэтому их преобразователи не занимают все пространство стека (код Дона Стюарта) zipWith 'f l1 l2 = [f e1 ...