compose
関数的なプログラミングをしていると、手続きの結果を別の手続きに渡して、さらにその結果を別の手続きに、みたいな処理が日常的に出てくるけど、処理が複雑になると、ネストが深くなったり、見通しが悪くなったりする。
composeを使うと、そういった問題を避けられることがある。
;; 手続きの結果を順に渡す場合
(a
(b
(c
(d
(e x)))))
;; composeで手続きを合成する場合
((compose a b c d e)
x)
composeはR5RSやR6RS、SRFIにはない手続きのようだけど、Gauche以外にもPLT Schemeでも使うことができる。