Вопросы по теме '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 просмотров
schedule
05.10.2021
Получение 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 просмотров
schedule
18.04.2022
Моделирование наблюдения для вероятностного языка программирования со свободными монадами
Я пытаюсь реализовать 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 просмотров
schedule
18.08.2022
Свободная монада монады
Является ли 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 просмотров
schedule
24.03.2023
Каждая свободная монада над ??? функтор дает комонаду?
В этом ответе на вопрос "Может ли монада быть комонадой?" Мы видим, что
Каждый Cofree Comonad через Альтернативный функтор дает монаду.
Что было бы двойственным к этому? Существует ли класс функторов, автоматически превращающих...
253 просмотров
schedule
29.07.2023
зачем нам нужна свободная монада для интерпретации Action to Future
Я написал один пример использования scalaz.Free, чтобы сопоставить действие с будущим, это выглядит довольно круто. Тем не менее, я пытаюсь понять преимущества этого. Я надеюсь, что смогу получить ответ здесь. Вот мой фрагмент кода
Во-первых, я...
288 просмотров
schedule
11.01.2023
Как использовать бесплатную монаду с Future[M[_]]
Я реализовал простой язык для процесса ETL, используя бесплатную монаду. При использовании List в качестве ввода и вывода как для выборки, так и для хранения данных все работает нормально. Однако я использую асинхронные библиотеки и работаю с...
819 просмотров
schedule
21.01.2023
Какие мотивирующие примеры для 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 просмотров
schedule
30.03.2023
Почему этот код с бесплатным интерпретатором монад компилируется?
Я пытаюсь понять свободные монады. Итак, с помощью руководств я написал игрушечный пример для игры, и теперь я не понимаю, почему он компилируется. Вот:
import cats.free.Free
import cats.instances.all._
import cats.~>
trait Operation[+A]...
177 просмотров
schedule
25.04.2023
Бесплатно ~› Trampoline: рекурсивная программа вылетает с ошибкой OutOfMemoryError
Предположим, что я пытаюсь реализовать очень простой предметно-ориентированный язык только с одной операцией:
printLine(line)
Затем я хочу написать программу, которая принимает целое число n в качестве входных данных, печатает что-то, если...
196 просмотров
schedule
11.01.2023
Интерпретаторы для Free Monad
Я делаю упражнение, чтобы попытаться реализовать базовый калькулятор с Free Monad. Насколько я понимаю намерение Free Monad и то, чего я хотел достичь, это: написать свою программу (математическое выражение) после запуска ее с разными...
153 просмотров
schedule
02.01.2023