Ich versuche, die Länge einer Liste als Integer
Typ zurückzugeben, aber die Anwendung length xs
gibt die Länge als Int
Typ zurück. Wie kann ich dieses Problem umgehen? DieseSo geben Sie die Länge einer Liste als Typ Integer anstelle von Int in Haskell zurück
ist, was ich versuche zu erreichen: (es funktioniert nicht)
sizeList :: [Integer] -> Integer
sizeList xs = length xs
Es funktioniert, sobald ich die Rückkehr zu sizeList :: [Integer] -> Int
ändern, aber ich will nicht, dies zu tun.
gehen Sie mit 'genericLength' wie Sebastian sagte - oder Länge als Übung neu zu implementieren: D – Carsten
Ich hoffe, Sie haben aber gut darüber, ob das eine gute Idee ist? Normalerweise ist es nicht möglich, eine Liste zu haben, solange man die Länge nicht in 'Int' zählen kann. Der Grund dafür ist, dass der Speicher des Computers grundsätzlich mit Ints indiziert ist irgendeine Liste. Auf einer 64-Bit-Plattform zählt das Zählen bis zum Überlauf (http://www.wolframalpha.com/input/?i=2^64+%2F+3GHz) sowieso, auch wenn Sie eine unendliche Liste verwenden. Deshalb gibt die Standard-Funktion 'length' IMO zu Recht' Int' und nicht 'Integer' zurück. – leftaroundabout
Und auf einer 32-Bit-Plattform dauert es 1,4 Sekunden, aber an diesem Punkt würden Sie verwenden (2^32 * 8 Byte ~ 34 GB). – Zeta