我有這樣的代碼,它的工作,但是當我添加此語句不工作:解析錯誤(可能是不正確的縮進或不匹配的括號內),如果其他
do
let r = ....
我得到一個錯誤。代碼:
paly :: Matrix -> String->Int -> Matrix
paly mat flag 10 =mat
paly mat flag i =do
let a=1
let b=2
.....
if a/=(-1) ||b/=(-1) then
if y==2 then
take x mat ++
[take x (mat !! y) ++ [flag] ++ drop (x + 1) (mat !! x)] ++
drop (y + 1) mat
else if a==2 then
take a mat ++
[take a (mat !! y) ++ [flag] ++ drop (x + 1) (mat !! x)] ++
drop (y + 1) mat
else if b==2 then
--do
--let r = posState mat
take b mat ++
[take x (mat !! y) ++ [flag] ++ drop (x + 1) (mat !! x)] ++
drop (y + 1) mat
else
take c mat ++
[take c (mat !! y) ++ [flag] ++ drop (x + 1) (mat !! x)] ++
drop (y + 1) mat
else
paly mat flag (i+1)
是的,在Haskell中必須要有一個更好的書寫方式。它有什麼作用?問題可能是你的'let'應該排在其他地方。首先,擺脫所有這些選項卡並使用空格(並且不要縮進到目前爲止)。選項卡出了名的問題,因爲編輯和編譯器可以以不同的方式思考它們。 – AndrewC
這個問題與[tag:haskell-platform]或[tag:haskell-pipes]無關。 – dfeuer
此代碼示例有很多內容。你有'讓a = 1',然後'如果a/= -1'永遠是真的,因爲'a'是1,除非你在某個地方遮蔽了名字。此外,您不會告訴我們您遇到了什麼錯誤,或者您在問題頂部添加了哪些代碼。 –