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

1 ответ

Контекстная граница скаляра.Coyoneda.liftTF

Закончив смотреть заставляющий задуматься видеоролик "Архитектура составного приложения с недорогими монадами" от Рунара Бьярнасона, я начал писать примеры, представленные в видео, в Scalaz. У меня небольшой сюрприз при реализации интерпретатора на …
26 янв '15 в 13:55
3 ответа

Понимание примера на Writer Monad

Я узнаю о писательской монаде по книге "Learn You A Haskell". это кусок кода: import Control.Monad.Writer logNumber :: Int -> Writer [String] Int logNumber num = writer (num, ["Got number: " ++ show num]) multWithLog :: Writer [String] Int multWi…
23 ноя '15 в 22:20
1 ответ

Писатель Монада и Непоследовательность

Я использую Writer Монада для отслеживания флага ошибки ("столкновения") на произвольных значениях (таких как Int). Как только флаг установлен, он становится "липким" и присоединяется ко всем значениям, полученным в результате любой операции с отмеч…
07 мар '17 в 23:32
2 ответа

Композиция функции с монадой Writer?

Я изучаю Writer монада и иметь следующее: myFunction :: Int -> Int -> Writer String Int myFunction e1 e2 | e1 > e2 = do tell ("E1 greater") return (e1) | otherwise = do tell ("E2 greater") return (e2) main = do -- execWriter :: Writer w a -…
08 фев '17 в 10:39
2 ответа

Укладка монад Writer и OptionT

У меня есть следующий код: override def getStandsByUser(email: String): Try[Seq[Stand]] = (for { user <- OptionT(userService.findOneByEmail(email)): Try[Option[User]] stands <- OptionT.liftF(standService.list()):[Try[List[Stand]]] filtered = s…
2 ответа

Как получить доступ как к значению, так и к аккумулятору монады Writer в блоке do (PureScript)?

Я изучаю монаду Writer прямо сейчас, и я не уверен, правильно ли хотеть читать как значение, так и аккумулятор монады в пределах do блок. Например, в приведенной ниже функции coltzSeq я хочу считать длину аккумулятора Array в качестве окончательного…
16 сен '16 в 01:49
0 ответов

Проверка последовательности элементов XML с помощью монады Writer

Это продолжение моего старого вопроса. Предположим, мне нужно проверить XML: <a><a1/><a2/><a3/></a> Мне нужно убедиться, что рут a имеет детей a1, a2, а также a3 (в этом порядке). Я хотел бы использовать List (вместо sc…
24 янв '16 в 06:55
1 ответ

Обмен `mappend` в монаде писателя

Резюме: при использовании монады Writer я хотел бы иметь возможность переключаться между 2 различными версиями mappend без потери состояния. Я использую два логических флага для отслеживания состояния: data Flags = F Bool Bool Теперь я определяю два…
1 ответ

Wrapping Возможно в WriterT добавить логирование

Я полностью застрял и чувствую, что теперь могу использовать некоторую помощь, просто чтобы оставаться в здравом уме. Я хочу что-то столь же простое, как добавление возможностей регистрации в функцию, которая возвращает Maybe, но как бы я ни старалс…
27 мар '16 в 11:28
1 ответ

Мемоизация в монаде Писателя

ПРИМЕЧАНИЕ. Я просто пытаюсь понять, что происходит в этом фрагменте кода, показанном ниже. Я знаю, что это не лучший способ решить проблему. Я пытаюсь использовать ленивый Writer монада с запомненной функцией Фибоначчи для подсчета количества вызов…
02 мар '14 в 15:30
1 ответ

Проверка XML с помощью Writer и Kleisli в Scala

Это продолжение моего предыдущего вопроса Предположим, мне нужно проверить XML следующим образом: <a><a1>xxx<a1/><a2>yyy</a2><a3>zzz</a3></a> Мне нужно убедиться, что корневой элемент имеет метку a а т…
30 янв '16 в 19:23
2 ответа

Является ли писательская монада такой же, как государственная монада?

Здесь есть большое руководство, которое, кажется, подсказывает мне, что Монада Writer - это в основном объект кортежа особого случая, который выполняет операции от имени (A,B). Автор накапливает значения слева (то есть A), и что A имеет соответствую…
29 май '14 в 20:58
3 ответа

Космические утечки и Писатели, и Суммы (о мой!)

Недавно я играл с Writer Monad и столкнулся с тем, что кажется космической утечкой. Пока не могу сказать, что полностью понимаю эти вещи, поэтому мне хотелось бы знать, что здесь происходит, и как это исправить. Во-первых, вот как я могу вызвать эту…
11 окт '11 в 02:54
1 ответ

scalaz - состав функции - WriterT

Давайте определим Kleisli на \/: abstract class MyError case class NumericalError(msg: String) extends MyError // Either is a Monad with two type parameters: M[A,B] which represent left and right respectively // Let's create an ad-hoc type type EEit…
18 дек '15 в 14:31
2 ответа

Где официальное определение "связать" и "вернуть" для писательской монады в Хаскеле?

До сих пор я нашел: http://monads.haskell.cz/html/writermonad.html http://en.wikipedia.org/wiki/Monad_(functional_programming) которые дают определения для >>= а также return Где официальный код?
23 ноя '13 в 02:12
1 ответ

Писатель, реализованный с помощью Operational Monad, не работает лениво

Я написал монаду с функциональностью Writer, используя подход Operational Monad. Тогда я заметил, что это не работает лениво. В приведенном ниже коде есть rogueWriter который выполняет бесконечно много операторов, каждый из которых записывает строку…
1 ответ

Как составить функции, которые возвращают Writer[List[Int], Int]?

Предположим, у меня есть несколько функций Int => Int состоит из andThen: val f1: Int => Int = _ + 1 val f2: Int => Int = _ + 2 val f3: Int => Int = _ + 3 val f = f1 andThen f2 andThen f3 Теперь мне нужно вернуть и промежуточные результа…
28 авг '15 в 16:07
1 ответ

Писатель Монада Вложенный Дважды

Я пытаюсь вложить монаду писателя дважды, используя Монадные Трансформеры. Вот эскиз: import Control.Monad.Identity import Control.Monad.Writer data Struct = S Bool instance Monoid Struct where mempty = S True mappend (S a) (S b) = S (a && b…
1 ответ

Haskell Напишите Monad для выражений

Я пытаюсь разработать встроенный язык, где операции могут поднимать определенные флаги в зависимости от значений. Я предвижу работу со скалярными значениями, а также с векторами (например, map, fold и т. Д.). Моя идея - использовать Writer Monad для…
12 фев '16 в 23:02
1 ответ

Cats Writer несоответствие типов в выражении

Я создал тип type ResultLog = Writer[List[String], Option[Double]] Моя функция называется process хочет работать над списком Inputи вернуться ResultLog: def process(inputs : List[Input]): ResultLog = { for { input <- inputs res <- if(input.dat…
08 май '19 в 12:15