Haskell Novice Probleme beim Teilen einer Liste in zwei Hälften
Hier ist mein Versuch, eine Funktion zu schreiben, die eine Liste mit gerader Länge in zwei gleiche Hälften aufteilt.
halve :: [a] -> ([a], [a])
halve x
| even len = (take half x, drop half x)
| otherwise = error "Cannnot halve a list of odd length"
where
len = length x
half = len / 2
Ich erhalte den folgenden Fehler:
No instance for (Fractional Int) arising from a use of ‘/’
In the expression: len / 2
In an equation for ‘half’: half = len / 2
In an equation for ‘halve’:
Ich verstehe den Fehler nicht, aber ich habe den Verdacht, dass Haskell im Voraus darüber informiert werden muss, dass len etwas ist, das Sie durch 2 teilen können. Also, wie kann ich das Beispiel korrigieren? Ist mein Code irgendwo in der Nähe von idiomatischem Haskell? Ich würde mich über weitere Kommentare zu meinem Code freuen.