Jak zdefiniować odpowiednik tej funkcji (wzięty z learnyouahaskell ) w GHCi?
import Data.List
numUniques :: (Eq a) => [a] -> Int
numUniques = length . nub
Bez deklaracji typu GHCi akceptuje definicję funkcji, ale kończy się niepomocnym typem:
Prelude Data.List> import Data.List
Prelude Data.List> let numUniques' = length . nub
Prelude Data.List> :t numUniques'
numUniques' :: [()] -> Int
Wynikowa funkcja akceptuje tylko listę jednostek jako parametr.
Czy istnieje sposób zapewnienia deklaracji typu w GHCi? A może istnieje inny sposób definiowania takich funkcji, które nie wymagają deklaracji typu?
Nie widziałem żadnych oczywistych wskazówek w przewodniku po GHCi i eksperymentowałem z wyrażeniami takimi jak następujące (bezskutecznie):
> let numUniques' = ((length . nub) :: (Eq a) => [a] -> Int)
> :t numUniques'
numUniques' :: [()] -> Int