Ich bin Neuling in Haskell, und ich habe eine Frage: Ich schreibe Code:
%Vor%Dieser Code muss das erste "l" -Symbol in jedem Wort der Wortliste löschen, die empfangenen Wörter enthalten, die Länge der Ergebniszeichenfolge und div für die Anzahl der Wörter ermitteln.
Also in diesem Code muss ich erhalten: 13/3 = 4,333 ... ("listlolwordword" = 15, "istolwordword" = 13) aber ich empfange nur 4.
average :: [[Char]] -> Float
funktioniert nicht, ich erhalte Fehler. wo mein Fehler?
ps. Entschuldigung mein Englisch, bitte
Die Funktion length
gibt eine Int
zurück, und die Funktion div
führt eine ganzzahlige Division durch, dh sie löscht den Bruchteil. Wenn Sie ein Float
Ergebnis haben möchten, müssen Sie zuerst das Ergebnis von length
in ein Float
umwandeln und dann (/)
für die Division verwenden:
Wenn ich schon dabei bin, sollten Sie stattdessen den Mustervergleich in check
in Erwägung ziehen, z. B .:
Dieser Stil ist sowohl lesbarer als auch weniger anfällig für Fehler - beispielsweise schlägt Ihre Version fehl, wenn eine leere Zeichenfolge angegeben wird.
Tags und Links haskell