maybe :: b -> (a -> b) -> Maybe a -> b -- Defined in `Data.Maybe'
从这个可能的定义来看,b 可以是任何类型,并且应该与函数的返回值类型相同(a-> b)但是当我在 Winghci 中尝试这个时:
maybe (error "no") (head) (Just "hi")
'h'
maybe (error "no") (return) (Just "hi")
"hi"
两者都有效,但显然 return 和 head 具有不同的类型,但两者都可以使用(错误“no”)当我输入:
:t error "no"
我明白了
error "no" :: a
这是否意味着错误“否”可以是任何类型?为什么这样 ?