我在Haskell中定义了如下函数
func x | x > 0 = 4
| otherwise = error "Non positive number"
Run Code Online (Sandbox Code Playgroud)
它的推断类型是
func :: (Ord a, Num a, Num t) => a -> t
Run Code Online (Sandbox Code Playgroud)
为什么它的类型不可能
func :: (Ord a, Num a) => a -> a
Run Code Online (Sandbox Code Playgroud)
类型func :: (Ord a, Num a) => a -> a意味着返回的类型应该与您传入的类型匹配.但是由于您返回的是常量并且它不依赖于输入,因此它的类型可以是任何类型的类Num.因此,编译器推断func :: (Ord a, Num a, Num t) => a -> t.
| 归档时间: |
|
| 查看次数: |
345 次 |
| 最近记录: |