これは、これに続く質問です。Syntax confusion (do block)ですので、詳しい情報と元のコードはこちらをご覧ください。私が親切に助けられた後、私はもう一つの問題を発見しました。それは、それが意味することは何でも "オーバーロードされた文字列"によって引き起こされると思われます。シンプルmysqlのオーバーロードされた文字列
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 < ?)))"
あなたのタイプのエラーので、複数行のクエリの問題とは関係がありませんので、別の質問でそれについて質問してください。 – hammar
ドキュメントをもう一度見てください。 'query_'はパラメータを取らないクエリです。それを 'query'で置き換えてください。それはうまくいくはずです(私は思っています)。 – hammar
問題はありません:)私は編集をロールバックする自由を取った。他のエラーに関する質問がまだ残っている場合は、新しい質問を投稿してください。そんなに簡単ではない。 – hammar