返回常量值的Esqueleto查询

时间:2016-07-09 10:55:51

标签: haskell esqueleto

是否可以使用esqueleto创建一个返回常量值的查询?例如SELECT 1

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需要被提升为SqlExprval一般编写并依赖于Esqueleto类实例。通常,类型推断器会在您使用from并拉入SQL表时立即抓取它,但由于这些都不可用,我们必须手动专门化。

总体而言,一个很好的例子说明类型类可以如何模糊意义并迫使人们转向文档或论坛。