繁体   English   中英

Haskell-使用“取放”将列表分为三部分

[英]Haskell - Use of Take and Drop to split a list into three parts

因此,我遇到了这个函数定义,该函数定义包含一个列表(xs)并将其分为三部分作为输出。

问题是我很难理解它。 我知道第一部分占列表(xs)的n,其中n被定义为将列表(xs)的长度除以3。但是在那之后,我不确定到底发生了什么。

如果有人可以指导我完成此功能,那就太好了。

这是代码:

--SPLITS A LIST INTO THREE PARTS---------------------------------------------------------

split3 xs = (take n xs , take n (drop n xs) , drop (n*2) xs)
    where n = length xs `div` 3

第二部分删除前n元素,并接受后n元素。

[------- n -------][------- n -------][------- n -------]
^                  ^
dropped            taken by `take`    ^ dropped by `take`

一个具体的例子可以是[1,2,3]的列表, n == 1

take n (drop n xs)
== take 1 (drop 1 [1,2,3])
== take 1 [2,3]
== 2

第三部分两次下降n ,其余部分

[----             2n            -----][---- n -----]
^                                     ^
dropped                               taken by `drop`

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM