玩弄ghci
我得到以下表达式:unlines . map (\(a,b) -> show a ++ " " ++ show b)
现在,当我通过它检查时,:t
我得到:
> :t unlines . map (\(a,b) -> show a ++ " " ++ show b)
unlines . map (\(a,b) -> show a ++ " " ++ show b)
:: (Show a, Show a1) => [(a, a1)] -> String
所以完全符合预期。但是现在,如果我尝试将其分配给某个名称,我会得到一个比原始签名更具体的签名:
> let f = unlines . map (\(a,b) -> show a ++ " " ++ show b)
> :t f
f :: [((), ())] -> String
为什么会这样?