是否可以使用esqueleto创建一个返回常量值的查询?例如SELECT 1
。
答案 0 :(得分:1)
试试这个:
import Database.Esqueleto
-- | We have to specialize `val` or else the type inferencer
-- will complain about the `Esqueleto` instance.
val_ :: Int -> SqlExpr (Value Int)
val_ = val
query :: SqlPersistT IO [Value Int]
query = select $ return (val_ 1)
@ chi的评论很接近,但1
需要被提升为SqlExpr
。 val
一般编写并依赖于Esqueleto
类实例。通常,类型推断器会在您使用from
并拉入SQL表时立即抓取它,但由于这些都不可用,我们必须手动专门化。
总体而言,一个很好的例子说明类型类可以如何模糊意义并迫使人们转向文档或论坛。