2014-11-16 5 views
0

Я хочу разбить строку в Haskell.Разбиение строки в Haskell

Моя Inicial Строка будет выглядеть примерно так

["Split a String in Haskell"] 

и мой ожидаемый результат будет:

["Split","a","String","in","Haskell"]. 

Из того, что я видел, слов и строк здесь не работают, потому что имеют тип [String], а не только String.

Я пробовал Data.List.Split, но не повезло и там.

Любая помощь? Благодаря

+0

«Из того, что я видел, слова и строки здесь не работают, потому что у меня есть тип [String], а не только строки.» Как это проблема, и что вы ожидаете от разделения строки, если вы просто получите строку в конце? – Cubic

+0

Это упражнение, которое я делаю. @Cubic я застрял из-за типа [String], и я не мог использовать слова или разделить –

ответ

1
import Data.List 

split = (>>= words) 

main = print $ split ["Split a String in Haskell"] 

map words делает [["Split","a","String","in","Haskell"]] от ["Split a String in Haskell"] и concat делает [x] от [[x]]. И concat (map f xs) равно xs >>= f. И h xs = xs >>= f равно h = (>>= f).

Другой способ, более простой будет

split = words . head 
+0

. Я новичок в Haskell, и я не знаком с частью «(>> = words)». можете ли вы объяснить, что он делает? –

+0

Спасибо, сейчас работает! –

+1

Я не уверен, что второй способ будет более идиоматичным, поскольку он использует функцию 'head', частичную функцию. –

Смежные вопросы