Pregunta

Hay un pequeño problema que quiero resolver con Haskell:vamos a sustituir una función que cambiar todos los caracteres comodín en una cadena para un parámetro concreto.La función de la firma 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)"
¿Fue útil?

Solución

Usted podría utilizar la Texto.Regex paquete.

Su ejemplo podría ser algo como esto:

import Text.Regex(mkRegex, subRegex)

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

Otros consejos

Puede utilizar formato de texto simple biblioteca para estos casos:

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

Ver http://bluebones.net/2007/01/replace-in-haskell/ para obtener un ejemplo que se ve exactamente como el trozo de código que usted está buscando.

El uso de expresiones regulares (Text.Regex.Posix) y buscar y reemplazar para /\Wx\W/ (Perl de notación).Simplemente la sustitución de x a 6.2 le traerá problemas con x + quux.

Haskell Regex Reemplazar para obtener más información (creo que esto debe ser importado de hacerlo.

Para mayor núcleo duro se podría analizar su expresión como AST y hacer el reemplazo en ese nivel.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top