Публикации по теме 'monad-transformers'
Монада в функциональном программировании
Монада
Это действительно отличная концепция, которая развилась за последние 25 лет и позволяет нам не обращать внимания на проблемы внутреннего состояния при каскадном преобразовании данных. Чтобы лучше понять это, давайте начнем с предположения, что у нас есть две функции, подобные этой:
def addOne(x: Int): Int = x + 1
def square(x: Int): Int = x * x
и мы хотим выполнить следующие преобразования:
addOne(square(addOne(square(x))))
Легко ли это оценить? Да, конечно! Но что, если..
Вопросы по теме 'monad-transformers'
mtl, трансформаторы, monads-fd, monadLib и парадокс выбора
В Hackage есть несколько пакетов для преобразователей монад:
mtl : библиотека преобразователя монад
преобразователи : преобразователи конкретных функторов и монад
monads-fd : классы монад, использующие функциональные зависимости...
7157 просмотров
schedule
09.07.2023
Монады в контексте преобразователя монад
У меня проблемы с цеплянием за монады и преобразователи монад. У меня есть следующий надуманный пример (не компилируемый):
import Control.Monad
import Control.Monad.Error
import Control.Monad.Reader
data State = State Int Int Int
type Foo =...
701 просмотров
schedule
24.03.2022
Смешивание монад в Haskell
Я пытаюсь работать с Ubigraph в Haskell, но я считаю, что моя проблема более общая. Я пытаюсь скомпилировать:
import Graphics.Ubigraph
import Control.Monad
import System.Posix.Unistd
main = do
h <- initHubigraph...
1409 просмотров
schedule
14.03.2023
Haskell: не могу понять, как использовать стек преобразования монад
у меня есть тип
type T s r a = StateT [s] (ListT (Reader r)) a
Я хотел бы создать монадическое значение, которое дает каждое из текущих состояний
states :: T a r a
Но сегодня я чувствую себя глупо и не могу понять, как преобразовать...
242 просмотров
schedule
28.07.2023
Абстрагирование монадной композиции как преобразователя
Извините, если вопрос кажется несколько тривиальным ... это не для меня. Я с радостью составил следующую монаду:
type SB i a = ReaderT ( AlgRO i ) (State ( AlgState i ) ) a
что, в общем, хорошо управляемая монада. ReaderT - это...
549 просмотров
schedule
31.03.2022
Как красиво оценить вложенные монады StateT и ErrorT?
У меня есть два объявления типа для управляющих структур на разных уровнях программы. Нижний — Agent , StateT с IO возможностями. Второй — еще один StateT с возможностями Agent , а третий ( Plan ) — ErrorT .
type Agent = StateT...
445 просмотров
schedule
11.10.2022
Расширение монады ServerPartT с помощью средства чтения
Я пишу сервер Happstack, и у меня есть база данных MongoDB для подключения. Для этого я сделал функцию для создания пула соединений
type MongoPool = Pool IOError Pipe
withMongo :: (MongoPool -> IO a) -> IO ()
withMongo f = do
pool...
161 просмотров
schedule
14.04.2023
Поднимите значение ошибки до монадного преобразователя ErrorT
Я думаю, что мне не хватает базового понимания преобразователей монад, потому что я обнаружил, что пишу этот код:
import Control.Monad.Identity
import Control.Monad.Error
liftError :: Either String Int -> ErrorT String Identity Int
liftError x...
404 просмотров
schedule
13.10.2022
Требуется ли доступ к внутренней структуре монады для преобразователя монады?
Нужно ли иметь доступ к внутренней структуре монады, чтобы написать преобразователь монады?
Например: Я хотел бы иметь GetT - преобразователь для монады Get из Data.Binary.Get, но этот модуль не раскрывает внутренности монады Get . Означает...
456 просмотров
schedule
02.03.2022
Передача дополнительного состояния через синтаксический анализатор в Scala
Я дам вам tl; dr вперед
Я пытаюсь использовать преобразователь монад состояния в Scalaz 7 для передачи дополнительного состояния через синтаксический анализатор и У меня проблемы с выполнением чего-либо полезного, не написав много t m a ->...
1008 просмотров
schedule
03.04.2023
Примеры аппликативных преобразователей Haskell
В вики на www.haskell.org рассказывается следующее об аппликативных преобразователях:
Так где же прикладные трансформаторы? Ответ заключается в том, что нам не нужны специальные преобразователи для аппликативных функторов, поскольку их можно...
1966 просмотров
schedule
27.12.2023
Как объединить несколько нестандартных трансформаторов с ограничениями класса вместе в один стек?
Это будет длинно, потому что я не уверен, что начал это в правильном настроении, поэтому я собираюсь изложить свои мысли как можно яснее на каждом этапе пути. У меня есть два фрагмента кода, которые настолько минимальны, насколько я могу их сделать,...
282 просмотров
schedule
08.07.2022
Как поднять функцию преобразованной монаде в haskell?
Я знаю конструктор данных и функцию run ***,
Я могу поднять любую функцию до конкретного экземпляра MonadTrans.
Нравится,
import Control.Monad.Trans
import Control.Monad.Trans.Maybe
import Control.Monad
liftF :: (Monad m) => (a -> b)...
1143 просмотров
schedule
04.05.2022
Как избежать ступенчатости с Monad Transformers в scala?
У меня есть следующий код, который использует монаду Reader для настройки, а также имеет дело с IO[Option[String]] , и в итоге я получил код, который выполняет ступеньки в моей функции encode .
Как я могу сформулировать монадный преобразователь...
1287 просмотров
schedule
05.06.2022
Трансформаторы Monad и функция лифта
Почему нет необходимости использовать лифт для выполнения функции во внутренней среде преобразователя монад, кроме ввода-вывода? Я имею в виду, что если у меня StateT поверх WriterT и WriterT над ReaderT, почему я могу это сделать?
tell $ {- any...
295 просмотров
schedule
21.04.2022
Как вернуть кортеж внутри EitherT
Я использую Scalaz 7 EitherT для создания for-computing, которые смешивают State и \ /. Все идет нормально; Я получаю то, что в основном:
State[MyStateType, MyLeftType \/ MyRightType]
и это позволяет мне создавать для понимания, у которых...
730 просмотров
schedule
08.02.2022
Как мне объединить монаду St и монаду State (или эквивалент)?
Я создаю код, чтобы понять, на самом деле решатель пасьянса. У меня есть простая реализация грубой силы, которая использует монаду состояния, на самом деле просто чтобы доказать, что я могу ее использовать (она только ведет счет каждого оцененного...
464 просмотров
schedule
24.05.2022
Экземпляр MonadTransControl для FreeT
Можно ли реализовать MonadTransControl для FreeT ? Я начал со следующего, но застрял:
instance (Functor f) => MonadTransControl (FreeT f) where
newtype StT (FreeT f) r = FreeTStT r
liftWith unlift = lift $ unlift $ error "Stuck...
263 просмотров
schedule
07.04.2022
Как создать MonadRandom (StateT PureMT m0)? (Хаскелл)
Я пытаюсь использовать MonadRandom из https://hackage.haskell.org/package/random-fu-0.2.6.0/docs/Data-Random.html#g:6
В частности, у меня есть функция с сигнатурой типа:
randomN :: MonadRandom m => m Int
и я хочу запустить его,...
119 просмотров
schedule
14.05.2023
Аппликативные классы трансформаторов
Где классы трансформатора Applicative ? Я хотел использовать классы преобразователей для стека прикладных преобразователей в предыдущем ответе , но, похоже, их не существует.
Пакет transformers и многие другие полны преобразователей, которые...
414 просмотров
schedule
07.10.2022