As I'm trying to learn about TH I found out that it allows arbitrary IO
actions during compilation (see What's so bad about Template Haskell?). This seems quite dangerous to me. Why is that? Is it really necessary for some tasks? Or is it just a simplification of its design, to "toss everything impure into the IO
sin-bin"?
Update: I'd be also interested if there are any efforts at making a safe subset of TH that disallows arbitrary IO
operations.