Wie definiere ich das Äquivalent dieser Funktion (aus learnyouahaskell ) in GHCi?
import Data.List
numUniques :: (Eq a) => [a] -> Int
numUniques = length . nub
Ohne die Typdeklaration akzeptiert GHCi die Funktionsdefinition, erhält jedoch einen nicht hilfreichen Typ:
Prelude Data.List> import Data.List
Prelude Data.List> let numUniques' = length . nub
Prelude Data.List> :t numUniques'
numUniques' :: [()] -> Int
Die resultierende Funktion akzeptiert nur eine Liste von Einheiten als Parameter.
Gibt es eine Möglichkeit, Typdeklarationen in GHCi bereitzustellen? Oder gibt es eine andere Möglichkeit, solche Funktionen zu definieren, für die keine Typdeklarationen erforderlich sind?
Ich sah keine offensichtlichen Hinweise im GHCi-Handbuch und experimentierte mit Ausdrücken wie den folgenden (ohne Erfolg):
> let numUniques' = ((length . nub) :: (Eq a) => [a] -> Int)
> :t numUniques'
numUniques' :: [()] -> Int