无法证明显式类型绑定中的约束

时间:2011-10-16 11:14:42

标签: haskell

我正在尝试编写一个简单的路径查找函数,但是我遇到了一个模糊的Haskell错误。

这是我的代码(简化为指出错误)

routes :: int -> int -> [(int,int)] -> [[int]]
routes start finish waypoints = [[4]]

这就是我得到的错误

ERROR "/home/freefrag/Routes":2 - Cannot justify constraints in explicitly typed binding
*** Expression    : routes
*** Type          : a -> a -> [(a,a)] -> [[a]]
*** Given context : ()
*** Constraints   : Num a
有人能让我知道我做错了吗?

2 个答案:

答案 0 :(得分:4)

大写您的类型。像这样:

routes :: Int -> Int -> [(Int,Int)] -> [[Int]]
routes start finish waypoints = [[4]]

类型以大写字母开头。类型变量以小写字母开头。

答案 1 :(得分:1)

你的意思是?:

Int -> Int -> [(Int, Int)] -> [[Int]] 

否则,请尝试:

routes :: Num int => int -> int -> [(int,int)] -> [[int]]
routes start finish waypoints = [[4]]

请参阅 Haskell 98报告中的第2.4节“标识符和运算符”。它的内容如下:

  

“标识符在词法上被区分为两个名称空间(第1.4节):以小写字母(变量标识符)开头的标识符和以大写字母开头的标识符(构造函数标识符)。”