> magicFunction 'l' '_' "hello world"
["he_lo world", "hel_o world", "hello wor_d"]
¿Existe tal función mágica en el Preludio estándar o se puede componer fácilmente con otras funciones?Calculando todas las posibilidades de reemplazar un carácter por otro
Y no, esto no es tarea, pero aun así, por favor, no dedique demasiado tiempo a la tarea de rodar su propia solución complicada, preferiría hacerlo yo mismo que perder el tiempo;) Solo pregunta si está en el estandar.
EDIT: Aquí está mi primer intento:
import Data.List (findIndices)
replace i y xs = take i xs ++ y : drop (i+1) xs
magicFunction x y xs = map (\i -> replace i y xs) (findIndices (== x) xs)
se puede mejorar? Seguramente algo como replace
debe estar en el estándar? Encontré replace :: Eq a => a -> a -> [a] -> [a]
en Network.CGI.Protocol
, pero tiene una firma incorrecta.
¿Estás tratando de hacer una derivación del filtro malas palabras? XD – Mysticial
¿Qué pasa con la firma de 'replace'? Establezca 'a ~ Char' para' [a] ~ String', y tenemos 'Eq Char', ¿cuál es el problema? – dave4420
@ dave4420 El primer problema es que está en 'Network.CGI.Protocol' ... Bastante al azar como una importación para este tipo de funcionalidad (que puede encontrar en ubicaciones más apropiadas) – Jedai