这是我尝试编写一个函数,将偶数长度列表分成两个相等的一半.
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
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
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’:
Run Code Online (Sandbox Code Playgroud)
我不明白错误,但我怀疑Haskell需要提前告知len是你可以除以2的东西.那么,我该如何纠正这个例子呢?我的代码是否接近惯用的haskell?我很感激有关我的代码的任何其他意见.
我正在尝试将列表拆分为两个,这样当输入[1,3,6][2,5]输出时[1,3,6][2,5],我似乎无法弄明白.我能做的最好的是[1,3,6][2,5].