Описание тега tagless-final
Этот подход является альтернативой традиционному кодированию объектного языка как (обобщенного) алгебраического типа данных.
1
ответ
Последний пример без тегов в Scala требует лишнего второго аргумента
Я играю с реализацией финального DSL и интерпретатора без тегов в Scala, основываясь на этом посте в блоге, написанном на Haskell. Я могу запустить пример - см. Код ниже, но я не совсем понимаю, зачем мне это нужно testVal(Interp)(Interp), Если я по…
13 янв '19 в 10:32
1
ответ
Контекстные классы типов
Я работаю над некоторым приложением, которое работает с файлами на жестком диске. У меня есть следующая "сущность": final case class File(path: String) final case class FileChecksum(f: File, checksum: Long) У меня также есть следующий класс типов: t…
14 июл '18 в 18:01
1
ответ
Зависимость класса типов от tagless-final
После просмотра "FP to the Max" Джона Де Гоэса ( https://www.youtube.com/watch?v=sxudIMiOo68) я задаюсь вопросом о подходах к написанию программ FP в шаблоне tagless-final. Скажем, у меня есть некоторый класс типов для моделирования побочных эффекто…
27 янв '19 в 07:12
1
ответ
Финальный эффект распространения без тегов
Шаблон tagless-final позволяет нам писать чистые функциональные программы, которые явно описывают эффекты, которые им требуются. Однако масштабирование этого шаблона может стать сложной задачей. Я постараюсь продемонстрировать это на примере. Предст…
20 фев '19 в 07:32
1
ответ
Преобразование F[A] в будущее [A]
У меня есть хранилище: trait CustomerRepo[F[_]] { def get(id: Identifiable[Customer]): F[Option[CustomerWithId]] def get(): F[List[CustomerWithId]] } У меня есть реализация для моей базы данных, которая использует Cats IO, поэтому у меня есть Custom…
02 июн '18 в 15:46
0
ответов
Система кодирования неисправностей омега в финале tagless в idris
Поэтому я пытаюсь сделать систему омега в окончательном стиле без тегов. Я успешно закодировал систему f, как показано в следующем коде (также приведен некоторый пример)(также, пожалуйста, не обращайте внимания на тот факт, что логический вывод не р…
05 июл '18 в 01:22
1
ответ
Scala Cats: хвостовой рекурсивный метод tailRecM для экземпляра задачи Monad [Validated[String,?]
В cats, когда Monad создается с использованием Monad черта, в идеале хвостовая рекурсивная реализация для метода tailRecM должны быть обеспечены для обеспечения безопасности стека. Я использую конечный подход без тегов и хочу иметь эффект Task[Valid…
04 окт '18 в 00:00
1
ответ
Высший добрый тип и финал Tagless
Я пытаюсь написать функцию, которая может взять любую конечную черту без тега и вернуть F[String], def apply[Api[F[_]]](implementation: Api[F[_]]): F[String] = ??? Я не понимаю, почему выше не компилируется. Следующие работы. trait Api[F[_]] def app…
26 сен '18 в 08:50
1
ответ
Валидация и фиксация ошибок с использованием алгебры
Я наткнулся на эту статью в среде: https://medium.com/@odomontois/tagless-unions-in-scala-2-12-55ab0100c2ff. Есть фрагмент кода, который мне трудно понять. Полный исходный код статьи можно найти здесь: https://github.com/Odomontois/zio-tagless-err. …
21 май '19 в 18:57
1
ответ
Реализация конечного кодирования без тегов в F# с SRTP
Я хотел бы преобразовать мою версию F# OOP Tagless Final в типичный подход FP, и я думаю использовать статически разрешенные параметры типа классов классов из ОО. Что я сделал open System open FSharpPlus type UserName = string type DataResult<'t&…
02 апр '19 в 21:20
1
ответ
Не могу сделать простой пример без тега
Я читал о финале без тегов и думаю, что это здорово. Я хотел построить свой собственный маленький пример этого шаблона и получил проблему. Это мой код: trait Calculator[F[_]] { def sum(a: Int, b: Int): F[Either[Throwable, Int]] def minus(a: Int, b: …
07 апр '19 в 09:51
1
ответ
Не удалось найти неявный в финале Scala Tagless, неявный, модульный тест
Получение: Error:(20, 5) could not find implicit value for parameter console: example.Console[F] new NameThing().program Error:(20, 5) not enough arguments for constructor NameThing: (implicit evidence$1: cats.Monad[cats.package.Id], implicit consol…
09 июн '19 в 11:53
0
ответов
Окончательный DSL без тегов с проблемами RValue LValue
Типизированные финальные переводчики без тегов являются интересной альтернативой подходу свободной монады. Но даже с довольно простым ToyLang Например, в последнем стиле без тегов всплывающие переменные. ToyLang это EDSL, который должен читать что-…
27 авг '19 в 21:11
2
ответа
Проблема с Cats FlatMap в моем классе Tagless Final
У меня есть следующий класс: class MyBot[F[_] : FlatMap] В этом классе у меня есть функция: private def handleCallback(): F[Boolean] В моем понимании это должно работать: handleCallback().flatMap(..) Но это бросает: cannot resolve symbol flatMap Что…
25 авг '19 в 11:11
1
ответ
Можно ли использовать финал без тегов (объектные алгебры) на коалгебрах?
Задний план Сообщество Haskell и Scala в последнее время очень увлечено тем, что они называют окончательным "шаблоном" программирования без тегов. На них ссылаются как на двойственные к исходным свободным алгебрам, поэтому мне было интересно, чем бы…
20 сен '19 в 12:29
1
ответ
Элегантный способ изменить либо на ошибку с окончанием без тегов
Я часто делаю такие вещи, как: import cats.effect.Sync import cats.implicits._ case class User(name: String) case object Error extends Exception def validate[F[_]: Sync](name: String): F[Either[Error, User]] = Sync[F].pure(User(name).asRight) def do…
09 ноя '19 в 12:37
2
ответа
Как настроить таймер кошек на абстрактный эффект
Скажем, у меня есть следующая подпись метода в проекте, использующем Cats-effect и окончательный подход без тегов: def schedule[F[_]: Applicative : Async: Timer] Я пытаюсь запланировать операцию на schedule вызов метода с использованием чистого FP. …
04 июл '20 в 09:10
1
ответ
Scala, коты - как создать окончательную реализацию без тегов с IO (или другой монадой) и Either?
Я создал простой trait и его реализация: trait UserRepositoryAlg[F[_]] { def find(nick: String): F[User] def update(user: User): F[User] } class UserRepositoryInterpreter extends UserRepositoryAlg[Either[Error, *]] { override def find(nick: String):…
08 ноя '19 в 14:27
1
ответ
Преобразование Future [A] в F [A] с помощью Async[F]
Я работаю с Slick and Cats. database.run возвращает Future, но мне нужен метод моего класса (общий для F[_]: Async) вернуть монаду F. Я могу заставить это работать вот так val future = database.run(insertion) val result = Await.result(future, Durati…
04 мар '20 в 16:22
1
ответ
Два полиморфных класса в одной функции
У меня есть этот код с монадами состояния: import Control.Monad.State data ModelData = ModelData String data ClientData = ClientData String act :: String -> State ClientData a -> State ModelData a act _ action = do let (result, _) = runState a…
22 мар '20 в 16:39