2008-12-06

compose

関数的なプログラミングをしていると、手続きの結果を別の手続きに渡して、さらにその結果を別の手続きに、みたいな処理が日常的に出てくるけど、処理が複雑になると、ネストが深くなったり、見通しが悪くなったりする。

composeを使うと、そういった問題を避けられることがある。

;; 手続きの結果を順に渡す場合
(a
 (b
  (c
   (d
    (e x)))))

;; composeで手続きを合成する場合
((compose a b c d e)
 x)

composeはR5RSR6RSSRFIにはない手続きのようだけど、Gauche以外にもPLT Schemeでも使うことができる