Problemas de principiante de Haskell con dividir una lista a la mitad

Aquí está mi intento de escribir una función que divida una lista de longitud par en dos mitades iguales.

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

Estoy teniendo el siguiente error:

 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’:

No entiendo el error, pero sospecho que Haskell necesita que le digan de antemano que Len es algo que puede dividir entre 2. Entonces, ¿cómo rectifico el ejemplo? ¿Mi código está cerca de un haskell idiomático? Agradecería cualquier otro comentario sobre mi código.

Respuestas a la pregunta(4)

Su respuesta a la pregunta