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

0 ответов

Скотти и Читатель Монада

Я пытаюсь добавить монаду Reader в свое приложение Scotty, чтобы иметь единый корневой путь для внутреннего расширения URL. Кажется, я не могу понять, как Скотти справляется с трансформацией монады - обычно я просто вижу что-то вроде runTransformerT…
1 ответ

Я знаю, как использовать это, но я не понимаю точно, как это делает (Монада Читателя)

Рассмотрим следующий код (с пропущенными очевидными частями) main = do let s = "123456"; let len = runReader calculateContentLength s putStrLn $ "Original 's' length: " ++ (show len) calculateContentLength :: Reader String Int calculateContentLength…
24 авг '14 в 20:51
3 ответа

Читатель Монады разъяснения

Я пытаюсь понять смысл монады читателя, но не могу понять, что связывает (>>=) с этой монадой. Вот реализация, которую я анализирую: newtype Reader e a = Reader { runReader :: (e -> a) } instance Monad (Reader e) where return a = Reader $ \e -&gt…
21 янв '18 в 18:05
1 ответ

Изменить ST-зависимую среду в ReaderT - проблема с функцией `local`

Этот вопрос является продолжением этой темы: /questions/16491943/neyavnoe-vyipolnenie-stref-v-srede-vo-vremya-vyichislenij/16491953#16491953 Я спрашивал там о проведении STRef в ReaderTсреда и выполнение ST-действий под ней. Моя установка теперь выг…
1 ответ

Предпочитая монаду Reader по прямой передаче среды в качестве параметров

Я писал базовое приложение CRUD на Haskell, используя библиотеки Servant и Opaleye. Слуга для настройки конечных точек API и Opaleye для хранения данных в БД. Допустим, есть конечная точка GET /users который возвращает список всех пользователей из Б…
15 июн '18 в 15:46
1 ответ

Использование монады Reader с QuickCheck / monadicIO

Я хотел бы передать целое число в качестве аргумента CLI в программу на Haskell, которая использует QuickCheck / monadicIO, Это целое число будет использоваться внутри assert сделать тесты настраиваемыми. Проблема в том, что когда я разбираю целочис…
30 июл '14 в 20:12
1 ответ

Как создать собственную монаду читателя вместе с пользовательским классом типов?

Я пытаюсь объединить подход, приведенный на http://lexi-lambda.github.io/blog/2016/06/12/four-months-with-haskell/ (раздел под названием "Классы типов могут эмулировать эффекты"), с некоторыми этакий доморощенный читатель монада. Общая проблема, кот…
2 ответа

Существует ли монада Powerset-over-Reader?

Канонический "экземпляр Монады" для совместного использования среды плюс недетерминизм выглядит следующим образом (с использованием псевдо-Хаскелла, так как Хаскелл Data.Set не, конечно, монадный) eta :: a -> r -> {a} -- '{a}' means the type o…
16 фев '17 в 00:20
1 ответ

Рефакторинг функции Haskell, использующей монаду Reader

У меня есть код, который выглядит примерно так, игнорируя весь код, который не имеет отношения к моему вопросу: import qualified Control.Monad.Reader as Reader data FooEnv = FooEnv { bar :: Int -> Int } type FooReader = Reader.Reader FooEnv foo :…
1 ответ

Как избежать перехода с Monad Transformers в scala?

У меня есть следующий код, который использует Reader монада для конфигурации, а также имеет дело с IO[Option[String]] и я закончил с кодом, который ступеньки в моем encode функция. Как я могу сформулировать монадный трансформатор для Reader а также …
12 июн '13 в 09:33
2 ответа

Haskell - глубина для каждого узла в двоичном дереве, используя монаду Reader

Я написал следующий код. Это работает и использует Reader монада. Не могли бы вы дать мне несколько советов о стиле кода в Haskell? В основном я имею в виду монады - я новичок. import Control.Monad.Reader data Tree a = Node a (Tree a) (Tree a) | Emp…
07 апр '16 в 11:18
1 ответ

Читательская монада в Scala: возврат, локальный и последовательность

Я использую Reader монада в Scala, предоставленная библиотекой scalaz. Я знаком с этой монадой, как определено в Haskell. Проблема в том, что я не могу найти функции, эквивалентные return, local, а также sequence (среди прочих). В настоящее время я …
22 июл '16 в 10:40
3 ответа

Понимание монады читателя

Я читаю Purescript на примере и попал в часть, представляющую монаду Reader. Пример выглядит так: createUser :: Reader Permissions (Maybe User) createUser = do permissions <- ask if hasPermission "admin" permissions then map Just newUser else pur…
2 ответа

Функция составная подсказка

Просто ищу объяснение, как работает следующая композиция: (=<<) . return где (=<<) :: (a -> m b) -> m a -> m b return :: a -> m a (.) :: (b -> c) -> (a -> b) -> a -> c Окончательный тип: GHCi> :t (=<<)…
1 ответ

Модификация внутреннего считывателя в стеке трансформатора

Я собираю код из разных мест и пытаюсь разобраться со следующим: проблема У меня есть стек трансформаторов со следующим упрощенным типом: action :: m (ReaderT r IO) a и я пытаюсь использовать действие в контексте другого стека, который имеет другую …
06 сен '17 в 17:01
2 ответа

В чем разница между читательской монадой и частичной функцией в Clojure?

Леонардо Борхес подготовил фантастическую презентацию " Монады в Clojure". В ней он описывает читательскую монаду в Clojure, используя следующий код: ;; Reader Monad (def reader-m {:return (fn [a] (fn [_] a)) :bind (fn [m k] (fn [r] ((k (m r)) r)))…
08 мар '14 в 02:13
2 ответа

Читатель Monad - объяснение тривиального случая

Я пытался справиться с монадой читателя и наткнулся на этот учебник. В нем автор представляет этот пример: example2 :: String -> String example2 context = runReader (greet "James" >>= end) context where greet :: String -> Reader String S…
26 мар '18 в 16:02
2 ответа

Рекурсивная прогулка по AST с использованием foldl и монады Reader без шаблонов

Я пересекаю AST, используя простое сопоставление с образцом и Reader монада В другом месте в моем проекте я определил walk функция для прохождения AST, которая в своей основе использует foldl сократить результаты посещения каждого узла в дереве до е…
05 апр '16 в 05:27
2 ответа

Scalaz: как работает "scalaz.syntax.applicative._`"

Этот вопрос связан с этим, где я пытался понять, как использовать читалку в Scala. В ответе автор использует следующий код для получения экземпляра ReaderInt[String]: import scalaz.syntax.applicative._ val alwaysHello2: ReaderInt[String] = "hello".p…
27 июл '16 в 19:56
1 ответ

Что означают операции с картой и плоской картой для ReaderMonad

Я новичок в скале. Я родом из Явы. Я читал монады и сформировал общее представление об этом. Хотя я могу оценить map а также flatMap операции над такими типами, как List я не могу обернуть голову вокруг того, что они имеют в виду, когда дело доходит…
28 мар '16 в 06:03