使用库函数,定义一个函数halve :: [a]→([a],[a]) 将一个偶数加长的列表分成两半。例如:
> halve [1, 2, 3, 4, 5, 6]
([1, 2, 3], [4, 5, 6])
到目前为止我所拥有的是
halve :: [a] -> ([a],[a])
halve = (\xs -> case xs of
[] -> ([],[])
xs -> take ((length xs) `div` 2 ) xs)
这是错的,因为xs - > take((length x)div
2)xs只显示列表的前半部分...请帮我继续,以便它显示列表的后半部分。
答案 0 :(得分:1)
感谢评论一些解决方案。我解决了......这里是
{{1}}
答案 1 :(得分:0)
在Graham Hutton的 Haskell编程中,我遇到了同样的问题。 我的解决方案是:
div
给我带来麻烦的一件小事是,意识到我需要使用(/)
和length :: Foldable t => t a -> Int
而不是(/) :: Fractional a => a -> a -> a