Проблема новичка в Haskell с разделением списка пополам
Вот моя попытка написать функцию, которая разбивает список четной длины на две равные половины.
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
Я получаю следующую ошибку:
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’:
Я не понимаю ошибку, но у меня есть подозрение, что Haskell нужно заранее сказать, что len - это то, что вы можете разделить на 2. Итак, как мне исправить пример? Мой код где-то рядом с идиоматическим haskell? Буду признателен за любые другие комментарии относительно моего кода.