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

Functional programming 如何在Clean中拆分空格上的字符串?,functional-programming,clean-language,Functional Programming,Clean Language,我是一个函数式编程和干净的新手。我想在空白处分割一个字符串,就像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

我是一个函数式编程和干净的新手。我想在空白处分割一个字符串,就像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没有中断,我不知道它是什么意思,也不知道如何在Clean中实现它:

s' -> w : words s''
where (w, s'')
按照建议,您应该将字符串转换为列表,以使用stdlistapi函数(第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)]
splitString::String->[String]
splitString x=[foldr(+++)”“i\\i[[String]]
splitString`x=let(p,n)=跨度(()“”)x英寸
if(isEmpty n)[p][p:splitString`(tln)]

好吧,如果你在CLEAN中实现break函数,那么你就可以完成这个函数了,是吗?然后去看看haskell的break定义。如果我没记错的话,它不会使用很多花哨的技巧,而且理解起来非常简单,就像有人问我是否要实现break一样,那么仍然是重点ted语法结构,我不知道它是如何工作的另一篇文章我认为它不起作用,因为在spliton中,不能将字符串作为列表进行语义处理,生成编译错误Haskell的break函数与Clean的span函数非常相似。但是span正在处理列表并生成列表(字符列表),之后,我无法在另一个步骤中合并列表,或者我不知道如何。。。