Я пытаюсь бесконечно повторять действие ввода-вывода, но передаю результат одного выполнения другому. Что-то вроде этого: -- плохо названо
iterateM :: Monad m => (a -> m a) -> a -> m b
...
Я пытаюсь получить предварительное представление о монадах У меня есть вызов уровня данных, результат которого Я хотел бы вернуть монадический результат либо в результате, например, отсутствия обновленных строк/набора данных и т.д., либо...
Я могу использовать = в scala для понимания (как указано в разделе 6.19 SLS) следующим образом: Option Предположим, у меня есть некоторая функция String => Option[Int ]: scala> def intOpt(s: String) = try ...
Мне нужно использовать преобразование монады списка. Я читал, что существуют потенциальные проблемы с ListT IO из Control.Monad.List, поскольку IO не является коммутативным, поэтому я смотрю на ListT, сделанный правильно. Но я...
Имея действие монады Writer, я хочу изменить его, сопоставив функцию с записываемыми данными внутри действия монады. Что-то вроде: retell :: (w -> w') -> Writer wa -> Writer w' a Делает...
Есть ли разница между потоками (ленивыми списками )и монадами? С концептуальной и математической точек зрения, а не с технической реализации. Или же существуют biunique, от одного -до -один...
Я знаю, что do x < -[1, 2, 3] y < -[7], 8, 9] пусть z = (x + y )return z может быть выражено в Scala следующим образом: { x < -List (1, 2, 3 )y < -List (7, 8, 9 )z = x + y } yield...
Я только что написал эту функцию, которая просто принимает пару, вторая value находится в некоторой монаде и «вытягивает монаду», чтобы покрыть всю пару. unSndM :: Монада m => (a, mc) -> m (a, c)
...
Этот код считывает количество строк для обработки первая строка стандартного ввода, затем он циклически повторяет число _из _строк _до _времени обработки, выполняя некоторые вычисления и печатая результат. Я хочу, чтобы он напечатал строку...
Я только что написал этот код:(параметры defn [преобразование -заводское состояние] (ленивый -seq (let [[состояние r1] (унифицированное состояние )[состояние r2] (унифицированное состояние )[t состояние ] (преобразование -...
Я пытаюсь разобраться в Haskell с помощью онлайн-книги Learn you a Haskell во благо. Насколько мне известно, я был в состоянии понять монады до тех пор, пока не попал в главу, посвященную...
Скажем, я написал следующий удивительный фрагмент кода:func = do a <-Just 5 return a Это довольно бессмысленно, я знаю. Здесь a равно 5, а func возвращает Just 5. Теперь я переписываю свой удивительный (yet...
Я определяю монадический наблюдаемый/реактивный синтаксический анализатор. Это ведет себя совершенно иначе, чем обычный анализатор, поскольку это непрерывный запрос. Базовым типом является :IObservable<'a> -> IObservable<'b&...
Я пытаюсь скомпоновать seq-m и error-m, чтобы выполнять списковые включения вещей, которые могут возвращать ошибки. Мой вывод имеет неожиданные типы, хотя в остальном он действительно кажется разумным. у меня есть...
Рассмотрим следующий код, который должен выводить случайные числа: import System.Random.Mersenne main = do g <- (newMTGen Nothing) xs <- (randoms g) :: IO [Double] mapM_ print ...
Я думаю, что мне не хватает базового понимания монадных преобразователей, потому что я обнаружил, что пишу этот код: import Control.Monad.Identity
import Control.Monad.Error liftError :: Someone String Int -...
У меня есть фрагмент кода, в котором внутри монады списка применяется функция. Функция потенциально может иметь неполное сопоставление с образцом для своих аргументов. Поэтому, когда функция применяется, я...
В настоящее время я играю с основами Haskell и наткнулся на следующий «вариант использования»: ghci> давайте разделимTenBy x | х == 0 = Ничего | в противном случае = Просто (10 / x)
ghci> let составил = ...
Когда я хочу протестировать чистый код с помощью QuickCheck, мне часто приходится писать экземпляр Arbitrary. Чтобы протестировать монадический код, я могу использовать Test.QuickCheck.Monadic, как описано в этой статье. Мой вопрос: Является ли ...
Я думал, что в принципе система типов Haskell запрещает вызывать нечистые функции (т.е. f::a -> IO b) из чистых, но сегодня я понял, что вызывая их с return они компилируются просто...
Я хотел бы написать метод mergeKeys, который группирует значения в Iterable[(K, V)] по ключам. Например, я мог бы написать: def mergeKeysList[K, V](iter: Iterable[(K, V)]) = { iter....
У меня есть монада для вычислений, которые могут дать сбой, и она ведет журнал: f1 :: WriterT [String] (Either String) a У меня есть функция, которая не даст сбой, но некоторое ведение журнала: f2 :: Writer [String] b ...
Я читал руководство Learn You a Haskell по монаде состояния, но у меня возникли проблемы с его пониманием, так как пример стека не мог скомпилироваться. В руководстве он использовал следующий фрагмент кода :import...
Я пытаюсь реализовать монаду Maybe из Haskell, используя лямбда-функции в C++11 и шаблоны. Вот что у меня есть на данный момент #include
#include
использование пространства имен ...
Имея две монады, Монаду m и Монаду n, я хотел бы преобразовать m (na) в n (ma). Но, кажется, не существует универсального способа, потому что и (>>=), и return имеют дело только с одним типом монады, и...
У меня есть общий вопрос и более конкретный вопрос.Как вообще можно комбинировать разные монады? Допускает ли некоторая комбинация операторов монады легкую композицию? Или нужно ...
Я просматривал слайды на http://www.algorithm.com.au/downloads/talks/monads-are-not-scary/monads-are-not-scary-chak.pdf и прибл. 75% пути через колоду проходит пуля...
Если у меня есть стек монад, скажем, IO, State и Error, и функция, которая использует только IO и Error. Как можно «удалить» монаду среднего состояния из стека, чтобы я мог использовать свою функцию? Если...
Похоже, что Haskell установил несколько соглашений об именах для монад. Примеры: добавление T в конец для получения имени преобразователя монад (например, Reader -> ReaderT)
использование runXXX для ...
Одно раздражение, связанное с ленивым вводом-выводом, привлекло мое внимание недавно import System.IO
import Control.Applicative main = withFile "test.txt" ReadMode getLines >> = mapM_ putStrLn where getLines h = ...