Agn*_*yay 5 haskell arrows opaleye
我正在读这篇文章,其中说:
好吧,重点是箭头符号禁止符号允许的一些计算.特别是所有"箭头动作"必须"静态地"知道".
它解释说:
静态知道"意味着如果我们有几行箭头符号
> -- y <- action1 -< x
> -- z <- action2 -< y然后表达式action2不能依赖于x或箭头符号行左侧的任何约束.
据我了解,这种限制使箭头值得.
现在,我正在努力学习Opaleye,我注意到它使用箭头将各种东西组合在一起.
为什么Opaleye使用箭头?为什么箭头适合这项工作?使这个限制有用的数据库/查询是什么?
参数化数据库查询看起来像箭头:
组合(.)(或(<<<))看起来像 SQL 子查询。 (&&&)看起来像 SQL 连接。
我相信“静态已知”限制与您可以合理地转换为 SQL 的内容相关。一旦你允许fmap//使用任意 Haskell 函数,这是不可行的(至少没有 SQL 语言扩展和 GHC 编译器插件)lmap。rmap不过我还没有弄清楚细节。
我不知道我们可以通过 Opaleye 工具手动管理多少翻译。