저는 하스켈을 사용하여 IO에 익숙하지 만 많은 내용을 읽었지만 코드는 여전히 작동하지 않습니다.파일의 줄을 읽고 중간 요소를 정렬하고 반환하십시오.
I 앱이 수행 할 작업 :
- 모든 숫자를 각 행을 포함하는 파일의 모든 라인을 (은 File2.txt, file2.txt, ...), 읽기 (1.12345 같은 수레)
- 정렬이 모든 선 (문자열 정렬 또는 플로트 정렬 문제가되지 않습니다, 나는 문자열 정렬이 빠른 것 같은데요?)
- 목록의 중간 요소를 확인하고이 코드 I입니다
그것을 인쇄 지금까지 해왔다. [중간] 함수가 [문자열]을 전달할 때 잘 작동한다는 것을 확신 할 수 있습니다.
middle :: [a] -> a
middle xs = (drop ((l - 1) `div ` 2) xs) !! 0
where l = length xs
getSortedMiddleElement :: Int -> String
getSortedMiddleElement i = do
dat <- readFile $ "file" ++ (show i) ++ ".txt"
return $ middle $ sort $ lines dat
나는 "지능 -> 내용"에서 getSortedMiddleElement를 호출하고있는 번호가 URL을 통해 전달되는 중간 요소가 사용자에게 반환해야 기능 (내가 Yesod를 사용). 문자열에서 내용을 가져 오려면 "IO String"이 아닌 "String"이어야합니다. 어떻게 쉽게 얻을 수 있습니까?
미리 감사드립니다.
유형을 'Int -> IO String'으로 변경 한 다음, 예를 들어 다음과 같이 처리한다. 'readFile' 또는 다른 IO 함수. – kqr
고맙습니다. 지금까지 좋은 소리입니다! HTTP 응답을 반환하는'getTestR :: Int -> Handler RepPlain'을 처리하려면 어떻게해야합니까?'getTestR :: Int -> IO Handler RepPlain'이 작동하지 않습니다. ( – sibbl
내가 말할 수 있으면 좋겠지 만, 나는 Yesod의 전문가가 아닙니다 : ( – kqr