首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >错误“交互式”(显示((整型,整型) ->字符串)没有实例- Haskell

错误“交互式”(显示((整型,整型) ->字符串)没有实例- Haskell
EN

Stack Overflow用户
提问于 2018-04-24 06:11:28
回答 1查看 852关注 0票数 1

我正处于回溯函数的中间。这就是我到目前为止所做的,它是有效的,然后我添加了一个额外的值,现在GHCi打印了一个错误。我仍然是这门语言的新手,我不知道如何解决这个问题。帮助!

代码语言:javascript
复制
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

这是我得到的错误

代码语言:javascript
复制
<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

为什么会发生这种情况?

EN

回答 1

Stack Overflow用户

发布于 2018-04-24 06:28:25

这是因为我增加了参数的数量,但在调用函数时忘记添加它,这就是我收到错误的原因:

代码语言:javascript
复制
backtracking [[18,0,0],[0,0,0],[0,0,6]] (0,0)

但我是这样声明的:

代码语言:javascript
复制
backtracking :: [[Int]] -> (Int,Int) -> (Int,Int) -> String 

对于像我这样的Haskell新手来说,理解为什么错误会被showing.Thanks给@Thomas M. DuBuisson,因为他帮了我的忙,这是很有用的。让我们继续摇滚吧!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49990662

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档