在这个tutorial中,作者在最底部提供了一个函数类型:
(Num b) => length :: [a] -> b
所以你可以看到它以类型“Num b”开头(至少我认为是这样)。但是,当我尝试定义类似的东西时:
(Integral a) => lucky :: a -> String
我收到错误:
输入`=>'
时解析错误
这里有谁错?
答案 0 :(得分:12)
教程错误,类型类必须在::
之后,类型签名应该是length :: Num b => [a] -> b
。
语法在语言报告10.5节context free syntax中指定,相关产品是 gendecl 。