Следующий блок 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