我正在尝试编写一个简单的路径查找函数,但是我遇到了一个模糊的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
有人能让我知道我做错了吗?
答案 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节):以小写字母(变量标识符)开头的标识符和以大写字母开头的标识符(构造函数标识符)。”