我正在玩 scala 中的 tagless final。我使用 pureconfig 加载配置,然后使用配置值设置服务器端口和主机。 片段 def create[F[_]: Async] = for { config <- ConfigSource.default.at ...
我正在玩 scala 中的 tagless final。我使用 pureconfig 加载配置,然后使用配置值设置服务器端口和主机。 片段 def create[F[_]: Async] = for { config <- ConfigSource.default.at ...
我有一个看起来像这样的服务: 无标签的最终特征: 在我的实现中,我有以下内容: 这很好,但我仍想延迟它并仅在实例化我的 ProvisioningService 的新版本时传递效果。 例如,我想要这样的东西: 在运行时,我执行以下操作: 所以基本上我在编译时没有提供具体的实现,但是我创建了我的 Pro ...
我正在尝试将 Playframework 与 Cats Effect 3 Tagless Final 风格相结合。 我被困在向未来的转变上。 Play 的 Action 需要我想要达到的值或 Future 来进行异步处理。 在猫效应 2 中,可以通过_.toIO.unsafeToFuture ...
我有这个绑定来在我的应用程序中配置 Logger[IO] (带有这一行的模块在 guice.conf 文件中): class CatsEffectModule extends AbstractModule with ScalaModule { override def configure(): ...
我在 Scala 中有以下代数(我使用的是无标签最终模式):trait ShoppingCarts[F[_]] { def create(id: String): F[Unit] def find(id: String): F[Option[ShoppingCart]] def add( ...
我正在尝试使用 Kleisli 来 model 依赖项。 例如,假设我有以下业务逻辑类型: 现在我有以下解码和数据库访问的实现: 现在,当我想将这两个对象与业务逻辑一起使用时,我遇到了类型冲突:Kleisli[ErrorOr, DbSession, A] 与 Klesili[ErrorOr, Any ...
您能否在 Scala 中给我一个无标记的最终版本,该版本的日志记录实现很容易在单元测试中进行测试,但在生产中使用 slf4j 或类似框架运行? ...
有没有办法将 IOEither 和 TaskEither 表示为一个也包括tryCatch的 Monad? 我目前将在 HTTP 上使用 API,因此使用 TaskEither 是有意义的,但预计此代码将“离家更近”迁移,此时将其IOEither是有意义的。 所以我想写一个无标签风格的消费者界面i ...
我有一个看起来像这样的 API:object Comics { ... def impl[F[_]: Applicative]: Comics[F] = new Comics[F] { def getAuthor(slug: Authors.Slug): F[Option[Aut ...
我有一些使用无标记最终方法的代码,发现 Intellij IDEA 无法识别来自隐式 class 的方法。 我这里有一些类型类( Functor 、 Apply 、 Applicative等)和一个implicit class FunctorOps以及Functor的一些辅助方法。 此代码编译但 ...
假设我在使用Cats-effect标记最终方法的项目中有以下方法签名: 我正在尝试使用纯 FP schedule方法调用上的操作。 我试过这样: 但它不起作用,因为效果println("tick")在Timer初始化阶段执行。 我怎样才能让它正常工作? 我还可以创建某种递归构造,以便每 10 秒重 ...
我有一个代数解释器,我想为它编写一个单元测试。 解释器如下: 代数如下: 实施如下: 我使用测试框架https://scalameta.org/munit/ 。 如何为我的上述代数编写单元测试? ...
我已经写了两个无标签代数,我想为其中一个写定律。 代数如下: 口译员如下: 在函数式编程中,有 Monoid、Monads 等规律。 我的问题是: 我的代数是否需要法律或编写单元测试就足够了? 法律和单元测试有什么区别? 我应该如何为DbConnector代数编写定律 ...
我正在尝试在 Scala 中使用第一次无标记最终模式并且有点挣扎。 我有以下代数定义: 和解释器的实现: 我想要做的是,将Environment组合成DbSystemEnvironment 。 这里的问题是,我无法从env.get(url)中获取值,因为我对DbSystemEnvironment中的 ...
我有这个多态代码(请参阅此问题),其中包含用于模型和客户端的通用 monad: import Control.Monad.Writer class Monad m => Model m where act :: Client c => String -> c a -> ...
我有这个带有 State monads 的代码: import Control.Monad.State data ModelData = ModelData String data ClientData = ClientData String act :: String -> State ...
我正在与 Slick 和 Cats 合作。 database.run返回一个Future ,但我需要我的类的方法( F[_]: Async上的泛型)来返回一个 monad F 。 我可以让它像这样工作 但这肯定不是应该做的方式,因为它阻塞了线程。 有没有合适的方法来做到这一点? ...
我经常做这样的事情: 简而言之,这意味着如果Either是left则使用raiseError ,如果是right则返回值。 有没有更方便的方法来“解开” Either ? ...
我创建了一个简单的trait和他的实现: 在这里,我想使用Either或EitherT来“捕获”错误,但我也想使用IO或Future作为主要单子。 在我的主要 class 中,我创建了对此实现的调用: 但是在创建pointer的行中,IntelliJ 向我显示错误: Type mismatch - ...
背景 Haskell 和 Scala 社区最近非常迷恋他们所谓的无标签最终编程“模式”。 这些被称为对初始自由代数的对偶,所以我想知道 Tagless Final 的最终结果是什么。 在 ncatlab 上只能找到关于最终代数的讨论,而不是最终代数。 在 CS-Theory Stack Excha ...