2019-11-01 Wikiに変更を適応
この記事は、lispリーダーマクロアドベントカレンダー の4日目の記事です。 タイトルにある通り、Clojure でのリー ダーマクロについて取り扱います(対象とする Clojure のバージョンは 1.4)。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
module Compose where | |
-- 合成演算子 . | |
-- f . g = \x -> f (g x) | |
twice f = f . f | |
compose = foldr (.) id [map (*2), filter even] | |
composed = twice $ compose | |
composed2 = twice compose | |
-- これだけはコンパイルが通らない。 | |
-- 理由は、composeにリストを渡した時点でcallableでなく値になってしまうから。 |