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"
どちらも機能しますが、明らかに戻り、頭には異なるタイプがありますが、両方とも機能します(エラー「いいえ」) 入力すると:
:t error "no"
私は得る
error "no" :: a
これは、エラー「いいえ」がどのタイプでもかまいませんか? なんでそうなの ?