首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Esqueleto外接

Esqueleto外接
EN

Stack Overflow用户
提问于 2014-05-31 07:20:33
回答 1查看 368关注 0票数 3

我对外部如何与esqueleto一起工作感到有点困惑。

我创建了以下查询(简化):

代码语言:javascript
复制
select $ from $ \(rep `LeftOuterJoin` event) -> do
          on (rep ^. RepAtomId  ==. event   ^. EventAtomId )
          where_ (rep ^. RepAtomId  ==. val aid)
          return $ (rep, event ^. EventSeconds)

据我所知,在SQL方面,这个查询将搜索可能有关联事件的代表。如果它们没有关联事件,则事件字段(如EventSeconds)将为"null“。在Haskell方面,这些应该被翻译成几秒钟(嗯,ints,但是你明白了)。

那么,当我运行这个查询并且没有什么可以与我的rep关系相邻的时候,会发生什么呢?如何解构元组以坚持默认设置?

目前,我有一些与以下内容相关的内容:

代码语言:javascript
复制
case listToMaybe lrep of
  Just ( entityVal -> rep
       , unValue -> seconds
       ) -> do stuff

(请注意,这里打开了ViewPatterns )。这种类型的检查。但如果我用(?)和(fromMaybe 3600)。unValue在模式分析中的应用。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-31 07:55:55

我能够通过在正确的地方添加一个“公正”来解决这个问题:

代码语言:javascript
复制
select $ from $ \(rep `LeftOuterJoin` event) -> do
         on (just (rep ^. RepAtomId)  ==. event  ?. EventAtomId )
         where_ (rep ^. RepAtomId  ==. val aid)
         return $ (rep, event ?. EventSeconds)

case listToMaybe lrep of
  Just ( entityVal -> rep
       , (fromMaybe 3600) . unValue -> seconds
       ) -> do stuff

这个想法是(事件)确实有一个类似于可能的类型(我不知道它的类型是什么,但我知道它有一个嵌入的类型)。所以当我和代表比较的时候,我比较的是a (可能是a)和a。‘只是’将a包装成a(可能a),而不必解构中间类型。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23967523

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档