1

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

4

1 回答 1

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 表,类型推断器就会抓住它,但由于这里没有可用的,我们必须手动专门化。

总体而言,这是一个很好的例子,说明类型类如何混淆含义并迫使人们转向文档或论坛。

于 2016-07-19T18:26:47.590 回答