Pergunta

Há um pequeno problema eu quero resolver com Haskell:deixe substituir uma função que alterar todos os caracteres em uma seqüência de caracteres para um concreto de parâmetro.A função tem de assinatura de:

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)"
Foi útil?

Solução

Você pode usar o Texto.Regex pacote.

O exemplo pode parecer algo como isto:

import Text.Regex(mkRegex, subRegex)

subs :: String -> String -> String -> String
subs wildcard input value = subRegex (mkRegex wildcard) input value

Outras dicas

Você pode usar de formato de texto simples biblioteca para esses casos:

import Text.Format
format "{0}^3 + {0} + sin({0})" ["6.2"]

Ver http://bluebones.net/2007/01/replace-in-haskell/ para obter um exemplo que se parece exatamente como o pedaço de código que você está procurando.

Usar expressões regulares (Text.Regex.Posix) e da pesquisa, para substituir /\Wx\W/ (Perl de notação).Basta substituir x para 6.2 irá trazer-lhe problemas com x + quux.

Haskell Regex Substituir para mais informações (eu acho que isso deve ser importado para ISSO.

Para o extra-hard-core, você pode analisar a sua expressão como AST e fazer a substituição em que nível.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top