【发布时间】:2024-05-16 20:10:02
【问题描述】:
使用交互式 GHC 解释器时,可以询问表达式的推断类型:
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
在前奏曲中。这很有意义!我的问题是:在没有给出签名的情况下如何选择类型变量名称?
一个例子是
Prelude> :t map fst
map fst :: [(b, b1)] -> [b]
它选择了名称b 和b1。很明显,必须进行重命名,但只需从 a、b、... 开始就可以了
map fst :: [(a, b)] -> [a]
相反,我觉得它更易读。
【问题讨论】:
标签: haskell type-inference ghc ghci type-variables