Это дополнительный вопрос к этому: Синтаксическая путаница (блок do) Так что, пожалуйста, смотрите его для получения дополнительной информации и оригинального кода. После того, как мне любезно помогли, я обнаружил еще одну проблему, которая, как я подозреваю, вызвана "перегруженными строками", что бы это ни значило.
Похоже, что библиотека simple-mysql что-то делает со строковым литералом, поэтому синтаксический анализатор понимает, что он имеет тип Query
. Это также то, что демонстрируют их примеры. Однако во всех примерах используются нереально короткие запросы, где вам не нужно переносить код. Мне нужно обернуть его, и конкатенация строк приводит к тому, что результирующая строка не распознается как тип Query
. Почему кто-то решил, что такой подход будет полезен, за пределами моего понимания, я просто хочу закончить с этим заданием ...
Так что, пожалуйста, если вам случится знать, пожалуйста, посоветуйте, что делать / как я могу преобразовать строку в запрос.
Проблемный код и ошибка показаны ниже:
-- Couldn't match expected type `Query' against inferred type `[a]'
-- In the expression:
-- "select count('*')"
-- ++ "from table"
-- ++ "where ((acquisition_date <= ?)"
-- ++ "and ((sale_date is null) or " ++ "(sale_date < ?)))"
-- In the definition of `countGoodsQuery':
-- countGoodsQuery = "select count('*')"
-- ++ "from table"
-- ++ "where ((acquisition_date <= ?)"
-- ++ "and ((sale_date is null) or " ++ "(sale_date < ?)))"
countGoodsQuery :: Query
countGoodsQuery = "select count('*')" ++
"from table" ++
"where ((acquisition_date <= ?)" ++
"and ((sale_date is null) or " ++
"(sale_date < ?)))"