Описание тега bifunctor

Бифунктор - это конструктор типа с двумя параметрами ковариантного типа, которые могут быть "сопоставлены". Примеры включают кортежи и типы Either (также известные как результат, дизъюнкция).
0 ответов

Неявный параметр для BiFunctor

Я планирую использовать Bifunctor IO с каналом на ошибки. Поэтому я попытался предоставить неявный экземпляр для MonadError но он не компилируется. import cats.MonadError sealed trait AppErrors //... object App{ def runApp[F[_, _]: MonadError[F[AppE…
3 ответа

Можно ли передать ссылки BiFunction на методы, ожидающие функционального интерфейса?

Я всегда использовал только Java 6 и сейчас пытаюсь узнать, что нового в Java 8. Я читал эту статью здесь: http://www.drdobbs.com/jvm/lambda-expressions-in-java-8/240166764?pgno=2 И это говорит: Java API определяет несколько универсальных функционал…
05 фев '15 в 04:41
2 ответа

Есть ли какая-то связь между противоположностью Hom Functor и Scala's Function1?

Функтор Хом Hom(-,-) является контравариантным в первом аргументе и ковариантным во втором. Может ли этот факт как-то предложить другое объяснение, почему у Scala Function1[-T1, +R] есть такое же свойство? Я видел это утверждение, сделанное, наприм…
29 май '16 в 04:51
4 ответа

Обход с биаппликацией

Я размышлял об операциях с молнией и понял, что одним из способов их выражения является переход в Biapplicative функтор. import Data.Biapplicative class Traversable2 t where traverse2 :: Biapplicative p => (a -> p b c) -> t a -> p (t b) …
12 янв '18 в 06:49
1 ответ

Как получить несколько экземпляров Functor в Haskell?

Я определяю AST для выражения, и у него есть три типа аргументов, например: {-# language DeriveFunctor, DeriveFoldable, DeriveTraversable #-} -- | a general represetation of an expression -- , with ref info contained in r and two attributes containe…
14 янв '19 в 05:04
1 ответ

Какие бифункторы, используемые для этого, не могут быть достигнуты составлением функторов?

Я относительно новичок в Haskell и испытываю трудности с пониманием полезности бифункторов. Я думаю, что понимаю их теоретически: скажем, например, если бы я хотел отобразить тип, который абстрагирует несколько конкретных типов, таких как "Или" или …
10 дек '16 в 09:03
1 ответ

Объявление экземпляра с переменными типа

Написание чего-то вроде этого работает нормально: data Either a b = Left a | Right b instance Functor (Either a) where fmap _ (Left x) = Left x fmap f (Right x) = Right (f x) Теперь допустим, что я хочу инвертировать это, Left применяет f к значению…
29 янв '17 в 03:21
1 ответ

Параметризованный псевдоним типа для бифункторов

У меня есть Seq[R] и я хочу разделить это на Tuple2[Seq[E], Seq[S]]в то время как я кодировал это, я думал о том, что я мог бы использовать обычай Bifunctor для кортежа seqs и в качестве упражнения попытался закодировать это: import scalaz.Bifunctor…
14 июн '16 в 12:52
1 ответ

На вывод Fmap для ADT

Предположим, что два новых типа определены следующим образом type MyProductType a = (FType1 a, FType2 a) type MyCoproductType a = Either (FType1 a) (FType2 a) ... и это FType1 а также Ftype2 оба случая Functor, Если бы сейчас объявить MyProductType …
1 ответ

Функция слияния в ConcurrentHashMap

Есть вопрос о функции слияния с ConcurrentHashMaps. Новичок в функциональном программировании, поэтому не уверен, правильно ли я его использую. https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ConcurrentHashMap.html map.merge(consumer,…
12 июл '18 в 14:37
1 ответ

Какими будут методы бикомонады?

Размышляя о том, какой полезный стандартный класс предложить этому class Coordinate c where createCoordinate :: x -> y -> c x y getFirst :: c x y -> x getSecond :: c x y -> y addCoordinates :: (Num x, Num y) => c x y -> c x y ->…
27 ноя '16 в 23:26
1 ответ

Поднятие изо в первый аргумент бифунктора

Control.Lens.Iso содержит много замечательных функций для подъема Isoв различные аргументы типа полезных абстракций. Например: mapping для произвольной Functors contramapping за Contravariant функторы dimapping, lmapping а также rmapping за Profunct…
08 дек '15 в 11:03
0 ответов

Что такое линзовый эквивалент битраверса?

Есть ли способ создать объектив, который мог бы сделать нечто подобное с этой функцией? λ> :t \f -> bitraverse f f \f -> bitraverse f f :: (Applicative f, Bitraversable t) => (b -> f d) -> t b b -> f (t d d) Конкретный тип, кото…
14 апр '16 в 11:44
2 ответа

Есть ли такая вещь, как бидистрибутив? Какая функция мне нужна здесь?

У меня есть код (на самом деле в C#, но этот вопрос не имеет ничего общего с C#, поэтому я буду говорить обо всех моих типах на языке Haskell), где я работаю внутри Either a b, После, я bind функция с сигнатурой, которая в Haskell-говорят b -> (c…
0 ответов

Современная реализация haskell бифункторов общего назначения

Я ищу способ получить fmapFirst а также fmapSecond для бифункторов автоматически. Я бы предпочел способ сделать это, используя новый Generic введите класс или используя Data.Dataи без шаблона Haskell. (Обратите внимание, что я уже знаю, что https://…
1 ответ

Независимо от того, решил ли Хаскелл сделать вывод, что Бифунктор для моего типа данных?

По какой-то причине GHC, похоже, решает, что мой тип данных (с двумя параметрами типа) создает экземпляр Bifunctor без всякой причины. Самое смешное, что это используется только для того, чтобы сказать мне, что для этого типа данных есть перекрывающ…
14 май '19 в 01:22
1 ответ

Почему `first` из Data.Bifunctor не преобразует это значение

В следующих: import Data.Bifunctor import qualified Data.ByteString.Lazy.UTF8 as BLU safeReadFile :: FilePath -> ExceptT Text IO Text safeReadFile p = (lift $ doesFileExist p) >>= bool (throwError "File does not exist") (lift $ pack <$&g…
02 авг '19 в 14:28
2 ответа

Методы Bifunctor vs. Arrow

Существует небольшое совпадение между Bifunctor а также Arrow методы: class Bifunctor p where first :: (a -> a') -> p a b -> p a' b second :: (b -> b') -> p a b -> p a b' bimap :: (a -> a') -> (b -> b') -> p a b -> p…
12 июл '19 в 20:28
3 ответа

Несоответствие подписи типа в определении экземпляра Bifunctor

Я узнаю о Haskell, работая над книгой " Программирование на Haskell от первых принципов", Аллен и Моронуки. В упражнениях к главе о преобразователях монад, функторах и аппликативной композиции читателю предлагается написать экземпляр бифунктора для …
22 окт '19 в 00:22
1 ответ

Что такое канал ошибок ZIO и как понять, что в него вставлять?

ZIO(https://zio.dev/) - это фреймворк Scala, в основе которого лежитZIO[R, E, A] datastructure и ее сайт предоставляют следующую информацию по трем параметрам: ЗИО В ZIO[R, E, A] Тип данных имеет три параметра типа: R- Тип среды. Эффект требует окру…