Как написать идиоматический функциональный код в Clojure [1], как написать функцию, которая разбивает строку по пробелу, но сохраняет кавычки без изменений?Быстрое решение, конечно, состоит в использовании регулярных выражений, но это должно быть возможно без них.На первый взгляд кажется довольно сложно!Я написал подобное на императивных языках, но мне хотелось бы увидеть, как работает функциональный рекурсивный подход.
Быстрая проверка того, что должна делать наша функция:
"Hello there!" -> ["Hello", "there!"]
"'A quoted phrase'" -> ["A quoted phrase"]
"'a' 'b' c d" -> ["a", "b", "c", "d"]
"'a b' 'c d'" -> ["a b", "c d"]
"Mid'dle 'quotes do not concern me'" -> ["Mid'dle", "quotes do not concern me"]
Iне возражайте, если интервал между кавычками изменится (так что сначала можно будет использовать простое расщепление по пробелам).
"'lots of spacing' there" -> ["lots of spacing", "there"] ;is ok to me
[1] На этот вопрос можно ответить на общем уровне, но я думаю, что функционалподход в Clojure можно легко перевести на Haskell, ML и т. д.