wow, such optimization, very premature

Set.member is O(log n), compared to O(n) for Text.elem. A post's title
could be *dozens* of characters long, so that's a significant
improvement!

Reordered the list of legal characters to be in ascii order;
Set.fromList is O(n) on sorted input. Much better than the O(n*log n)
you get on unordered input. I don't care what you say, 38 is still less
than 138.