Haskell列表错误
我有这个:Haskell列表错误,haskell,Haskell,我有这个: varCheck :: Defs -> [Error] nameChecking :: Defs -> Body -> [Error] checkProgram :: Program -> [Error] checkProgram (Program n d b) = do dupE <- varCheck d undefE <- nameChecking d b return undefE ++ dupE 我真的不明白为什么它把被
varCheck :: Defs -> [Error]
nameChecking :: Defs -> Body -> [Error]
checkProgram :: Program -> [Error]
checkProgram (Program n d b) = do
dupE <- varCheck d
undefE <- nameChecking d b
return undefE ++ dupE
我真的不明白为什么它把被骗当作一个单一的元素。
谢谢 当你有
v <- expr
getLine::IO String
和str::String
(我们的monadm
由IO
播放,我们的a
由String
播放)
在您的代码中
dupE <- varCheck d
但是现在您没有使用
,但是显示的错误不在代码中。请发布导致错误的完整代码。还有,为什么要对列表使用do
符号——这并没有错,但非常罕见。最后,请注意,returna++b
解析为(returna)+(b)
,在您的情况下,这相当于a:b
。Williem:我的错,现在是正确的错误。池:我只是觉得它看起来很整洁,你觉得它怎么样?谢谢你回复的东西,更正了,还是得到了错误,虽然没有用就解决了问题。。。。不知道为什么
str <- getLine
dupE <- varCheck d
checkProgram (Program n d b) = do
let dupE = varCheck d
let undefE = nameChecking d b
undefE ++ dupE
checkProgram (Program n d b) =
let dupE = varCheck d
undefE = nameChecking d b
in
undefE ++ dupE
checkProgram (Program n d b) = undefE ++ dupE
where dupE = varCheck d
undefE = nameChecking d b