インタラクティブGHCインタプリタを使用している場合、表現の推論されたタイプに依頼することが可能です:GHCiは型変数の名前をどのように選ぶのですか?
Prelude> :t map
map :: (a -> b) -> [a] -> [b]
map
がdefined
map :: (a -> b) -> [a] -> [b]
map _ [] = []
map f (x:xs) = f x : map f xs
それはたくさんの意味があります!私の質問は:どのように署名が与えられていないときに型変数名を選んだのですか?
の例では、それは名前b
とb1
を選ん
Prelude> :t map fst
map fst :: [(b, b1)] -> [b]
だろう。これは、名前の変更が行われなければならないことは明らかだが、単純に、...私は少し読みやすく見つける代わりに
map fst :: [(a, b)] -> [a]
、与えられただろうa
、b
始まります。
ありがとう、それは良い説明です!私はいくつかの「n」の名前を変更したいが、関連したままにしたい場合は考えなかった。 –
それは不可能ではありません。 (unSafeCoerceか普通の古い '_ | _') – PyRulez