Haskell 什么';我的逻辑有什么问题?

Haskell 什么';我的逻辑有什么问题?,haskell,persistent,yesod,Haskell,Persistent,Yesod,这是一个很难复制的问题,所以我写的是一个相当疯狂的猜测,但这里是: 让我们从最终结果开始反向工作 > id | firmware | version | startDate | estimatedEnd | status >----+---------------------------+------------+------------+--------------+----------- >1 | BCC Admin

这是一个很难复制的问题,所以我写的是一个相当疯狂的猜测,但这里是:

让我们从最终结果开始反向工作

> id |         firmware          |  version   | startDate  | estimatedEnd |  status

>----+---------------------------+------------+------------+--------------+-----------
  >1 | BCC Admin                 | 0.0.00.001 | 2011-11-19 | 2011-11-21   | Scheduled

>ghcifoo> main
 "date available!!!! "
这一行清楚地评估了
然后
条件。Ergo
(L.null match==True)
True
。我的第一个问题是为什么
==True
子句
L.null匹配
本身应该也能正常工作

现在我们知道
L.null match
必须是
True
,但上面的行似乎表明
match
包含一条记录。因此,在这一点上,我怀疑
L.null
可能不是您认为的函数,或者match不包含输出使我们相信它所包含的内容。我的下一个调试建议是根据一些其他属性测试
match
(可能有长度函数吗?),看看问题是否出在
L.null
match
上。另一个想法是将print语句移动到
if
之后。这不应该改变任何事情(当然不是在Haskell中!),但是来自数据库查询的响应有时会很奇怪。(例如,不是一个列表,而是一个结果流,在使用时会被消耗。)


祝你好运

澄清一下:如果没有匹配的日期,是否应该说日期是可用的?是的,这就是我想做的。selectList中的条件是合取的(&&&)还是析取的(| |)?selectList中的条件是合取的。因此,您正在检查具有相同开始日期和(估计)结束日期的内容,但是这些工作通常需要几天时间,所以不匹配。嘿,谢谢你提供的故障排除技巧。我不知道如何弄清这件事的真相。
> id |         firmware          |  version   | startDate  | estimatedEnd |  status

>----+---------------------------+------------+------------+--------------+-----------
  >1 | BCC Admin                 | 0.0.00.001 | 2011-11-19 | 2011-11-21   | Scheduled

>ghcifoo> main
 "date available!!!! "
if (L.null match == True) then (liftIO $ print "date available!!!! ") else (liftIO $       print "date not available")