问题标签 [tagless-final]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
scala - 将 F[A] 转换为 Future[A]
我有一个存储库:
我有一个使用 Cats IO 的数据库实现,所以我有一个CustomerRepoPostgres[IO]
.
现在,我想使用一个不能处理任意持有者类型的库(它只支持Future
)。所以我需要一个CustomerRepoPostgres[Future]
.
我想写一些可以将我转换为的桥接CustomerRepoPostgres[IO]
代码CustomerRepoPostgres[Future]
:
我不喜欢这种方法对存储库中使用的每种类型都需要隐式转换器。有一个更好的方法吗?
types - 在 idris 的最终无标签中出现故障编码系统 f omega
所以我正在尝试以最终的无标签风格做 system f omega。我已经成功地对系统 f 进行了编码,如下代码(还给出了一些示例)(另外,请忽略推理不起作用并且示例非常丑陋的事实,我将在单独的问题中询问它们):
但我在做 F omega 时遇到了麻烦。
所以我的问题是,如何解决它?似乎我可以在 lambda 类型上显式添加 beta 相等性(如 Idris Eq),并让用户使用它来重写 beta 缩减。
但是,我希望它自动完成。我的选择是什么?
scala - 上下文感知类型类
我正在开发一些适用于硬盘上文件的应用程序。我有以下“实体”:
我还有以下类型类:
所有这些都由以下特征操作:
而且看起来还不错。但我决定重构它并应用无标签最终。所以模型现在看起来像:
让我困惑的问题是 typeclass trait Checksum[F[_], T]
。现在取决于上下文F
。那真的是一个类型类吗?还是我看错了方向?
scala - 高级类型和无标签决赛
我正在尝试编写一个可以采用任何无标签最终特征并返回的函数F[String]
。
我不明白为什么上面没有编译。
以下作品。
但是我怎样才能摆脱这种特质呢?
monads - Scala Cats:用于任务 [Validated[String,?] 的 Monad 实例的尾递归 tailRecM 方法
在cats
中,当Monad
使用 trait 创建a 时,理想情况下应提供Monad
方法的尾递归实现以确保堆栈安全。tailRecM
我正在使用无标记的最终方法,并希望对我的程序产生Task[Validated[String, ?]]
(Monix ) 的效果。Task
我不知道如何编写尾递归实现。我的非尾递归解决方案是:
scala - Scala 中的无标记最后一个示例需要多余的第二个 interp arg
根据这篇用 Haskell 编写的博客文章,我正在尝试在 Scala 中实现一个无标签的最终 DSL 和解释器。
我可以运行一个示例 - 请参见下面的代码,但我不太明白我为什么需要testVal(Interp)(Interp)
. 如果我只提供一个Interp
参数,那么我会得到以下编译错误:
有没有一种简单的方法来消除其中一个Interp
论点?
scala - 带有无标签最终的类型类依赖
在观看了 John De Goes 的“FP to the Max”(https://www.youtube.com/watch?v=sxudIMiOo68)之后,我想知道以无标记最终模式编写 FP 程序的方法。
假设我有一些用于建模副作用的类型类(以他的Console
例子):
你会怎么依赖Console
?
隐式
就像他的视频中展示的那样:
优点:函数签名很干净,您可以从 typeclass 自动派生中受益
明确地
通过将实例直接传递给函数:
优点:这使您可以根据需要明确连接依赖项,并且感觉不那么“神奇”
不确定编写此功能的最佳/最惯用的方法是什么,不胜感激。
谢谢!
scala - 无标签最终效果传播
tagless-final 模式让我们可以编写纯函数式程序,这些程序明确说明了它们需要的效果。
但是,扩展这种模式可能会变得具有挑战性。我将尝试用一个例子来证明这一点。想象一个简单的程序,它从数据库中读取记录并将它们打印到控制台。我们将需要一些自定义类型类Database
和Console
,除了Monad
来自猫/scalaz 来组合它们:
当我想为内层的函数添加新的效果时,问题就开始了。例如,read
如果没有找到记录,我希望我的函数记录一条消息
但是现在,我必须将Logger
约束添加到read
链上的所有调用者。在这个人为的例子中,它只是main
,但想象一下这是一个复杂的现实世界应用程序的几层。
我们可以从两个方面来看这个问题:
- 我们可以说明确我们的效果是一件好事,而且我们确切地知道每一层需要哪些效果
- 我们也可以说这泄露了实现细节——
main
不关心日志,它只需要read
. 此外,在实际应用程序中,您会在顶层看到非常长的效果链。感觉就像是代码气味,但我无法确定我可以采取什么其他方法。
很想听听您对此的见解。
谢谢。
scala - 无法制作简单的无标签最终示例
我读过关于无标签决赛的文章,我认为这很棒。我想建立我自己的这种模式的小例子并遇到了问题。
这是我的代码:
not found: value Calculator
由于错误,此代码不起作用。我怎样才能正确地做到这一点?