전 하스켈의 멍청한 놈입니다. 몇 시간 동안 있었기 때문에 누군가가 나를 도울 수 있기를 바랬습니다. 나는 어리석은 무언가를하고 있다는 것을 알고 있습니다.예상 유형과 실제 유형을 일치시킬 수 없습니다.
프로그램은 사전 파일을 스캔하여 공백이 제거 된 문장 모음에 대한 모든 유효한 단어 순서를 결정합니다.
Ex. "insidewaysoften"은 "측면에서 자주", "내부에서 부드럽게"등으로 나눌 수 있습니다.
필자의 프로토 타입을 파이썬으로 작성 했으므로 (Java 구현과 마찬가지로) 잘 작동하지만 하스켈 구현과 나는 그것을 작동시킬 수 없습니다. 나는 다음과 같은 코드를 사용하여 언어와 GHC에 대해 저지른 범죄에 대해 미리 사과 :
import System.Environment
main = do
[dictFilename,sentFilename] <- getArgs
dictFile <- readFile dictFilename
sentFile <- readFile sentFilename
mapM (\sentence -> solve "" "" sentence (words dictFile)) (words sentFile)
solve prefix header [] dict =
if (header `elem` dict)
then return prefix ++ header
else return ""
solve prefix header sent dict = do
let more = solve prefix (header ++ (take 1 sent)) (drop 1 sent) dict
if (header `elem` dict)
then return (solve (prefix ++ header ++ " ") "" sent dict) ++ more
else return more
그래서 무엇이 잘못 되었나요? 어떤 오류가 발생합니까? 어디에? – Gabe
우연히 [이 질문]을 쓴 MeeksMan13과 같은 과정을 택하고 있습니까 (http://stackoverflow.com/questions/5852841/splitting-a-sentence-without-any-whitespace-seperators-into-a-sentence -와 - 흰색)? 또한 예, 오류가 발생합니까 아니면 올바르게 작동하지 않는 것입니까? 그렇다면 어떤 방법으로 실패할까요? –
예, Jeffrey, MeeksMan13과 같은 코스에있는 것처럼 보입니다. 나는 내 질문을 올린 직후 그의 질문을 보았다. 제가 게시 한 코드는 Rotors와 같은 유형 오류를 자신의 게시물에서 보여주었습니다. 나는 그가 제공 한 정보를 바탕으로 잘 될 것이라고 생각합니다. – dpiers