我对外部如何与esqueleto一起工作感到有点困惑。
我创建了以下查询(简化):
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关系相邻的时候,会发生什么呢?如何解构元组以坚持默认设置?
目前,我有一些与以下内容相关的内容:
case listToMaybe lrep of
Just ( entityVal -> rep
, unValue -> seconds
) -> do stuff(请注意,这里打开了ViewPatterns )。这种类型的检查。但如果我用(?)和(fromMaybe 3600)。unValue在模式分析中的应用。
发布于 2014-05-31 07:55:55
我能够通过在正确的地方添加一个“公正”来解决这个问题:
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),而不必解构中间类型。
https://stackoverflow.com/questions/23967523
复制相似问题