> magicFunction 'l' '_' "hello world"
["he_lo world", "hel_o world", "hello wor_d"]
Есть ли такая волшебная функция в стандартном Prelude или ее можно легко скомпоновать с другими функциями?
И нет, это не домашняя работа, но все же, пожалуйста, не тратьте слишком много времени на -собственное сложное решение, я лучше сделаю это сам, чем потрачу ваше время; )Просто спрашиваю, есть ли это в стандарте.
РЕДАКТИРОВАТЬ :Вот моя первая попытка:
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)
Можно ли его улучшить? Неужто что-то вроде replace
должно быть в стандарте? Я нашел replace :: Eq a => a -> a -> [a] -> [a]
в Network.CGI.Protocol
, но у него неправильная подпись.