Описание тега io-monad

Монадический интерфейс для ввода-вывода на чистых функциональных языках, особенно Haskell.
1 ответ

Записать в несколько файлов в Haskell

В Haskell, как можно было бы записывать в произвольно большое количество файлов? В качестве примера, скажем, я хочу взять буквы a через z и поместите их в файлы, названные по букве их содержимого. Первоначальной попыткой было сделать следующее: main…
29 июн '17 в 09:04
1 ответ

Гибкое количество аргументов для программы на Haskell

Я использую System.FilePath.Find модуль filemanip для рекурсивного поиска всех файлов, которые мне нужно обработать (здесь я буду использовать просто печать на консоли в качестве действия для выполнения, чтобы не путать вещи). Теперь этот код: impor…
2 ответа

Если заявление с использованием IO Int haskell

У меня есть игра, пользователь против компьютера, и я хочу случайным образом выбрать, кто запускает игру. я имею a = getStdRandom $ randomR (0, 1) Это получает случайное число 0 или 1. Однако это IO Int, поэтому я не могу иметь оператор if, сравнива…
1 ответ

Как монада IO делает параллелизм простым в Scala?

Я смотрю это видео и начинается в 6min35s, он упомянул этот график: говоря, что IO Monad облегчает параллелизм. Я запутался в этом: как это работает? Как сделать два for comprehension включить параллелизм (вычисление d а также f)?
08 янв '19 в 07:49
1 ответ

Как отобразить ответ от HTTP GET-запроса во внешнем интерфейсе, используя Скотти?

Я пробую Скотти в первый раз, и я не могу пройти мимо, сделав свой запрос GET. Ответ возвращается как тип IO (Response bytestring-0.10.8.1:Data.ByteString.Lazy.Internal.ByteString) Я знаю, что мне нужно преобразовать его в тип, который может выводит…
09 авг '17 в 13:46
1 ответ

Передача случайно сгенерированного списка в качестве параметра в Haskell

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

Где утечка памяти при использовании StateT s IO a?

Намерение: небольшое приложение для изучения Haskell: загружает статью википедии, затем загружает все статьи, связанные с ней, затем загружает все статьи, связанные с ними, и так далее... до тех пор, пока не будет достигнута указанная глубина рекурс…
24 июн '18 в 20:41
1 ответ

Действие IO, вложенное в другие монады, не выполняющиеся

У меня есть foobar :: IO (ParseResult [(String,String)]) ParseResult - это монада, определенная здесь: https://hackage.haskell.org/package/haskell-src-exts-1.13.5/docs/Language-Haskell-Exts-Parser.html Я хочу взять эти строки и записать их LaTeXT m …
22 фев '17 в 03:52
1 ответ

Преобразование (a -> IO b) в IO (a -> b)

У меня есть несколько типов данных в контексте ввода-вывода, таких как: a :: IO String b :: IO FilePath c :: String -> IO String Я хочу собрать их все вместе в один объект данных, например: data Configdata = Configdata String FilePath (String -&g…
2 ответа

Почему Haskell нельзя обмануть в выполнении операций ввода-вывода с помощью строгой оценки?

Я только изучаю Хаскель и IO монады. Я задаюсь вопросом, почему это не заставило бы программу выводить "привет" так же как "пока": second a b = b main = print ((second $! ((print "hi") >>= (\r -> return ()))) "bye") Насколько я понимаю, $! …
16 июл '14 в 08:12
2 ответа

Обеспечивается ли чистота в Haskell системой типов или реализацией IO?

Всегда говорят, что система типов Haskell предотвращает загрязнение чистого кода нечистым кодом, так как вы всегда должны указывать IO в подписи типа. Однако является ли это следствием самой системы типов, или это действительно так? IO(..) не экспор…
2 ответа

Как в образце Simple IO Type избавиться от побочных эффектов в "FP in Scala"?

Я читаю главу 13.2.1 и наткнулся на пример, который может обрабатывать ввод ввода-вывода и тем временем избавляться от побочных эффектов: object IO extends Monad[IO] { def unit[A](a: => A): IO[A] = new IO[A] { def run = a } def flatMap[A,B](fa: I…
06 янв '19 в 06:52
1 ответ

Не могу вернуть возможно результат в IO Monad

Я не понимаю, почему этот пример кода не работает и в книге RWH это работает: module Monads where import Data.Maybe import Control.Monad amap=[("a",1),("bb",2)] bmap=[(1,100),(2,200)] final=[(100,1000),(200,2000)] f::String->IO (Maybe Int) f par=…
01 мар '19 в 14:02
1 ответ

Haskell Put IO String

Я пытаюсь прочитать и распечатать вывод команды "readProcess", сопоставленной со списком имен файлов: files <- readProcess "ls" [] [] let mdList = map ( \file -> do md <- readProcess "mdls" [file] [] return md ) $ splitOn "\n" files in map …
30 окт '17 в 16:14
1 ответ

Комбинирование и разбиение присваивания в блоке Haskell IO do

Я / думаю / у меня похожее неправильное понимание языка в двух местах, связанных с тем, как работает назначение переменных в блоках do, включая монаду IO. Не могли бы вы помочь мне понять (1) это то же недоразумение, (2) как разобраться (в ответе, и…
28 авг '16 в 16:00
4 ответа

Рефакторинг "лестницы" в случае значений "Может" в коде "IO"

Следующая функция f пытается прочитать Int дважды с помощью IO (Maybe Int) функционировать дважды, но выполнение "коротких замыканий" после успешного чтения одного Int: readInt :: IO (Maybe Int) f :: IO (Maybe Int) f = do n1 <- readInt case n1 of…
24 янв '15 в 11:09
1 ответ

Haskell & Scrypt: как получить зашифрованный хеш

* Извините за основной вопрос, только начал изучать Haskell. Я пытаюсь написать функцию, которая получит строку и вернет зашифрованный хеш. На данный момент я пришел к выводу: encrypt :: ByteString -> ByteString encrypt = do x <- Crypto.Scrypt…
17 окт '16 в 21:58
0 ответов

Кошачий эффект волокна автокоррекции

Я совсем новичок в кошачьих эффектах, и я уже люблю и наслаждаюсь им:) это о волокнах как я увидел, что волокна можно отменить, я пытаюсь выяснить, возможно ли иметь IO со списком волокон, который при ошибке на любом из волокон может отменить осталь…
07 июн '18 в 12:22
3 ответа

Факториальная функция в IO монаде haskell

Я делаю факториальную функцию в haskell монады IO. Я последовал примеру mod3, чтобы выполнить функцию факториала с монадой ввода-вывода. Я не могу понять, почему мой код неверен. Я хочу посмотреть, если n>=1, а затем сделать факториал для n. Наконец…
22 окт '15 в 01:41
2 ответа

Как я могу использовать карту над списком с помощью нотации do - т.е. избегать типа `IO ()'с типом`[IO ()]'?

Так что этот вопрос касается Монад в более общем плане (в частности, для Фэй), но в моем примере используется монада IO. У меня есть функция, в которой вход представляет собой список строк, и я хотел бы напечатать каждую строку по одной. Итак, вот м…
20 май '14 в 23:21