Haskell Iniciante Problemas com a divisão de uma lista ao meio
Aqui está minha tentativa de escrever uma função que divide uma lista de comprimento uniforme em duas metades iguais.
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
Eu estou recebendo o seguinte erro:
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’:
Não entendi o erro, mas desconfio que Haskell precise ser informado com antecedência de que len é algo que você pode dividir por 2. Então, como retifico o exemplo? Meu código está perto de haskell idiomático? Eu gostaria de receber outros comentários sobre o meu código.