각 줄마다 두 개의 목록을 포함하는 텍스트 파일이 있습니다. 각 목록에는 임의의 수의 영숫자 인수가 포함될 수 있습니다. 예 : [t1, t2, ...] [m1, m2, ...] 파일을 ghc로 읽을 수는 있지만 어떻게 다른 기본 파일로이 파일을 읽을 수 있으며 어떻게 주 파일이 각 인수를 개별적으로 인식 할 수 있습니까? 그런 다음 처리할까요?텍스트 파일을 haskell 프로그램으로 읽는 방법은 무엇입니까?
답변
나는이 문제의 대부분을 스스로 해결하는 것이 가장 좋다고 생각하지만, 몇 가지 조언이 있습니다. 먼저 코드의 나머지 부분을 사용할 때까지 파일 액세스를 다루지 마십시오. 그렇지 않으면 온통 IO가 발생할 수 있습니다. 당신은 당신의 코드에서 다른 곳 sampleData
을 언급해서는 안
sampleData = "[m1,m2,m3][x1,x2,x3,x4]\n[f3,f4,f5][y7,y8,y123]\n[m4,m5,m6][x5,x6,x7,x8]"
,하지만 당신은 테스트를 위해 ghci에서 사용한다 : 일부 샘플 데이터로 시작합니다. fmap
당신에게 어떤 의미가없는 경우
당신은 당신이 원하는 모든 것을, 예를 들면 processLists::String->[(String,String)]
을하는 기능이 있으면, 당신은 당신이 tutorial I accidentally wrote를 읽을 수,
readInLists :: FilePath -> IO [(String,String)]
readInLists filename = fmap processLists (readFile filename)
와 readFile "data.txt" :: IO String
을 replcae 수 있습니다.
실제로 영숫자 인 경우 아주 쉽게 나눌 수 있습니다. 다음은 몇 가지 편리한 기능과 예제입니다.
tail :: [a] -> [a]
tail "(This)" = "This)"
문자열의 앞쪽에서 원하지 않는 것을 버릴 수 있습니다.
break :: (Char->Bool) -> String -> (String,String)
break (== ' ') "Hello Mum" = ("Hello"," Mum")
그래서 break
는 두 번째 문자열의 첫 번째 문자를 찾기 위해 테스트를 사용하고, 그냥 전에 문자열을 나누기. 끊기 문자가 다음 문자열 앞에 여전히 있음을 확인하십시오. span
은 동일하지만 첫 번째 목록에있는 무엇에 대한 테스트를 사용하기 때문에
span :: (Char->Bool) -> String -> (String,String)
span (/= ' ') "Hello Mum" = ("Hello"," Mum")
당신은 (==',')
, 또는 isAlphaNum
같은 것들로 이러한 기능을 사용할 수 있습니다 (당신은 당신의 파일의 맨 위에 import Data.Char
해야합니다 그것을 사용하는 것).
this answer에있는 splitWith
및 splitOn
함수를 살펴볼 수 있습니다. 그들은 Prelude의 split
및 words
의 정의를 기반으로합니다.
"실수로"자습서를 작성 했습니까? 어떻게 된거 야? = p –
@ Code-Guru 나는 답을 썼다. 그것은 나의 전형적인 대답보다는 오히려 더 오랫동안 끝났고, 지금 심지어 부록을 가지고있다. 그것은 몇 가지 빠른 예제로 시작되었지만 더 많은 튜토리얼로 마무리되었습니다. 오 잘. – AndrewC
답변과 자습서 키는 바로 옆에 있습니다. –
- 1. 인터넷 자원에서 텍스트 파일을 읽는 방법은 무엇입니까?
- 2. Windows 서비스에서 텍스트 파일을 읽는 방법은 무엇입니까?
- 3. 자바에서 C++ 프로그램으로 만든 파일을 읽는 방법은 무엇입니까?
- 4. Clickonce 응용 프로그램으로 파일을 배포하는 방법은 무엇입니까?
- 5. .pfx 파일을 읽는 방법은 무엇입니까?
- 6. 는 구조로 텍스트 파일을 읽는
- 7. C에서 탭으로 구분 된 정수의 텍스트 파일을 읽는 방법은 무엇입니까?
- 8. Java에서 텍스트 파일을 읽는 가장 빠른 방법은 무엇입니까?
- 9. C에서 버퍼에 텍스트 파일을 읽는 올바른 방법은 무엇입니까?
- 10. 텍스트 파일을 읽는 동안 흰 선을 건너 뛰는 방법은 무엇입니까?
- 11. C++을 사용하여 텍스트 파일을 읽는 가장 우아한 방법은 무엇입니까?
- 12. C#에서 정규 표현식을 사용하여 텍스트 파일을 읽는 방법은 무엇입니까?
- 13. 텍스트 파일과 같이 올바르게 표시하여 파일을 textview로 읽는 방법은 무엇입니까?
- 14. 텍스트 파일을 읽는 동안 유형 값을 찾는 방법은 무엇입니까?
- 15. 파일을 응용 프로그램으로 끌어서 놓는 방법은 무엇입니까?
- 16. matlab에있는 텍스트 파일에서 행렬을 읽는 방법은 무엇입니까?
- 17. 배열에 텍스트 파일을 읽는 중
- 18. PHP로 텍스트 파일을 읽는 방법?
- 19. 원격 텍스트 파일을 읽는 방법
- 20. JADE에서 텍스트 파일을 읽는 방법
- 21. 큰 텍스트 파일을 읽는 PHP
- 22. android에서 텍스트 파일을 읽는 중
- 23. C 텍스트 파일을 읽는 중
- 24. 큰 텍스트 파일을 읽는 중
- 25. 텍스트 파일을 인수로 전달하는 방법은 무엇입니까?
- 26. 텍스트 파일에서 문자를 읽는 방법은 무엇입니까?
- 27. 텍스트 파일에서 임의의 줄을 읽는 방법은 무엇입니까?
- 28. 텍스트 파일의 특정 부분을 읽는 방법은 무엇입니까?
- 29. 텍스트 상자 값을 읽는 방법은 무엇입니까?
- 30. node.js에서 전체 텍스트 스트림을 읽는 방법은 무엇입니까?
무엇을 시도 했습니까? 하스켈 튜토리얼이나 문서의 관련 섹션을 보셨습니까? –
[This] (http://www.learnyouahaskell.com/)는 하스켈을 배우는 데 도움이되는 훌륭한 책입니다. 그것은 I/O에 대한 훌륭한 장을 가지고 있습니다. –