2 haskell list take function-definition
所以我遇到了这个函数定义,它接受一个列表(xs)并将其分成三部分作为输出.
问题是我很难理解它.我理解第一部分采用列表中的n(xs),其中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
Run Code Online (Sandbox Code Playgroud)
第二部分删除第一个n元素并采用以下n元素.
[------- n -------][------- n -------][------- n -------]
^ ^
dropped taken by `take` ^ dropped by `take`
Run Code Online (Sandbox Code Playgroud)
一个具体的例子可以是[1,2,3],n == 1.的列表.
take n (drop n xs)
== take 1 (drop 1 [1,2,3])
== take 1 [2,3]
== 2
Run Code Online (Sandbox Code Playgroud)
第三部分下降两次n,其余部分
[---- 2n -----][---- n -----]
^ ^
dropped taken by `drop`
Run Code Online (Sandbox Code Playgroud)