> 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
必须在标准?我在Network.CGI.Protocol
中发现了replace :: Eq a => a -> a -> [a] -> [a]
,但它有错误的签名。
你们是不是要做出亵渎过滤器旁路? XD – Mysticial 2012-07-13 16:53:23
'replace'的签名有什么问题?将'a〜Char'设置为'[a]〜String',我们有'Eq Char',那么问题是什么? – dave4420 2012-07-13 16:53:42
@ dave4420第一个问题是,它在'Network.CGI.Protocol'中......作为这种功能的导入非常随意(你可以在更合适的位置找到它) – Jedai 2012-07-13 16:58:12