而在Haskell循环

时间:2015-12-27 09:54:55

标签: haskell functional-programming

我想创建一个while循环来连接xs列表中的字符串 直到我找到一个空字符串,但似乎我们都没有机会 增加一个Int也不创建一个while循环。

所以这看起来像是Haskell的伪代码,但我怎样才能真正实现我的解决方案呢?

prt :: String -> [String] -> Int -> String
prt str xs x = do
         while((xs !! (x)) /= "")
         str = str ++ (xs !! (x++))

1 个答案:

答案 0 :(得分:7)

忘记数组索引:通常不需要它们。您为完成任务所需要做的就是获取列表中包含非空字符串的最长前缀。

result
      Id
      1_1
      1_2
      1_3
      1_4
      ...
      2_1

然后你想要连接这些字符串。

takeWhile (not . null) xs
-- or
takeWhile (/= "") xs

如果您因某种原因想要在concat $ takeWhile (/= "") xs 字符串之后开始,请在开始之前删除第一个n

n

如果你真的想做一个自定义"循环",请使用递归:

concat $ takeWhile (/= "") $ drop n xs