A purely functional wysiwyg editor