Следният do блок извежда грешката "грешка при анализиране на входа `conn'", когато се опитвам да го компилирам. Опитах много различни конфигурации на оператора if-then-else без резултат. Логиката на базата данни работеше преди да добавя условното, така че няма проблем с това. Имам ли твърде много редове в else? Има ли някакъв начин да се поправи това, без напълно да се преработи логиката?
main = do
contents <- BL.getContents
let myData = decode contents :: Maybe Data
if maybe True (\x -> result x /= "success") myData
then error ("JSON download failed")
else let myTrades = process myData
conn <- connectSqlite3 "trades.db"
insert <- DB.prepare conn "INSERT INTO trades VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?);"
DB.executeMany insert $ map (\xs -> map DB.toSql xs) myTrades
DB.commit conn
DB.disconnect conn