I do that a lot with Reason/OCaml. It is surprising how powerful imperative, mutable programming is when most of the code you write is functional, and then you want do something a little difficult in the paradigm, and you make a `ref`, write a while loop, mutate an array, or store stuff in a global variable, and it is done! Mutation in OCaml is like a fine scalpel - extremely powerful, occasionally used, and just right on the table whenever you need it.