zabawy w ghci
mam następujący wyraz: unlines . map (\(a,b) -> show a ++ " " ++ show b)
Dlaczego zmiana podpisu po cesji
Teraz, kiedy to sprawdzić poprzez :t
uzyskać:
> :t unlines . map (\(a,b) -> show a ++ " " ++ show b)
unlines . map (\(a,b) -> show a ++ " " ++ show b)
:: (Show a, Show a1) => [(a, a1)] -> String
więc dokładnie tak, jak oczekiwano. Ale teraz, jeśli spróbuję przypisać je do jakiejś nazwy, otrzymam bardziej konkretny podpis niż oryginalny:
> let f = unlines . map (\(a,b) -> show a ++ " " ++ show b)
> :t f
f :: [((),())] -> String
Dlaczego tak się dzieje?
Zobacz także: [1] (http://stackoverflow.com/questions/7055146), [2] (http://stackoverflow.com/questions/11439163), [3] (http: // stackoverflow. com/questions/9714697), [4] (http://stackoverflow.com/questions/8434808), [5] (http://stackoverflow.com/questions/7799345), [6] (http: // stackoverflow .com/questions/8262020), [7] (http://stackoverflow.com/questions/8655900), [8] (http://stackoverflow.com/questions/11003535). Szczerze mówiąc nie jestem pewien, który (jeśli w ogóle) z tych, aby zaznaczyć ten duplikat. –