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

Свободные монады дают общий способ превращения функторов в монады. Они полезны для многих древовидных структур и доменных языков.
6 отв.

Что такое бесплатные монады?

Я видел, что термин Free Monad всплывает и затем в течение некоторого времени, но все просто используют/обсуждают их, не объясняя, что они собой представляют. Итак: что такое свободные монады? (Я бы сказал, что я знаком с монадами и основами Хаскел...
13 нояб. '12 в 0:53
6 отв.

Монастырь Пауза

Монады могут делать много удивительных, сумасшедших вещей. Они могут создавать переменные, которые содержат суперпозицию значений. Они могут позволить вам получить доступ к данным из будущего, прежде чем вы его вычислите. Они могут позволить вам писа...
20 апр. '12 в 0:20
2 отв.

Существует ли свободная монада?

Из теории категорий известно, что не все эндофункторы в Set допускают свободную монаду. Канонический контрпример является функтором функций. Но Haskell может превратить любой функтор в свободную монаду. data Free f a = Pure a | Free (f (Free f a)...
02 янв. '16 в 14:19
1 отв.

Когда я хочу использовать шаблон Free Monad + Interpreter?

Я работаю над проектом, который, среди прочего, включает в себя уровень доступа к базе данных. Довольно нормально, правда. В предыдущем проекте сотрудник предложил мне использовать концепцию Free Monads для уровня базы данных, и поэтому я это сделал....
20 мая '14 в 20:34
1 отв.

Каковы некоторые мотивирующие примеры для Cofree CoMonad в Haskell?

Я играю с Cofree и не могу его перехватить. Например, я хочу играть с Cofree [] Num в ghci и не могу получить интересные примеры. Например, если я создаю тип Cofree: let a = 1 :< [2, 3] Я ожидал бы extract a == 1, но вместо этого получаю э...
07 авг. '16 в 20:59
3 отв.

Являются ли свободные монады аппликативными?

Я думаю, что я придумала интересный "быстрый" экземпляр Applicative Free. data FreeMonad f a = Free (f (FreeMonad f a)) | Return a instance Functor f => Functor (FreeMonad f) where fmap f (Return x) = Return (f x) fma...
13 марта '19 в 21:04
4 отв.

Какие монады могут быть выражены как свободные над некоторым функтором?

Документация для Free гласит: Ряд общих монад возникает как свободные монады, Учитывая data Empty a, Free Empty изоморфен монаде Identity. Свободный Maybe может использоваться для моделирования монархии пристрастности, где каждый уровень предс...
01 февр. '13 в 10:50
1 отв.

Monad Stack Penetration Классы с Free/Operational Monad Transformers?

Может ли быть mtl-подобный механизм для монадных трансформаторов, созданных FreeT/ProgramT? Мое понимание истории таково. Когда-то был изобретен монадный трансформатор. Затем люди начали складывать моноданные трансформаторы друг на друга, а затем на...
30 июля '13 в 4:24
4 отв.

Как можно продлить монаду с помощью свободной монады?

Предположительно, все монады могут быть выражены с помощью Free (если это не так, что такое встречный пример и почему)? Как продолжение монады или его соответствующий трансформатор выражать с помощью Free или FreeT - что было бы соответствующим функ...
13 сент. '14 в 23:15
3 отв.

Возможно ли реализовать MonadFix для `Free`?

http://hackage.haskell.org/package/free в Control.Monad.Free.Free позволяет получить доступ к "свободной монаде" для любого заданного Functor. Однако он не имеет экземпляра MonadFix. Это потому, что такой экземпляр не может быть написан, или он прос...
01 февр. '13 в 1:07
1 отв.

Укладка монадических эффектов в Free Monad в Scala

Я изучаю свободную монаду в Scala, и я собрал простой пример алгебры, который я могу поднять в Free monad, используя кошек. Здесь моя алгебра sealed trait ConsultationOp[A] object consultation { case class Create(c: Consultation) extends Consult...
24 сент. '15 в 18:46
1 отв.

когда использовать CPS против четкости и отражения без угрызений совести в Haskell

Есть ли какие-либо эмпирические правила о том, когда при создании монад в Haskell можно использовать стиль продолжения-прохождение против против без сожаления. В качестве примера я собираюсь использовать простую coroutine monad. Если вы никог...
26 июля '17 в 21:36
5 отв.

Можно ли расширять бесплатные переводчики монады?

Учитывая бесплатную 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)) = print s >...
13 дек. '13 в 13:48
2 отв.

Что случилось с Control.MonadPlus.Free?

бесплатный MonadPlus, определенный как data Free f a = Pure a | Free (f (Free f a)) | Plus [Free f a] был удален в свободном 4.6 со следующим замечанием (changelog): Удалено Control.MonadPlus.Free. Вместо этого используйте FreeT f [], и резуль...
24 авг. '15 в 17:55
2 отв.

Визуализация свободной монады

Я думаю, что у меня есть общее представление о том, что такое свободная монада, но я хотел бы иметь лучший способ визуализировать ее. Имеет смысл, что свободные магмы являются просто бинарными деревьями, потому что это "общее", как вы можете быть бе...
02 дек. '15 в 23:28