Описание тега comonad
Инверсия монады. Монада - это способ структурировать вычисления в терминах значений и последовательностей вычислений с использованием этих значений. Монады позволяют программисту строить вычисления, используя последовательные строительные блоки, которые сами могут быть последовательностями вычислений.
1
ответ
Тип Переменная Расположение в Трансформаторах
Рассмотрим State тип - или хотя бы упрощенная версия: newtype State s a = State { runState :: s -> (a, s) } Теперь, скажем, мы хотим получить StateT монадный трансформатор. transformers определяет это следующим образом: newtype StateT s m a = Sta…
31 мар '18 в 11:17
3
ответа
Является ли концепция "чередованного гомоморфизма" реальной вещью?
Мне нужен следующий класс функций: class InterleavedHomomorphic x where interleaveHomomorphism :: (forall a . f a -> g a) -> x f -> x g Очевидно, что имя, которое я придумал для него, ни в коем случае не является официальным термином для че…
06 июн '14 в 21:17
2
ответа
Разумные реализации Comonad
Мы можем описать монаду как вычислительный контекст, и реализация монады точно сохраняет значение этого контекста. Например, Option - контекст означает, что значение может существовать. Учитывая тип данных Option, единственная реализация, которая им…
04 мар '16 в 09:30
2
ответа
Пример Comonad в Scala
Что такое Comonad, если это возможно, опишите в синтаксисе Scala. Я нашел реализацию библиотеки скалаза, но не ясно, где это может быть полезно.
19 июн '12 в 20:58
1
ответ
Comonad непустого списка
Я медитировал над комонадами, и у меня есть интуиция, что непустой список ("полный список")- это комонада. Я построил правдоподобную реализацию в Идрисе и работал над доказательством законов комонада, но не смог доказать рекурсивную ветвь одного из …
03 окт '17 в 22:00
2
ответа
Почему IO - это монада, а не комонада?
Выход является эффективным вычислением. Таким образом, имеет смысл заключить его в монаду. Но вход является контекстно-зависимым вычислением. Таким образом, было бы больше смысла заключать его в комонаду. Однако в Haskell оба входа и выхода инкапсул…
05 авг '14 в 20:36
1
ответ
Есть ли общий способ разложить свободную комонаду по монаде сбоя в "поток значений и окончательную ошибку"?
Cofree comonad полезен для итерации частичных функций способом, который полиморфен для типа ошибки. это coiter походит forM -переключение в монаде ошибок, но она собирает полученные значения в чистом / ленивом виде, и вы видите только ошибку в конце…
22 дек '16 в 12:03
1
ответ
Содержательное резюме для comonad. (Где монада является "типом для нечистых вычислений")
С точки зрения содержательных резюме - это описание Монад, кажется, выигрывает - описывая их как "тип для нечистых вычислений". Что такое эквивалентное содержательное (одно предложение) описание comonad?
11 июл '13 в 10:19
1
ответ
Tree Functor и Foldable, но с узлами. Есть ли какие-либо обобщения по этому поводу?
data Tree t = Empty | Node t (Tree t) (Tree t) Мы можем создать экземпляр Functor и использовать fmap :: (t -> a) -> Tree t -> Tree a Но что, если вместо (t -> a) я хочу (Tree t -> a), чтобы я мог иметь доступ ко всему (Node t), а не только…
30 авг '15 в 10:10
3
ответа
Comonads на молнии, как правило
Для любого типа контейнера мы можем сформировать (элементно-ориентированную) молнию и знать, что эта структура является Comonad. Это было недавно подробно изучено в другом вопросе переполнения стека для следующего типа: data Bin a = Branch (Bin a) a…
28 авг '14 в 16:51
1
ответ
Писатель Монада и Непоследовательность
Я использую Writer Монада для отслеживания флага ошибки ("столкновения") на произвольных значениях (таких как Int). Как только флаг установлен, он становится "липким" и присоединяется ко всем значениям, полученным в результате любой операции с отмеч…
07 мар '17 в 23:32
2
ответа
Не удается найти экземпляр функтора для Tuple2K
У меня есть игрушка DSL case class Logging[A](msg: String, action: A) case class Persist[A](msg: String, action: A) type Effect[A] = EitherK[Logging, Persist, A] что я хочу в паре с таким же игрушечным переводчиком case class CoLogging[A](run: Strin…
17 май '18 в 07:05
2
ответа
Сочетание государственной монады с косатской комонадой
Как совместить государственную монаду S -> (A, S) с косатой (E->A, E)? Я пробовал обе очевидные комбинации S -> ((E->A, E), S) а также (E->S->(A, S), E) но тогда в любом случае я не знаю, как определить операции (return, extract...…
26 июн '14 в 20:46
2
ответа
Что такое класс типов Comonad в Haskell?
Что такое класс типов Comonad в Haskell? Как и в Comonad из Control.Comonad в пакете comonad (объяснения любых других пакетов, которые предоставляют класс типов Comonad, также приветствуются). Я смутно слышал о Comonad, но все, что я действительно з…
08 дек '11 в 09:08
2
ответа
Что такое магазин Comonad?
Имея некоторое представление о том, что такое класс типов Comonad в Haskell, я слышал о Comonad Store. Но, глядя на Control.Comonad.Store.Lazy, я не совсем понимаю. Что это значит? Для чего это? Я слышал, что Store = CoState, двойник Государственной…
07 янв '12 в 00:29
0
ответов
Как изменить фокус в Haskell Store Comonad в двухмерном списке
Я борюсь со следующей проблемой. Я пытаюсь сделать Game of Life, используя магазинные комонады в Haskell. У меня есть следующий соответствующий код: type Cel = ((Float, Float), Bool) type Field2D = [[Cel]] Затем я создал начальное поле: initialField…
18 апр '18 в 17:51
1
ответ
Какие преимущества я получу от создания экземпляра Comonad
В моем приложении я пытаюсь реализовать систему анимации. В этой системе анимации представлены в виде циклического списка кадров: data CyclicList a = CL a [a] Мы можем (неэффективно) продвигать анимацию следующим образом: advance :: CyclicList a -&g…
04 сен '14 в 23:34
1
ответ
Краткая сводка по кодатам (где комонада является "типом для входной примеси")
С точки зрения содержательных резюме - это описание Comonads, кажется, выигрывает - описывая их как "тип для входной примеси". Что такое эквивалентное содержательное (одно предложение) описание для кодаты?
11 июл '13 в 22:48
3
ответа
Comonadical найти все способы сосредоточиться на сетке
{-# LANGUAGE DeriveFoldable #-} {-# LANGUAGE DeriveFunctor #-} {-# LANGUAGE DeriveTraversable #-} import Control.Comonad import Data.Functor.Reverse import Data.List (unfoldr) Сначала немного контекста (ха-ха). У меня есть молния над непустыми списк…
06 мар '16 в 13:29
1
ответ
Понимание Comonad's <$$>
Учитывая следующее из фп-курса: class Functor f where (<$>) :: (a -> b) -> f a -> f b class Functor f => Extend f where (<<=) :: (f a -> b) -> f a -> f b Я определил <$$> как так: (<$$>) :: Comonad f =>…
23 янв '19 в 03:17