GHCi içinde bu işlevin ( Learnyouahaskell'den alınmıştır ) eşdeğerini nasıl tanımlayabilirim ?
import Data.List
numUniques :: (Eq a) => [a] -> Int
numUniques = length . nub
Tür bildirimi olmadan, GHCi işlev tanımını kabul eder, ancak işe yaramaz bir türle sonuçlanır:
Prelude Data.List> import Data.List
Prelude Data.List> let numUniques' = length . nub
Prelude Data.List> :t numUniques'
numUniques' :: [()] -> Int
Ortaya çıkan işlev, yalnızca bir birim listesini parametre olarak kabul eder.
GHCi'de tür bildirimleri sağlamanın bir yolu var mı? Veya bu gibi işlevleri tanımlamanın tür bildirimleri gerektirmeyen başka bir yolu var mı?
GHCi kılavuzunda açık bir ipucu görmedim ve aşağıdaki gibi ifadeler ile deneyler yaptım (boşuna):
> let numUniques' = ((length . nub) :: (Eq a) => [a] -> Int)
> :t numUniques'
numUniques' :: [()] -> Int