I'm against "pure" functional programming everywhere, it's awful for stuff like I/O, for example, but if something can be done functionally without some obscure way (cough monads cough) to work around purity of functions or something else like that, why not?