見つかった。公開されているErlang 分散処理勉強会の資料のなかだった。
http://d.hatena.ne.jp/cooldaemon/20080618/1213797785
http://www.slideshare.net/cooldaemon/mochiweb-lt
to_htmlという関数だった。

mochiweb:to_html

26> io:format("~s~n",[mochiweb_html:to_html({html,[{'div',[{class,"test"}],["aaa",{span,"ABC"},"bbb"]},{p}]})]).
<html><div class="test">aaa<span>ABC</span>bbb</div><p></p></html>

メモ

Pythonのstr.splitと、Erlangのstring:tokensは似ているが仕様が少しちがうので、メモ。
"aa/bb" と"/aa/bb/"が同じ結果になってしまい区別できないというstring:tokensの仕様は少し不便に感じるが、用途次第なのでなんとも言えないか。

>>> "aa/bb/cc".split("/")
['aa', 'bb', 'cc']
>>> "/aa/bb/cc/".split("/")
['', 'aa', 'bb', 'cc', '']
6> string:tokens("aa/bb/cc","/"). 
["aa","bb","cc"]
7> string:tokens("/aa/bb/cc/","/").
["aa","bb","cc"]
8> string:tokens("aa_bb/cc","/_").    
["aa","bb","cc"]

Erlangunicode

Staringは、Erlangunicodeライブラリで、
IBMが公開しているユニコードライブラリのICUCommunity – IBM Developerに基づく。
Staring: Unicode string library for Erlang
http://www.12monkeys.co.uk/starling/
rakeに失敗。深追いはせず。。。
http://www.linux.or.jp/JF/JFdocs/Unicode-HOWTO-6.html