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.

Antworten auf die Frage(8)

Ihre Antwort auf die Frage