mam te dwie funkcje:Dlaczego `: type` czasami pokazuje` a` i inne razy `t`?
cleanUp a = Data.List.filter (/=[]) a
joinByPairs [] = []
joinByPairs (x:[]) = (x:[])
joinByPairs (x:y:xs) = (x ++ y) : joinByPairs xs
Kiedy załadować je w ghci
i wywołać :type
na nich, mam te wyniki:
*Main> :type joinByPairs
joinByPairs :: [[a]] -> [[a]]
*Main> :type cleanUp
cleanUp :: Eq t => [[t]] -> [[t]]
Jaka jest logika nim pokazując a
Vs. t
? Nie sądzę, że jest to spowodowane częścią Eq t
, ponieważ mam inne funkcje, które wykazują coś w rodzaju otherFunction :: Eq a => [[a]] -> [[a]]
.
To nie ma znaczenia, prawda? : P –
@BartekBanachewicz Nie, a przynajmniej nie sądzę, ale to mnie buga !!! – cambraca
Niektóre funkcje w 'cleanUp' (może' filter') mają podpis typu zapisany za pomocą zmiennej 'a', podczas gdy niektóre funkcje w' joinByPairs' (może '(++)') mają podpis typu zapisany przy użyciu zmiennej 't '. –