Описание тега monads

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

В чем разница между монадой и замыканием?

Я немного запутался, читая определение между ними. Могут ли они на самом деле пересекаться с точки зрения определения? или я полностью потерялся? Благодарю.
26 апр '09 в 11:57
2 ответа

Реализация >>= в новом типе

Позвольте мне начать с задачи, которую я хочу решить, возможно, я иду не в ту сторону. Я использую Snap Framework для игрушечного проекта, и главное, что он работает под Snap монада. Мне нужно добавить свое состояние над ним. Я использую монадный тр…
26 май '12 в 09:42
3 ответа

Параллельный Хаскелл. Ограничивающий скорость производитель

В параллельном и параллельном программировании на Хаскелле Саймон Марлоу предлагает Stream a на основе следующих данных вместе с некоторыми производителями и потребителями: data IList a = Nil | Cons a (IVar (IList a)) type Stream a = IVar (IList a) …
16 июл '14 в 05:51
1 ответ

Как использовать runSession from: Test.WebDriver в haskell selenium webdriver?

Я новичок в Хаскеле (хотя я после прочтения ЛЯХ). Я понятия не имею, что я должен сделать, чтобы использовать селен вебдрайвер ( ссылка вебдрайвера на взлом). Я уверен, что должен запустить одну из этих функций runWD :: WDSession -> WD a -> IO…
30 июн '12 в 13:54
1 ответ

Попытка понять, возможно, Монады, используя LiveScript

Я пытаюсь понять монады лучше. Это минимальная реализация Правильного Монады? Maybe = (value) -> @value = value Maybe.prototype.ret = -> @value Maybe.prototype.bind = (fn) -> if not (@value is null) return fn @value @value Maybe.prototype.l…
02 июн '16 в 01:11
1 ответ

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

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

Есть ли смысл сделать IO экземпляром MonadCont?

Очевидно MonadConts более ограничен и дает больше мощности, чем обычный MonadS, благодаря его callCC, Это означает меньше случаев этого, и больше вы можете сделать с ним. Когда посмотрите на определенные случаи MonadContПохоже, что все перечисленное…
08 ноя '13 в 04:59
5 ответов

Почему Ничего >> Только 3 - Ничто в Хаскеле?

Подпись >> Функция в Haskell заключается в следующем: (>>) :: m a -> m b -> m b И реализация по умолчанию: x >> y = x >>= \_ -> y Под этим я понимаю, что >> Функция всегда возвращает свой правый параметр незави…
17 апр '14 в 18:09
1 ответ

Haskell получает значение Either от Get monad

Я - новичок из Haskell, застрявший на довольно простой функции, которую я пытаюсь выполнить. В конечном итоге моя цель - прочитать строгое ByteString, использовать Get монада с декодером для извлечения первого Word32 от ByteStringи выполнять конкрет…
22 дек '16 в 15:31
2 ответа

Какова логика, позволяющая объединять только те же типы монад с оператором `>>`?

Хотя это нормально связывать IO [[Char]] а также IO () но его нельзя связывать Maybe с IO, Может кто-нибудь привести пример, как это расслабление приведет к плохому дизайну? Почему свобода в полиморфном типе Монады допускается, но не самой Монадой?
28 ноя '17 в 13:31
2 ответа

Гарантирует ли Writer Monad правильную ассоциативную конкатенацию?

В утверждениях в Haskell было заявлено, что использование Writer гарантирует правоассоциативную конкатенацию. Однако, этот пример, кажется, показывает иначе. Какой правильный ответ? {-# LANGUAGE OverloadedStrings #-} import Control.Monad.Writer impo…
04 янв '12 в 18:18
1 ответ

Завершение проверки замены через (монадическое) соединение и fmap

Я использую типоразмеры и имею функцию подстановки для типизированных терминов, которая проверяет завершение, если я даю определение напрямую, а не если я делаю его через (монадное) соединение и fmap. {-# OPTIONS --sized-types #-} module Subst where…
27 фев '14 в 07:44
1 ответ

Реализация flatMap() для перехода между состояниями

Упражнение 6.8, Кьюзано и Бьярнасон, Функциональное программирование в Scala, с. 87 спрашивает, как можно реализовать flatMap() для следующей черты: trait RNG { def nextInt: (Int, RNG) } type Rand[+A] = RNG => (A, RNG) Ключ ответа дает следующее …
1 ответ

Haskell websockets header

Я пытаюсь прочитать заголовок websockets в haskell. Текущий код выглядит следующим образом import Network import Network.Socket.Internal import Text.Printf import Control.Monad import Control.Monad.IO.Class import Data.Maybe import Data.List import …
18 мар '15 в 15:41
2 ответа

Возможно ли это монадное / аппликативное упрощение?

Это возможно?, (есть >>magic функция), чтобы упростить это: insertTransaction :: Day -> Int -> Int -> MyReaderT Bool insertTransaction day amount price = .... logTransaction :: Int -> Int -> MyReaderT Bool logTransaction amount …
06 фев '12 в 20:05
2 ответа

Карта HaskellM, когда есть 3 монадических результата

Время от времени я продолжаю сталкиваться с кодом на Haskell, где я чувствую, что должен быть в состоянии использовать mapM сделать работу над монадами чище, но если у меня есть два вычисления типа m (t a)и, возможно, есть еще одна операция, которая…
19 июл '18 в 13:48
4 ответа

Какой тип математики это: а -> б -> с

Я часто вижу объявления типа, похожие на это, когда смотрю на Haskell: a -> (b -> c) Я понимаю, что она описывает функцию, которая принимает что-то типа a и возвращает новую функцию, которая принимает что-то типа b и возвращает что-то типа c. …
27 мар '11 в 14:22
2 ответа

Как использовать readFile

У меня проблемы с чтением файла уровня в Haskell. Цель состоит в том, чтобы прочитать простой текстовый файл с двумя числами, разделенными пробелом, а затем запятыми. Проблема, которую я продолжаю получать, заключается в следующем: не может соответс…
15 окт '17 в 17:30
1 ответ

Примеры монадических эффектов внутри функции перезаписи в Hoopl?

Тип (перезаписывающих) функций перезаписи в Hoopl задается mkFRewrite функция: mkFRewrite :: (FuelMonad m) => (forall e x. n e x -> f -> m (Maybe (hoopl-3.8.6.1:Compiler.Hoopl.Dataflow.Graph n e x))) -> FwdRewrite m n f m Тип подразумева…
1 ответ

Либо, попробуй, и валидация в Scala

Меня смущает Either, Try, а также Validation из scalaz, Кажется, никто из них не делает то, что мне нужно. Что мне нужно, это простая монада Result[E, R] где E это тип ошибки и R тип результата Either не подходит, потому что это не монада (но прогно…
13 мар '14 в 12:24