title: map from Char to String in Haskell
body: <p>I'm trying to figure out how to <a href="https://github.com/jgm/pandoc/issues/3757" rel="nofollow noreferrer">improve the transliteration</a> from German umlauts to ASCII for <code>id</code> identifiers in Pandoc. Currently there is only a mapping <code>Char -&gt; Maybe Char</code>, that converts <code>ä</code> into <code>a</code> and <code>ß</code> into <code>Nothing</code> etc., but the most common convention maps <code>ä</code> into <code>ae</code> and <code>ß</code> into <code>ss</code> and so on. Here is what I have so far:</p>
  
  <pre><code>import Data.Char (isAscii)
  import qualified Data.Map as M
  
  asciiMap' :: M.Map Char String
  asciiMap' = M.fromList
    [('\196',"Ae")
    ,('\214',"Oe")
    ,('\220',"Ue")
    ,('\223',"ss")
    ,('\228',"ae")
    ,('\246',"oe")
    ,('\252',"ue")
    ]
  
  toAsciiStr :: Char -&gt; String
  toAsciiStr c | isAscii c = [c]
               | otherwise = M.findWithDefault "" c asciiMap'
  
  myTranslit :: String -&gt; String
  myTranslit [] = []
  myTranslit (x:xs) = toAsciiStr x ++ myTranslit xs
  </code></pre>
  
  <p>My question is about <code>myTranslit</code>.</p>
  
  <p>Is there maybe already a built-in <em>map</em>-like function <code>someMap :: (a -&gt; [a]) -&gt; [a] -&gt; [a]</code>?</p>