Это трудная проблема для копирования, поэтому то, что я пишу, довольно дикое предположение, но здесь идет речь:
Позволяет работать в обратном направлении от конечного результата
if (L.null match == True) then (liftIO $ print "date available!!!! ") else (liftIO $ print "date not available")
Эта строка четко оценивает условие then
. Ergo (L.null match == True)
было True
. Мой первый вопрос: почему оговорка == True
? L.null match
должно работать так же хорошо само по себе.
Теперь мы знаем, что L.null match
должно быть True
, но строка выше, кажется, указывает, что match
содержит одну запись. Поэтому в этот момент я бы заподозрил, что L.null
, возможно, не та функция, о которой вы думаете, или совпадение не содержит того, что вывод заставляет нас поверить в это. Моим следующим предложением отладки было бы проверить match
на соответствие некоторым другим свойствам (возможно, есть функция длины?) И посмотреть, связана ли проблема с L.null
или match
. Еще одна мысль - переместить оператор печати после if
. Это ничего не должно изменить (конечно, не в Haskell!), Но ответ на запрос к базе данных иногда странный . (например, не список, а поток результатов, которые потребляются по мере их использования.)
Удачи!