다음 do 블록은 컴파일 할 때 "conn '에 대한 구문 분석 오류를 발생시킵니다. if-then-else 문을 여러 가지 구성으로 시도해 보았습니다. 조건부를 추가하기 전에 데이터베이스 로직이 작동 했으므로 문제는 없습니다. 다른 사람에게 너무 많은 전화 번호가 있습니까? 논리를 완전히 개조하지 않고이 문제를 해결할 수있는 방법이 있습니까?하스켈 if-then-else 조건부에서 "parse error on input"
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
이 두 가지 문제가되는이 끝났다. 첫 번째 질문은 아래 답변에 설명되어 있습니다. 나는 "else"다음에 "do"가 필요했다. 또한 마지막 네 줄은 "let"의 "l"과 같은 열에 들여 쓰기해야했습니다. – Mike