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

Можно ли сделать Free Monad на Clojure?
Конрад проделал выдающуюся работу с Monads в Clojure. Хинсен , Джим Дьюи и Леонардо Борхес . У меня вопрос - можно ли сделать Free Monad на Clojure? Это пример на Haskell из статьи о Scala: data Free f r = Free (f (Free f r)) | Pure...
1386 просмотров
schedule 17.11.2021

Можно ли расширить бесплатные интерпретаторы монад?
Учитывая бесплатную монаду DSL, такую ​​как: data FooF x = Foo String x | Bar Int x deriving (Functor) type Foo = Free FooF И случайный интерпретатор для Foo : printFoo :: Foo -> IO () printFoo (Free (Foo s n)) =...
1695 просмотров
schedule 04.09.2021

Доказательство законов функторов для свободных монад; я правильно делаю?
Мне сложно понять, как доказать законы Functor и Monad для бесплатных монад. Во-первых, позвольте мне привести определения, которые я использую: data Free f a = Pure a | Free (f (Free f a)) instance Functor f => Functor (Free f) where...
618 просмотров
schedule 16.10.2021

В чем преимущество свободных монад перед простыми старыми чертами с монадами ввода-вывода?
Итак, я углублялся в концепции FP, и мне понравилась концепция чистоты, заключенная в монаде IO. Затем я прочитал это и подумал, что монада ввода-вывода действительно не так разделена (?), Как используя бесплатные монады. Итак, я начал делать...
459 просмотров

Получение MonadFree от нового типа с помощью стека трансформаторов
Я пытаюсь вывести MonadFree из newtype и просто не могу это понять. Мой текущий код: newtype ApplicationStack s r p m = ApplicationStack { runApplication :: StateT s (ReaderT r p) m } deriving (Functor, Applicative, Monad, MonadState s,...
89 просмотров
schedule 29.09.2021

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

Моделирование наблюдения для вероятностного языка программирования со свободными монадами
Я пытаюсь реализовать DST для вероятностного программирования, вдохновленный сообщением в блоге Джареда Тобина . Бесплатная монада для DST, включая дистрибутив Бернулли и бета-версию, может выглядеть так: data ModelF r = BernoulliF Double...
467 просмотров
schedule 18.05.2022

Использование Либо в свободной монаде
Я пытаюсь использовать любой из них в результате алгебры с использованием бесплатной монады, например следующий код ///// Command sealed trait Command[A] type Result[A] = Either[Exception, A] object Command { case class Tell(line:...
21 просмотров
schedule 17.06.2022

IO - это бесплатная монада?
В сообщениях блога и примерах Марка Симанна я впервые увидел свободных монад как способ структурировать границу между чистым кодом и кодом ввода-вывода. Я понимаю, что свободная монада позволяет вам построить программу (абстрактное синтаксическое...
365 просмотров
schedule 27.06.2022

Как получить «негибкую семантику монадных преобразователей» с помощью расширяемых эффектов?
Рассмотрим следующий пример. newtype TooBig = TooBig Int deriving Show choose :: MonadPlus m => [a] -> m a choose = msum . map return ex1 :: (MonadPlus m, MonadError TooBig m) => m Int ex1 = do x <- choose [5,7,1] if x > 5...
166 просмотров

Свободная монада монады
Является ли x >>= f эквивалентом retract (liftF x >>= liftF . f) ? То есть, будет ли экземпляр монады бесплатной сборки монады из Functor, который также является монадой, иметь экземпляр монады, эквивалентный исходной монаде?
702 просмотров
schedule 04.09.2022

Разница между свободными монадами и точками фиксации функторов?
Я читал http://www.haskellforall.com/2013/06/from-zero-to-cooperative-threads-in-33.html , где абстрактное синтаксическое дерево получается как свободная монада функтора, представляющего набор инструкций. Я заметил, что бесплатная монада Free мало...
3305 просмотров

Каждая свободная монада над ??? функтор дает комонаду?
В этом ответе на вопрос "Может ли монада быть комонадой?" Мы видим, что Каждый Cofree Comonad через Альтернативный функтор дает монаду. Что было бы двойственным к этому? Существует ли класс функторов, автоматически превращающих...
253 просмотров

зачем нам нужна свободная монада для интерпретации Action to Future
Я написал один пример использования scalaz.Free, чтобы сопоставить действие с будущим, это выглядит довольно круто. Тем не менее, я пытаюсь понять преимущества этого. Я надеюсь, что смогу получить ответ здесь. Вот мой фрагмент кода Во-первых, я...
288 просмотров
schedule 11.01.2023

Как использовать бесплатную монаду с Future[M[_]]
Я реализовал простой язык для процесса ETL, используя бесплатную монаду. При использовании List в качестве ввода и вывода как для выборки, так и для хранения данных все работает нормально. Однако я использую асинхронные библиотеки и работаю с...
819 просмотров

Какие мотивирующие примеры для Cofree CoMonad в Haskell?
Я играл с Cofree и не могу понять. Например, я хочу поиграть с Cofree [] Num в ghci и не могу найти интересных примеров. Например, если я создам тип Cofree: let a = 1 :< [2, 3] Я ожидал бы extract a == 1 , но вместо этого я...
4716 просмотров
schedule 16.03.2023

Использование произвольных деревьев с Free Monads в Scala+Cats
Я создаю библиотеку для грамматик, которая будет иметь 2 разные интерпретации: 1) разбор строк на основе грамматики 2) создание строк на языке, определенном грамматикой. Библиотека использует кошек для создания AST грамматики в виде свободной...
364 просмотров

Почему этот код с бесплатным интерпретатором монад компилируется?
Я пытаюсь понять свободные монады. Итак, с помощью руководств я написал игрушечный пример для игры, и теперь я не понимаю, почему он компилируется. Вот: import cats.free.Free import cats.instances.all._ import cats.~> trait Operation[+A]...
177 просмотров
schedule 25.04.2023

Бесплатно ~› Trampoline: рекурсивная программа вылетает с ошибкой OutOfMemoryError
Предположим, что я пытаюсь реализовать очень простой предметно-ориентированный язык только с одной операцией: printLine(line) Затем я хочу написать программу, которая принимает целое число n в качестве входных данных, печатает что-то, если...
196 просмотров

Интерпретаторы для Free Monad
Я делаю упражнение, чтобы попытаться реализовать базовый калькулятор с Free Monad. Насколько я понимаю намерение Free Monad и то, чего я хотел достичь, это: написать свою программу (математическое выражение) после запуска ее с разными...
153 просмотров