我是一个Haskell noob总计,我希望有人能够帮助我,因为我已经在这里呆了几个小时,而且我只知道我正在做一些荒唐可笑的事情。无法与实际类型匹配的预期类型
程序应该扫描字典文件,以确定删除空格的句子集合的所有有效单词序列。
Ex。 “insidewaysoften”可以被分解为“经常侧向”,“内部方式软化”等。
我在python中编写了我的原型,它工作得很好(正如我的Java实现一样),但是课程要求一个Haskell的实现,我不能得到它的工作。提前道歉的罪行我犯有危害的语言和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 2011-05-02 03:18:09
你是否偶然采取与MeeksMan13相同的课程,他写了[这个问题](http://stackoverflow.com/questions/5852841/splitting-a-sentence-without-any-whitespace-seperators-into-a-tencetence -with白色)?另外,是的,这是否会产生错误,还是只是不正确?如果是这样,它以什么方式失败? – 2011-05-02 03:25:35
是的,杰弗里,我看起来和MeeksMan13一样。在我发布我的信息后,我看到了他的问题。我发布的代码是返回类型错误,例如Rotsor在他的帖子中显示的错误,我认为根据他提供的信息我会很好。 – dpiers 2011-05-02 04:57:24