SplitAt 3然后继续分裂

use*_*323 2 string haskell split

我希望每隔3个字母在Haskell中拆分一个字符串.

我尝试过使用splitAt但是我必须重复这个,直到字符串每3个字母分开.

有没有办法做到这一点?

例如

"WEAREDISCOVERED" 会成为 ["WEA","RED","ISC","OVE","RED"]

Die*_*lan 6

everyThree :: [a] -> [[a]]
everyThree [] = []
everyThree xs = begin : everyThree remain
   where (begin, remain) = splitAt 3 xs
Run Code Online (Sandbox Code Playgroud)

所以这适用于任何类型的列表,包括字符串.因此,如果列表为空,我们只返回一个空列表.否则我们splitAt 3.幸运的是,splitAt如果剩余的列表太短,那么它很聪明并且只返回一个,两个或没有.然后我们将该开头字符串附加到剩余everyThree列表的头部.