Есть небольшая проблема, которую я хочу решить с помощью Haskell: позвольте заменить функцию, которая изменяет все символы подстановки в строке для одного конкретного параметра. Функция имеет сигнатуру:
subs :: String -> String -> String -> String
-- example:
-- subs 'x' "x^3 + x + sin(x)" "6.2" will generate
-- "6.2^3 + 6.2 + sin(6.2)"


Вы можете использовать пакет Text.Regex.
Ваш пример может выглядеть примерно так:
import Text.Regex(mkRegex, subRegex)
subs :: String -> String -> String -> String
subs wildcard input value = subRegex (mkRegex wildcard) input value
См. http://bluebones.net/2007/01/replace-in-haskell/ для примера, который выглядит точно так же, как и фрагмент кода, который вы ищете.
Используйте регулярные выражения (Text.Regex.Posix) и поиск-замену для /\Wx\W/ (нотация Perl). Простая замена x на 6.2 вызовет проблемы с x + quux.
Haskell Regex заменить для получения дополнительной информации (я думаю, это должно быть импортировано в SO.
Для дополнительной сложности вы можете проанализировать свое выражение как AST и выполнить замену на этом уровне.
Вы можете использовать библиотеку простой текстовый формат для таких случаев:
import Text.Format
format "{0}^3 + {0} + sin({0})" ["6.2"]
@paullrulan: Надеюсь, вы не пытаетесь выполнять символьную математику БЕЗ правильного парсера / AST. Строки для этого - кошмар ... Пожалуйста, скажите мне, что вы не пытаетесь заменить переменные лексически вместо AST ...