edit - Извините, я не прочитал вопрос.Надеюсь, этот новый ответ сделает то, что вы хотите.
> List.groupBy (\x y -> y /= ' ') "The quick brown fox jumped over the lazy dogs."
["The"," quick"," brown"," fox"," jumped"," over"," the"," lazy"," dogs."]
Библиотечная функция groupBy
принимает функцию предиката, которая сообщает вам, добавляете ли вы следующий элемент, y в предыдущий список,который начинается с x , или начинается новый список.
В этом случае нам не важно, с чего начался текущий список, мы только хотим начать новый список (т.е. сделатьпредикат оценивается как ложный), когда следующий элемент, y , является пробелом.
edit
nm указывает, что обработка нескольких пробелов не является правильной.В этом случае вы можете переключиться на Data.List.HT
, который имеет семантику, которую вы хотите.
> import Data.List.HT as HT
> HT.groupBy (\x y -> y /= ' ' || x == ' ') "a b c d"
["a"," b"," c"," d"]
другая семантика, которая делает эту работу, состоит в том, что x является последним элементомв предыдущем списке (к которому можно добавить y или создать новый список).