因此,我遇到了这个函数定义,该函数定义包含一个列表(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`
关于list - Haskell-使用“取放”将列表分为三部分,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36199659/