Простая строка управления Haskell - PullRequest
3 голосов
/ 15 сентября 2008

Вот небольшая проблема, которую я хочу решить с помощью 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)"

Ответы [ 4 ]

6 голосов
/ 15 сентября 2008

Вы можете использовать пакет Text.Regex .

Ваш пример может выглядеть примерно так:

import Text.Regex(mkRegex, subRegex)

subs :: String -> String -> String -> String
subs wildcard input value = subRegex (mkRegex wildcard) input value
2 голосов
/ 24 августа 2011

Вы можете использовать библиотеку text-format-simple для таких случаев:

import Text.Format
format "{0}^3 + {0} + sin({0})" ["6.2"]
1 голос
/ 15 сентября 2008

Использование регулярных выражений (Text.Regex.Posix) и поиск-замена для /\Wx\W/ (нотация Perl). Простая замена x на 6.2 доставит вам неприятности с x + quux.

Haskell Regex Замените для получения дополнительной информации (я думаю, это должно быть импортировано в SO.

Для дополнительного хардкорного ядра вы можете проанализировать свое выражение как AST и выполнить замену на этом уровне.

1 голос
/ 15 сентября 2008

См. http://bluebones.net/2007/01/replace-in-haskell/ для примера, который выглядит именно как фрагмент кода, который вы ищете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...