2011-12-13 5 views
0

내 디버거의 dropWhile 중간을 가리키는, haskell에서 이상한 오류가 발생했습니다. 예 : '' '구문 분석 오류' 모듈을로드하지 못했습니다.Haskell 컴파일 오류

코드 :

identifyFilter :: String -> (Filter, String) 
identifyFilter ('"':xs) | not null rest = (filter, rest1) 
         | otherwise  = error "Invalid input" 
        where (field, rest) = break (=='"') xs 
          (cond, rest1) = break (=='"') (tail (dropWhile (/= '"') (tail rest))) 
          filter = (FieldName field , identifyParsers cond)      
identifyFilter ('@':xs) | not null rest = (filter, rest1) 
         | otherwise = error "Invalid input" 
        where (index, rest)(reads xs) :: [(Int,String)] 
          (cond, rest1) = break (=='"') (tail (dropWhile (/= '"') (tail rest))) 
          filter = (FieldIndex index , identifyParsers cond) 
identifyFilter (x:xs) = error "Invalid input" 

이 나는 ​​단어의 중간에 가리키는 경우에 특히 오류의 원인이 될 수있는 무슨 가능한 단서가 없다. 필요한 경우 자세히 질문하십시오. 모든 제안,

+0

GHCi는 나를 위해 그 행을 허용합니다 (''어디로' '대신에''대체 됨). 문제는 다른 곳에서 발생할 가능성이 큽니다. – ibid

+1

컴파일 할 때 정확한 오류를 생성하는 짧지 만 완전한 코드 샘플이 좋습니다. – sepp2k

+0

이전/다음 줄 중 어느 것이'dropWhile'의 중간/위/아래에 있습니까? 그렇다면 무엇입니까? – dave4420

답변

3
where (index, rest)(reads xs) :: [(Int,String)] 

가 완전히 고장 어쩌면 (index, rest) = head (reads xs :: [(Int, String)]) 도움이 될? 어쨌든, 그 라인이나 다음에 구문 분석 오류가 발생합니다. 다른 주에

, 조건

| not null rest = ... 

필요가

| not (null rest) = ... 

괄호하지만 유형의 오류가 아닌 구문 분석 오류를 제공해야합니다.

+0

감사합니다! 도움이되었지만, 어떤 이유로 든 존재하지 않는 라인에서 들여 쓰기에 대해 불평하는 또 다른 오류가 있습니다 ... – DustBunny

+0

아마도 탭과 공백이 혼합 되었습니까? –

+0

나는 모든 가능한 탭 조합을 시도했다, 나는 매번 아주 이상한 오류를 지킨다. 하나는 심지어 1 : 1의 위치와 같은 것이었다. 잘못된 입력 ';' – DustBunny