如何在Clean中的空格上拆分字符串?

时间:2014-10-14 16:59:52

标签: functional-programming clean-language

我是功能编程和Clean的新手。我想在空格上拆分一个字符串,比如Haskell中的words函数。

words :: String -> [String]
input: "my separated list " 
output: ["my","separated","list"]

这是Haskell中的定义:

words :: String -> [String]
words s =  case dropWhile {-partain:Char.-}isSpace s of
             "" -> []
             s' -> w : words s''
                where (w, s'') =
                    break {-partain:Char.-}isSpace s'

但Clean没有break,我不知道它意味着什么,以及如何在Clean中实现它:

s' -> w : words s''
where (w, s'')

1 个答案:

答案 0 :(得分:1)

正如StdEnvApi document建议你应该将String转换为列表以使用StdList API函数(第6页,第20页)。 这导致如下:

splitString :: String -> [String]
splitString x = [foldr (+++) "" i\\i<- splitString` (fromString x)]
    where
        splitString` :: [String] -> [[String]]
        splitString` x = let (p, n) = span ((<>) " ") x in
            if (isEmpty n) [p] [p:splitString` (tl n)]