Описание тега kleisli
Клейсли - это оператор для составления монадических функций. если у вас есть одна монадическая функция, которая принимает As и выводит Bs, и другая монадическая функция, которая принимает B и выводит Cs, и вы хотите связать их вместе, вы используете композицию Kleisli.
1
ответ
Почему Клейсли не является экземпляром Monoid?
Если вы хотите добавить две функции типа (a -> m b), чтобы вы получили только одну функцию того же типа, добавляя оба результата, вы можете использовать Kleisli для этого: instance (Monad m, Monoid b) => Monoid (Kleisli m a b) where mempty = Klei…
04 окт '15 в 16:39
1
ответ
Как реализовать кеширование с помощью Kleisli
Я следовал принципу дизайна из книги " Функциональное и реактивное моделирование". Таким образом, все методы обслуживания возвращаются Kleisli, Вопрос в том, как добавить к этим сервисам обновляемый кеш. Вот моя текущая реализация, есть ли лучший сп…
06 апр '16 в 20:36
1
ответ
Могу ли я использовать монадные трансформаторы, чтобы упростить эту композицию?
Предположим, у меня есть type VS[A] = Validation[String, A] val v: VS[Option[A]] val f: A => VS[B] Я хочу получить результат типа VS[Option[B]] но если v это Success(None)результат также должен быть Success(None), Вот пример: scala> val v: VS[…
01 июн '12 в 16:08
4
ответа
Как использовать стрелки Клейсли с монадой?
В Хаскеле Control.Arrow В документации говорится об отношении стрел Клейсли к монадам, но для меня не очевидно, как это использовать. У меня есть функция, которая, я думаю, соответствует стрелкам, за исключением того, что она включает монаду ввода-в…
23 ноя '13 в 17:30
1
ответ
Как совместить вариант с Клейсли
Учитывая метод def f[A, B, C](a: A) : Kleisli[Future, B, C] = ??? Мне нужен комбинатор, работающий с Option[A] Моя первая попытка была: def g[A, B, C](a: Option[A], default: => C) = a match { case Some(a) => save(a) case None => Kleisli[Fut…
08 апр '16 в 12:36
1
ответ
Are there interesting examples of composing Kleisli endomorphisms?
Это продолжение моего предыдущего вопроса Мы можем определить функцию, которая находит узел XML по пути (List[String], XmlNode) => Option[XmlNode] как композиция функций (String, XmlNode) => Option[XmlNode] которые получают дочерний узел по им…
08 окт '15 в 09:39
1
ответ
Как исправить это упражнение с помощью Endomorphic wrapper?
Это продолжение моего предыдущего вопроса. Предположим, мне нужно найти узел XML по пути. Я могу написать функцию, чтобы получить дочерний узел по имени import scala.xml.{Node => XmlNode} def child(name: String): XmlNode = Option[XmlNode] = _.chi…
14 июл '15 в 08:16
2
ответа
Составление функций, которые возвращают опцию
Предположим, у меня есть несколько функций типа Int => Option[Int]: def foo(n: Int): Int => Option[Int] = {x => if (x == n) none else x.some} val f0 = foo(0) val f1 = foo(1) Я могу составить их с >=> следующее: val composed: Int =>…
13 июл '15 в 09:25
1
ответ
Композиция функций, стрелка Клейсли и монадические законы
Прочитав эту статью, я понимаю, что >=> (Стрелка Клейсли) - это просто функция более высокого порядка для составления функций, которые возвращают "монадические значения". Например: val f: A => M [B] =... Val g: B => M[C] = ... val h: A => M[C]…
01 фев '14 в 15:21
1
ответ
Поднимите стрелу Клейсли в IO?
Если у меня есть следующие две стрелки Клейсли: stdoutProcessA :: Kleisli Maybe String (IO String) writeToFileA :: Kleisli Maybe (FilePath, String) (IO ()) Я хотел бы иметь возможность написать что-то вроде: compile = proc src -> do output <- …
22 ноя '12 в 01:09
1
ответ
Scalaz Kleisli преимущества использования
В скалазе Kleisli[M[_], A, B] это обертка A => M[B], что позволяет составление таких функций. Например, если M[_] монада я могу сочинять Kleisli[M, A, B] а также Kleisli[M, B, C] с >=> получить Kleisli[M, A, C], В двух словах, Kleisli обесп…
14 мар '15 в 12:54
1
ответ
Как я могу сделать экземпляр Kleisli EitherT в Scala Cats?
Я потратил некоторое время на взлом этого и до сих пор не могу заставить систему типов согласиться со мной, что эта абстракция действительно ObjectMapper => A => Either[Throwable, B] Мой текущий тип выглядит import cats._ import cats.data.{Rea…
16 июн '17 в 18:36
1
ответ
Использование скаляза kleisli без явного переноса функции перед
Допустим, у меня есть две функции val f: A => M[B] а также val g: B => M[C] где М монадическая Таким образом, я хочу объединить их, используя kleisli. Что я сейчас делаю, так это: kleisliU(f) andThenK gНо я не нашел способа выполнить эту комби…
05 сен '16 в 09:37
1
ответ
Как совместить Клейсли [M, A, C] и Клейсли [M, B, C]
Я следую за дизайном превосходной книги Reactive Domain Modeling, и мне нужно смешать Kleisli с разными типами: object CombinedKleisli { type User = String type Project = String trait UserRepo trait ProjectRepo trait UserService { def findByUserId :…
17 мар '16 в 14:33
1
ответ
Клейсли Стрелка с писателем в Скале. Почему он не компилируется?
Это продолжение моего предыдущего вопроса. Похоже, я до сих пор не понял. Сейчас я пытаюсь составить функции, которые возвращают монаду Writer. scala> val f = {x: Int => Writer ("выполняется" + x + ";", x + 1)} f: Int => scalaz.WriterT[scalaz.Id.Id,…
10 фев '14 в 17:20
3
ответа
Список Клейсли Клейсли списка
Мне было интересно, если есть способ повернуть List[Kleisli[Option, Int, Int]] в Kleisli[Option, Int, List[Int]], В частности, у меня есть список kleisli, сформированный следующим образом: def k(a: String) = Kleisli[Option, Int, Int](m => Some(a.…
14 окт '17 в 00:00
1
ответ
Клейсли - функтор, аппликатив или монада?
Этот вопрос вдохновлен отзывами на мой предыдущий Michael Scalaz предоставляет класс-оболочку Kleisli[M[_], A, B] для функции A => M[B], Kleisli[M[_], A, B] является полугруппой, если M[_] это полугруппа. Предположим, что M[_] это функтор Это пра…
10 мар '15 в 20:48
1
ответ
Проверка XML с помощью Writer и Kleisli в Scala
Это продолжение моего предыдущего вопроса Предположим, мне нужно проверить XML следующим образом: <a><a1>xxx<a1/><a2>yyy</a2><a3>zzz</a3></a> Мне нужно убедиться, что корневой элемент имеет метку a а т…
30 янв '16 в 19:23
1
ответ
Не удается найти экземпляры Bind для Free Monads над Coyoneda при составлении функций с помощью стрелок Клейсли в scalaz
Заранее спасибо за вашу помощь У меня есть 2 функции, которые я пытаюсь составить с помощью стрелок Клейсли. Функции принимают String и выдают FreeC. Стрелки kleisli создаются без проблем, но компилятор жалуется, что не может найти. Я вырежу часть к…
09 сен '15 в 15:42
2
ответа
Как использовать Scala Cats' Kleisli с Either
Я пытаюсь использовать Kleisli для создания функций, возвращающих монаду. Это работает для варианта: import cats.data.Kleisli import cats.implicits._ object KleisliOptionEx extends App { case class Failure(msg: String) sealed trait Context case clas…
20 апр '18 в 10:45