【发布时间】:2014-09-28 04:25:12
【问题描述】:
我为函数execState定义了一个别名:
myCleverName = execState
GHC 就没有带注释类型签名的顶级绑定发出警告,所以我写了:
myCleverName :: State s a => s -> s
对你们大多数人来说显而易见的是,“胖箭头”=> 应该只是普通的瘦箭头->。但我今天才注意到,包含别名的模块和使用别名的代码已经编译好几个星期了,并没有警告我使用了错误的语法。这是为什么呢?
谢谢!
【问题讨论】:
-
我自己尝试了一下,得到了以下错误-" 预期有一个约束,但 'State s a' 有一种 '*' 在 'myCleverName' 的类型签名中:myCleverName :: State s a = > 小号 -> 小号”。您确定错误的代码正在编译吗?你能从程序中删除其他东西,直到你有最少的行并且仍然没有错误吗?