% 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>
 %