Is functional programming the best way to write GUI code?