haskell减半功能

时间:2015-11-12 15:54:01

标签: list haskell

使用库函数,定义一个函数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只显示列表的前半部分...请帮我继续,以便它显示列表的后半部分。

2 个答案:

答案 0 :(得分:1)

感谢评论一些解决方案。我解决了......这里是

{{1}}

答案 1 :(得分:0)

在Graham Hutton的 Haskell编程中,我遇到了同样的问题。 我的解决方案是:

div

给我带来麻烦的一件小事是,意识到我需要使用(/)length :: Foldable t => t a -> Int而不是(/) :: Fractional a => a -> a -> a