저는 Haskell의 온라인 버전에서 Haskell을 배우고 있습니다. 저는 4 장 : 함수 구문에 있습니다. 책을 읽는 동안, 필자는 텍스트 편집기 (메모장 ++)에 모든 샘플 기능을 그대로 코드화하고 GHCI에서 실행합니다.왜 모든 것을 올바르게 정렬 할 때 하스켈에서 "구문 분석 오류가 발생했습니다 '='"오류가 발생합니까?
내가 한 가장 최근의 기능은 나를 귀찮게하기 시작한 것입니다 (제 4 장의 가드! 경비원 섹션 참조).
initials :: String -> String -> String
initials firstname lastname = [f] ++ "." ++ [l]
where (f:_) = firstname
(l:_) = lastname
이것은 내 코드이며 책에 표시된 코드이기도합니다. 필자가 직접 작성하면 GCHI는 항상 구문 분석 오류를 표시합니다. 그러나 책에서 복사/붙여 넣기를하면 효과가 있습니다. 재미있는 부분은 차이점이 없다는 것입니다. 내 코드를 복사/붙여 넣었고 문자 그대로 차이가 없었습니다. 나는 이것을 여러 번 했으므로 나는 망상이 아니라고 확신한다.
왜 이런 일이 발생합니까? 어떻게 해결할 수 있습니까? 나는 처음에 그것을 보았지만, 내가 보았던 것은 "where"가 같은 열에 정렬 되어야만하는 두 문장 뒤에 있다는 것입니다. 나는 그렇게하고있다. 아직 작동하지 않습니다.
메모장 + +에서 다른 코드 위에 코드를 붙여 넣는 것은 일치하는지 여부를 감지하는 좋은 방법이 아닙니다. Unix/GNU diff 또는 GUI 도구와 같은 두 파일의 차이를 계산하고 시각화하는 도구를 사용하십시오. Haskell 컴파일러는 시간, 또는 임의의 소스를 기반으로 입력을 구문 분석하는 방법을 변경하지 않을 것입니다. 차이가 있어야합니다. – Kaz
탭을 사용하고 있습니까? 그렇다면 공백으로 전환하십시오. 탭은 모든 것이 올바르게 보이더라도 편집 문제를 야기 할 수 있습니다. –
설정> 환경 설정으로 이동하여 언어 메뉴/탭 설정 탭을 선택한 다음 오른쪽 스크롤 상자에서 "haskell"을 선택한 다음 "기본값 사용"을 선택 취소하고 "공백으로 바꾸기"를 선택하십시오. 일반적으로 탭 크기를 2로 지정하고 싶습니다. 자동 들여 쓰기를하면 공백이 사용됩니다. – paul