Результаты поиска по запросу "haskell"

2 ответа

Разграничение монады IO

Приятно знать (по крайней мере, в Safe Haskell) из подписи, выполняет ли что-либо действия IO, но IO охватывает много разных вещей -putStrдоступ к базе данных, удаление и запись в файлы, IORefs и т. д. Если я использую сигнатуры типов в качестве ...

1 ответ

Эти проблемы не всегда являются фатальными, но об этом стоит задуматься и достаточно сильной головной боли, которой я лично избегаю ленивых операций ввода-вывода, если только нет реальной проблемы с выполнением всей работы заранее.

чно слышал, что производственный код должен избегать использования Lazy I / O. У меня вопрос, почему? Можно ли когда-нибудь использовать Lazy I / O за пределами игры? И что делает альтернативы (например, счетчики) лучше?

2 ответа

Таким образом, ответ на ваш вопрос таков: в Хаскеле не существует такого понятия, как время жизни промежуточных результатов. Все, что можно сказать, это то, что оцененное значение будет там, когда это необходимо.

том функциональном языке с ленивой семантикой (такой как Haskell) результаты вычислений запоминаются так, что дальнейшие вычисления функции с теми же входными данными не пересчитывают значение, а получают его непосредственно из кэша запомненных ...

ТОП публикаций

1 ответ

 быть чем-то вроде C

ища для размышлений. Когда я пишу монадический код, монада налагает упорядочение на выполненные операции. Например, если я напишу в монаде IO: do a <- doSomething b <- doSomethingElse return (a + b)я знаюdoSomething будет выполнен ...

3 ответа

Тип возврата в блоке do

Я пытаюсь понять Монады в Хаскеле, и во время моих бесчисленных экспериментов с кодом я столкнулся с этой вещью: f2 = do return "da"и тот факт, что он не хочет компилировать с огромной ошибкой относительно типа. Я думаю, что единственная важная ...

1 ответ

{- # OPTIONS_GHC -fspec-constr-count = 16 -O2 # -} использует 5,8 секунды для моего тестового файла, в то время как {- # OPTIONS_GHC -w # -} использует 10,5 секунды. Таким образом, -fspec-constr-count = 16 определенно предпочтительнее. Спасибо за помощь.

учаю следующую ошибку при попытке компиляции $ ghc --make -O2 -Wall -fforce-Recomp [1 из 1] Компиляция Main (isPrimeSmart.hs, isPrimeSmart.o) Функция SpecConstr `$ wa {v s2we} [lid] 'имеет два шаблона вызовов, но ограничение равно 1 ...

2 ответа

Когда GHC не может вывести сигнатуру равенства типов для допустимой функции, как в вашем случае, решение состоит в том, чтобы дать функции сигнатуру типа. Я не знаю интерфейс к этой библиотеке. Тем не менее, я думаю, что правильная подпись

аюсь работать с Numeric.AD и пользовательским типом Expr. Я хочу рассчитать символический градиент введенного пользователем выражения. Первое испытание с постоянным выражением работает хорошо: calcGrad0 :: [Expr Double] calcGrad0 = grad df vars ...

3 ответа

Это хороший обходной путь для моего варианта использования, но ошибка все еще существует.

сто две вещи, которые я так люблю, собираются вместе, чтобы вызвать у меня столько раздражения (помимо моих детей). На работе я написал программу на Haskell, в которой используются такие библиотеки, как text, xml-enumerator, attoparsec-text и т. ...

1 ответ

s.

апечатать список на стандартный вывод в Haskell? Допустим, у меня есть список[1,2,3] и я хочу преобразовать этот список в строку и распечатать его. Думаю, я мог бы построить свою собственную функцию, но, безусловно, в Haskell есть встроенная ...

1 ответ

, полезно для абсолютных новичков, таких как я, которые на самом деле ищут «почему мои новые строки не отображаются в ghci, как я хочу»

могу создать новую строку внутри строки? Это возможно без использованияIO ()? formatRow :: Car -> String formatRow (a, d:ds, c, x:xs) = a ++ " | " ++ x ++ concat xs ++ " | " ++ show c ++ " | " ++ d ++ concat ds ++ (show '\n')