遊んでみる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
なぜこれが起こるのですか?