【发布时间】:2020-07-07 23:42:57
【问题描述】:
我刚开始使用 Haskell,最近使用 Beam。我以某种方式浏览了文档,但无法很好地掌握它。
如何进行简单的查询?
我可以在文档中看到
filter_ 之类的函数将 lambda 函数作为输入参数。
来自文档
filter_ (\s -> addressCity (customerAddress s) ==. val_ (Just "Berlin")) $
all_ (customer chinookDb)
s 是什么?梁库为我们提供的 lambda 函数提供了哪些值(和类型)? addressCity (customerAddress s) 是一栏吗?我知道customer 是表,chinookDb 是数据库。
我对求和查询更感兴趣。相当于
SELECT SUM(colname) FROM TABLE;
但是,文档仅给出了一个稍微复杂的查询作为示例。
aggregate_ (\(genre, track) ->
( group_ genre
, as_ @Int $ countOver_ distinctInGroup_ (trackUnitPrice track)
, fromMaybe_ 0 (sumOver_ allInGroupExplicitly_ (fromMaybe_ 0 (trackMilliseconds track))) `div_` 1000)) $ do
g <- all_ (genre chinookDb)
t <- genreTracks g
pure (g, t)
我可以说sum_ 与count_ 相似,但又必须向它提供什么 lambda 函数?
【问题讨论】:
标签: haskell haskell-beam