我是功能编程和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'')
答案 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)]