Вопросы по теме '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 просмотров
schedule
04.09.2021
Зачем нужна плоская карта в монадах состояний?
Простите за очень наивный вопрос.
Я понимаю, что сущность монад состояний - это карта типа 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 просмотров
schedule
16.03.2022
Что такое символ ‹- при использовании 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 просмотров
schedule
18.04.2022
Можно ли эмулировать поведение StateT без использования пользовательских типов?
Если у нас есть следующие две функции, сложение и вычитание, их просто связать в цепочку, чтобы выполнить серию вычислений на входе:
add :: Int -> State Int ()
add n = state $ \x -> ((),x+n)
subtract :: Int -> State Int ()
subtract n =...
80 просмотров
schedule
17.05.2022
Когда и почему вы используете 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 просмотров
schedule
21.07.2022
Интерфейс продолжения монады
Монада состояния "интерфейс"
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 просмотров
schedule
13.10.2022
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