replace digit at some positions in number
I didn't thought about the algorithm itself, but shortened the code a little bit:

decreaseList :: Num a =&gt; [a] -&gt; a -&gt; [a]
decreaseList b c = map (subtract c) b  

listToNum :: [Int] -&gt; Integer
listToNum = toInteger . foldl1 ((+).(*10)) 

numToList :: Integer -&gt; [Int]
numToList = map digitToInt . show

remove :: [Int] -&gt; [Int] -&gt; [[Int]]
remove [] x = [x]
remove (x:xs) list = let (putted, unputted) = splitAt x list
                     in (init putted) : remove (decreaseList xs x) unputted

sew :: [[a]] -&gt; a -&gt; [a]
sew list sewer = foldr1 ((++).(++[sewer])) list

whitemask :: Integer -&gt; [Int] -&gt; [Integer]
whitemask num places =  let  list = map (listToNum . sew (remove places (numToList num))) [0..9]
                        in filter (((==) `on` length . show) num) list


I think there is still room for improvement...

[Edit]

A shorter version:

whitemask :: Integer -&gt; [Int] -&gt; [Integer]
whitemask num places = map (listToNum . replace)  [0..9]  where
  replace digit = foldr ((:).findDigit) [] $ zip (numToList num) [1..] where
    findDigit (d,i) | i `elem` places = digit
                    | otherwise = d

listToNum :: [Int] -&gt; Integer
listToNum = toInteger . foldl1 ((+).(*10))

numToList :: Integer -&gt; [Int]
numToList = map digitToInt . show


[Edit]

A shorter version, with fixed-length filtering:

whitemask :: Integer -&gt; [Int] -&gt; [Integer]
whitemask num places = map replace digits  where
  digits = if 1 `elem` places then [1..9] else [0..9]
  toList = map digitToInt $ show num
  replace digit = foldl toNum 0 $ zip toList [1..] where
    toNum r (d,i) = 10*r + (fromIntegral $ if i `elem` places then digit else d)


I can't promise that I'll end up with a one-liner, though...

To your questions:


Depends on the context. If you are unsure about the name, just explain the function with a comment.
Depends if you would ever need unfiltered output. In this case that looks pretty unlikely, so I would include the filtering.
See above.