0
ответов

iterate + forever = iterateM? Повторение действия с обратной связью

Я пытаюсь бесконечно повторять действие ввода-вывода, но передаю результат одного выполнения другому. Что-то вроде этого: -- плохо названо iterateM :: Monad m => (a -> m a) -> a -> m b ...
вопрос задан: 29 May 2012 14:19
0
ответов

Исключение или любая монада в C#

Я пытаюсь получить предварительное представление о монадах У меня есть вызов уровня данных, результат которого Я хотел бы вернуть монадический результат либо в результате, например, отсутствия обновленных строк/набора данных и т.д., либо...
вопрос задан: 27 May 2012 14:45
0
ответов

scala Либо.RightProjection путаница (для десахаризации понимания)

Я могу использовать = в scala для понимания (как указано в разделе 6.19 SLS) следующим образом: Option Предположим, у меня есть некоторая функция String => Option[Int ]: scala> def intOpt(s: String) = try ...
вопрос задан: 21 May 2012 15:49
0
ответов

преобразование монады списка

Мне нужно использовать преобразование монады списка. Я читал, что существуют потенциальные проблемы с ListT IO из Control.Monad.List, поскольку IO не является коммутативным, поэтому я смотрю на ListT, сделанный правильно. Но я...
вопрос задан: 21 May 2012 11:53
0
ответов

Изменение записанных данных в монаде Writer

