这两者完全不相关; 它们似乎因为ASCII而相关.如果你看一下它们的Unicode等价物会更有意义:
=>是箭头:?.它用于指定类型签名中的约束:
Eq a => a -> a -> Bool
Run Code Online (Sandbox Code Playgroud)
的Eq a =>在上述签名意味着该类型的变量a可以是任何类型的是的一个实例Eq的类.也就是说,任何具有deriving (Eq)或类似的显式实例的类型instance Eq Type where ....
在函数签名中,->指定正常参数,同时=>指定签名中的约束.在上面的例子(Eq a => a -> a -> Bool)中,函数接受两个类型的参数,a并给出一个Bool.该Eq a =>部分不是函数的显式参数; 它只是告诉我们a必须是其中的一部分Eq(也就是说,它必须与之相当==).
<=是小于或等于.也就是说?,不是 ?.这是标准库中的常规函数,它是Ord类的一部分:
?> :t (<=)
(<=) :: Ord a => a -> a -> Bool
Run Code Online (Sandbox Code Playgroud)
您可以在正常表达式中使用它:
?> 10 <= 12
True
Run Code Online (Sandbox Code Playgroud)它们看似对称的唯一原因是因为ASCII的近似值?和?相同,但这只是符号的限制.否则,他们完全不相关.
您可以在代码中使用明确的Unicode符号.该UnicodeSyntax扩展支持使用?for =>,并且base-unicode-symbols包中包含Unicode版本的标准库函数,包括?for <=.
| 归档时间: |
|
| 查看次数: |
95 次 |
| 最近记录: |