Вопросы по теме 'state-monad'

Застрял в примере State Monad в Haskell Wiki
Я изучаю State Monad и не могу понять один пример в Wiki ( http://en.wikibooks.org/wiki/Haskell/Understanding_monads/State ) rollDie :: GeneratorState Int rollDie = do generator <- get let (value, newGenerator) = randomR (1,6)...
137 просмотров
schedule 09.10.2021

Отвлекается при попытке понять монаду состояний
Я пытаюсь понять и освоиться с Монадой состояний, поэтому я в основном копирую уже существующий пример. «Состояние» - это просто дверь, которая открывается, если ее толкают, когда закрывается, и закрывается, когда ее тянут, если она открыта. Если он...
68 просмотров
schedule 20.09.2021

Haskell: как совместить скалярные и монадические значения?
В настоящее время я возился с проблемой haskell, касающейся 2D-массива ST и рекурсии. Учитывая 2D-позицию и массив направлений, я написал строку, возвращающую список всех результирующих точек внутри массива: let cellsAround = [resPt | dir <-...
79 просмотров
schedule 24.10.2021

Присоединенные функторы определяют преобразователи монад, но где лифт?
Меня заинтриговала конструкция, описанная здесь для определения преобразователя монад из сопряженных функторов. Вот код, который резюмирует основную идею: {-# LANGUAGE MultiParamTypeClasses #-} import Control.Monad newtype Three g f...
457 просмотров

Зачем нужна плоская карта в монадах состояний?
Простите за очень наивный вопрос. Я понимаю, что сущность монад состояний - это карта типа S => (S, A), в которой S - это тип для состояний, A - это тип для результата вычисления. Тогда сущность монады состояния будет определена как (в Scala)...
67 просмотров
schedule 17.09.2021

Haskell - монада состояний - признак императивного мышления?
Пишу простую игру - Тетрис. Впервые в жизни я использую функциональное программирование для этой цели, в качестве языка я выбрал Haskell. Однако я заражен ООП и императивным мышлением и боюсь неосознанно применять этот образ мышления в моей...
808 просмотров
schedule 05.03.2022

Монады состояния: переход от одного типа состояния к другому
Допустим, у нас есть стек монад с преобразователем монады состояния в качестве самого внешнего преобразователя, как этот: -- | SEWT: Composition of State . Except . Writer monad transformers in that -- order where Writer is the innermost...
631 просмотров

Что такое символ ‹- при использовании State Monad?
В Haskell / Understanding monads / State есть фрагмент кода: type GeneratorState = State StdGen rollDie :: GeneratorState Int rollDie = do generator <- get let (value, newGenerator) = randomR (1,6) generator put...
126 просмотров
schedule 25.03.2022

Экземпляр Zoom над Free Monad
Я пытаюсь создать бесплатную монаду (используя free ), которая действует так же, как монада StateT , но который также позволяет запускать монады в базовом состоянии AppState . У меня есть отдельный конструктор LiftAction , который содержит эти...
168 просмотров

Можно ли эмулировать поведение StateT без использования пользовательских типов?
Если у нас есть следующие две функции, сложение и вычитание, их просто связать в цепочку, чтобы выполнить серию вычислений на входе: add :: Int -> State Int () add n = state $ \x -> ((),x+n) subtract :: Int -> State Int () subtract n =...
80 просмотров

Когда и почему вы используете State Monads?
Я могу написать монаду состояния (на Scala/Java) и могу в значительной степени следовать логике, когда вижу, как ее используют другие. Я не совсем понимаю проблему, которую он решает. Это монада, обертывающая функцию S => (S,A) . Таким...
348 просмотров
schedule 15.05.2022

Можно ли использовать IO внутри монады State, не используя StateT и ST
В приведенном ниже коде я управляю игрой, которой принадлежит список ссылок. На каждом этапе игры я меняю состояние игры, обновляя список измененных ссылок. Когда я изучаю монаду State, я пытался применить технику монады State к этому варианту...
949 просмотров
schedule 05.07.2022

Каково назначение государственной монады?
Я разработчик JavaScript, который хочет улучшить свои навыки функционального программирования. Недавно я столкнулся со стеной, когда дело доходит до управления состоянием. При поиске решения я наткнулся на монаду состояния в различных статьях и...
3719 просмотров

Интерфейс продолжения монады
Монада состояния "интерфейс" class MonadState s m where get :: m s put :: s -> m () (+ return и bind) позволяет построить любое возможное вычисление с помощью монады State без использования конструктора State . Например, State $...
684 просмотров
schedule 31.07.2022

Идеи для пользовательского синтаксиса `do`/`let` (без макросов)?
Я только что построил монаду состояния «объект» и хотел бы иметь возможность привязывать шаги к переменным и связывать последовательные вычисления, как если бы с bind / >>= , например, как haskell работает с монадами, и как работают различные...
307 просмотров
schedule 28.08.2022

Как я могу инициализировать состояние скрытым способом в Haskell (как это делает PRNG)?
Я прошел несколько руководств по монаде State и, кажется, уловил идею. Например, как в этом замечательном руководстве : import Data.Word type LCGState = Word32 lcg :: LCGState -> (Integer, LCGState) lcg s0 = (output, s1) where s1 =...
955 просмотров
schedule 18.12.2022

Основной вопрос о состоянии Scalaz
Как использовать State для имитации поведения List.zipWithIndex ? То, что я придумал до сих пор (что не работает): def numberSA[A](list : List[A]) : State[Int, List[(A, Int)]] = list match { case x :: xs => (init[Int] <* modify((_:Int)...
1485 просмотров

Haskell: итерация в состоянии, как заставить себя вести себя так, как я хочу?
Это моя первая публикация на SO, и я относительно новичок в Haskell, поэтому, пожалуйста, извините за любые ошибки или если мой код неидиоматичен! Рассмотрим следующие два интуитивных описания: a, f(a), f(f(a))... A. список, содержащий: a,...
1389 просмотров
schedule 19.06.2023

Как разделить состояние между двумя монадами?
Я застрял со следующей проблемой монады: Допустим, у меня есть стандартная монада State с состоянием S = (LS, RS). У меня также есть другая монада: newtype StateP a = StateP {runP :: S -> (a, RS)} Я хочу выполнить некоторые вычисления,...
228 просмотров
schedule 30.04.2023

Возврат значения с помощью монады состояния
Я новичок в Monads и Haskell в целом и пытаюсь понять, как вернуть значение при их использовании. Мой код выглядит примерно так: foo :: A -> B foo a = do b <- fooC a (C 0) -- want to return just (B "b") fooC :: A -> C ->...
804 просмотров
schedule 21.01.2023