我正处于回溯函数的中间。这就是我到目前为止所做的,它是有效的,然后我添加了一个额外的值,现在GHCi打印了一个错误。我仍然是这门语言的新手,我不知道如何解决这个问题。帮助!
backtracking :: [[Int]] -> (Int,Int) -> (Int,Int) -> String --montapuercos (posActual, vida)
backtracking matriz montapuercos memory | checkMove (-1,0) montapuercos memory matriz = "Norte "++(backtracking matriz (-1+(fst montapuercos),(snd montapuercos)) montapuercos)
| checkMove (0,1) montapuercos memory matriz = "Este "++(backtracking matriz (fst montapuercos,(snd montapuercos)+1) montapuercos)
| checkMove (1,0) montapuercos memory matriz = "Sur "++(backtracking matriz (fst montapuercos+1,(snd montapuercos)) montapuercos)
| checkMove (0,-1) montapuercos memory matriz = "Oeste "++(backtracking matriz (fst montapuercos,(snd montapuercos)-1) montapuercos)
| montapuercos == (length matriz,length(head matriz)) = " Llegué a la salida"
checkMove :: (Int,Int) -> (Int,Int) -> (Int,Int) -> [[Int]] -> Bool
checkMove (mx,my) (pA1,pA2) (mem1,mem2) matriz | ( (pA1+mx) >= 0 && (pA1+mx) < length matriz ) &&
( (pA2+my) >= 0 && (pA2+my) < length (head matriz) ) &&
( (pA1+mx) /= mem1 && (pA2+my) /= mem2 ) = True
| otherwise = False这是我得到的错误
<interactive>:105:1:
No instance for (Show ((Int, Int) -> String))
arising from a use of ‘print’
In a stmt of an interactive GHCi command: print it为什么会发生这种情况?
发布于 2018-04-24 06:28:25
这是因为我增加了参数的数量,但在调用函数时忘记添加它,这就是我收到错误的原因:
backtracking [[18,0,0],[0,0,0],[0,0,6]] (0,0)但我是这样声明的:
backtracking :: [[Int]] -> (Int,Int) -> (Int,Int) -> String 对于像我这样的Haskell新手来说,理解为什么错误会被showing.Thanks给@Thomas M. DuBuisson,因为他帮了我的忙,这是很有用的。让我们继续摇滚吧!
https://stackoverflow.com/questions/49990662
复制相似问题