Имея действие монады Writer, я хочу изменить его, сопоставив функцию с записываемыми данными внутри действия монады. Что-то вроде: retell :: (w -> w') -> Writer wa -> Writer w' a Делает...
вопрос задан: 17 May 2012 18:43
0
ответов

Потоки и монады

Есть ли разница между потоками (ленивыми списками )и монадами? С концептуальной и математической точек зрения, а не с технической реализации. Или же существуют biunique, от одного -до -один...
вопрос задан: 7 May 2012 22:53
0
ответов

Scala-эквивалент нотации Haskell& #39;s do -(еще раз)

Я знаю, что 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...
вопрос задан: 4 May 2012 01:33
0
ответов

У этой простой функции Haskell уже есть известное имя?

Я только что написал эту функцию, которая просто принимает пару, вторая value находится в некоторой монаде и «вытягивает монаду», чтобы покрыть всю пару. unSndM :: Монада m => (a, mc) -> m (a, c) ...
вопрос задан: 3 May 2012 18:59
0
ответов

Как что-то сделать с данными из stdin, построчно, максимальное количество раз и вывести количество строк в Haskell

Этот код считывает количество строк для обработки первая строка стандартного ввода, затем он циклически повторяет число _из _строк _до _времени обработки, выполняя некоторые вычисления и печатая результат. Я хочу, чтобы он напечатал строку...
вопрос задан: 30 April 2012 10:50
0
ответов

Как лучше перебирать состояние в монаде Clojure (?)

Я только что написал этот код:(параметры defn [преобразование -заводское состояние] (ленивый -seq (let [[состояние r1] (унифицированное состояние )[состояние r2] (унифицированное состояние )[t состояние ] (преобразование -...
вопрос задан: 26 April 2012 18:54
0
ответов

Путаница по поводу кода State Monad в «Learn you a Haskell»

Я пытаюсь разобраться в Haskell с помощью онлайн-книги Learn you a Haskell во благо. Насколько мне известно, я был в состоянии понять монады до тех пор, пока не попал в главу, посвященную...
вопрос задан: 19 April 2012 17:10
0
ответов

«<-» и связанные значения

Скажем, я написал следующий удивительный фрагмент кода:func = do a <-Just 5 return a Это довольно бессмысленно, я знаю. Здесь a равно 5, а func возвращает Just 5. Теперь я переписываю свой удивительный (yet...
вопрос задан: 18 April 2012 07:32
0
ответов

Назначение единичного размеченного объединения

Я определяю монадический наблюдаемый/реактивный синтаксический анализатор. Это ведет себя совершенно иначе, чем обычный анализатор, поскольку это непрерывный запрос. Базовым типом является :IObservable<'a> -> IObservable<'b&...
вопрос задан: 16 April 2012 18:53
0
ответов

комбинируя монады may и seq: вывод непонятен

Я пытаюсь скомпоновать seq-m и error-m, чтобы выполнять списковые включения вещей, которые могут возвращать ошибки. Мой вывод имеет неожиданные типы, хотя в остальном он действительно кажется разумным. у меня есть...
вопрос задан: 8 April 2012 01:55
0
ответов

Монада Haskell: IO [Double] to [IO Double]

Рассмотрим следующий код, который должен выводить случайные числа: import System.Random.Mersenne main = do g <- (newMTGen Nothing) xs <- (randoms g) :: IO [Double] mapM_ print ...
вопрос задан: 5 April 2012 01:54
0
ответов

Поднимите значение ошибки в монадный преобразователь ErrorT

Я думаю, что мне не хватает базового понимания монадных преобразователей, потому что я обнаружил, что пишу этот код: import Control.Monad.Identity import Control.Monad.Error liftError :: Someone String Int -...
вопрос задан: 4 April 2012 17:58
0
ответов

Безопасное приложение на Haskell

У меня есть фрагмент кода, в котором внутри монады списка применяется функция. Функция потенциально может иметь неполное сопоставление с образцом для своих аргументов. Поэтому, когда функция применяется, я...
вопрос задан: 1 April 2012 15:49
0
ответов

Использование функции a → b в качестве «монадической» функции a → mb

В настоящее время я играю с основами Haskell и наткнулся на следующий «вариант использования»: ghci> давайте разделимTenBy x | х == 0 = Ничего | в противном случае = Просто (10 / x) ghci> let составил = ...
вопрос задан: 1 April 2012 03:26
0
ответов

Существует ли монадическая версия Arbitrary для использования с QuickCheck?

Когда я хочу протестировать чистый код с помощью QuickCheck, мне часто приходится писать экземпляр Arbitrary. Чтобы протестировать монадический код, я могу использовать Test.QuickCheck.Monadic, как описано в этой статье. Мой вопрос: Является ли ...
вопрос задан: 25 March 2012 22:12
0
ответов

Что означают действия ввода-вывода внутри чистых функций?

Я думал, что в принципе система типов Haskell запрещает вызывать нечистые функции (т.е. f::a -> IO b) из чистых, но сегодня я понял, что вызывая их с return они компилируются просто...
вопрос задан: 22 March 2012 09:35
0
ответов

Группировка значений по ключу с любым моноидом

Я хотел бы написать метод mergeKeys, который группирует значения в Iterable[(K, V)] по ключам. Например, я мог бы написать: def mergeKeysList[K, V](iter: Iterable[(K, V)]) = { iter....
вопрос задан: 15 March 2012 03:18
0
ответов

Обновление внешней монады только в преобразователе монады

У меня есть монада для вычислений, которые могут дать сбой, и она ведет журнал: f1 :: WriterT [String] (Either String) a У меня есть функция, которая не даст сбой, но некоторое ведение журнала: f2 :: Writer [String] b ...
вопрос задан: 14 March 2012 13:48
0
ответов

Монада состояния и Learnyouahaskell.com

Я читал руководство Learn You a Haskell по монаде состояния, но у меня возникли проблемы с его пониманием, так как пример стека не мог скомпилироваться. В руководстве он использовал следующий фрагмент кода :import...
вопрос задан: 14 March 2012 08:08
0
ответов

Реализация Haskell-монады Maybe в C++11

Я пытаюсь реализовать монаду Maybe из Haskell, используя лямбда-функции в C++11 и шаблоны. Вот что у меня есть на данный момент #include #include использование пространства имен ...
вопрос задан: 13 March 2012 21:45
0
ответов

Переупаковка монад — любой общий способ?

Имея две монады, Монаду m и Монаду n, я хотел бы преобразовать m (na) в n (ma). Но, кажется, не существует универсального способа, потому что и (>>=), и return имеют дело только с одним типом монады, и...
вопрос задан: 13 March 2012 13:49
0
ответов

Объединение монад (IEnumerable и Maybe в качестве примера)

У меня есть общий вопрос и более конкретный вопрос.Как вообще можно комбинировать разные монады? Допускает ли некоторая комбинация операторов монады легкую композицию? Или нужно ...
вопрос задан: 11 March 2012 16:50
0
ответов

Переопределить ввод-вывод, чтобы упростить отладку?

Я просматривал слайды на http://www.algorithm.com.au/downloads/talks/monads-are-not-scary/monads-are-not-scary-chak.pdf и прибл. 75% пути через колоду проходит пуля...
вопрос задан: 11 March 2012 16:31
0
ответов

Управление стеком монад

Если у меня есть стек монад, скажем, IO, State и Error, и функция, которая использует только IO и Error. Как можно «удалить» монаду среднего состояния из стека, чтобы я мог использовать свою функцию? Если...
вопрос задан: 8 March 2012 00:49
0
ответов

Каковы все соглашения об именах монад?

Похоже, что Haskell установил несколько соглашений об именах для монад. Примеры: добавление T в конец для получения имени преобразователя монад (например, Reader -> ReaderT) использование runXXX для ...
вопрос задан: 28 February 2012 06:30
0
ответов

Strict fmap с использованием только Functor, а не Monad

Одно раздражение, связанное с ленивым вводом-выводом, привлекло мое внимание недавно import System.IO import Control.Applicative main = withFile "test.txt" ReadMode getLines >> = mapM_ putStrLn where getLines h = ...
вопрос задан: 24 February 2012 00:28