% cat map.m4
changequote([,])
define(li,[<[li]><b>$1</b>])
define(map,[ifelse($1,,,[li($1)
map(shift($*))])])
map(apple,orange,grape)
% m4 map.m4
<li><b>apple</b>
<li><b>orange</b>
<li><b>grape</b>
%