副作用を極力排除しようとするfunctionalな方向性の言語においては、GUIのような副作用の塊は扱えないという直観を持っている人も多いことでしょう。確かにfunctionalな言語でunit型を返す関数ばかり扱っていると、"普通に手続きを書いているのと何が違うの?嬉しくない!"という結論になるのは至極当然の事と思います。 でも、副作用を持つ部分と純粋関数の部分を切り分けて考えれば、意外とGUIの世界でもfunctionalなスタイルでプログラムが書けるのです。わかりやすい所でいうと、例えば、データベースを扱うプログラムも副作用の塊のように見えますよね?でも、SQL文を作成する部分は文字列を扱う純粋関数ですし、取得したデータがnullじゃないか、有効かどうかを判断しながら処理する部分もpureです。そうやってどんどん切り分けていくと、最終的にかなりpureになります。しかもpureになる