sequence関係のユーティリティ関数で自分がよく知らないものをまとめておく。
昔はindexed
っていうそのまんまな関数があったけど、1.3くらいからなくなっていた。今はmap-indexed
っていう関数を使う。よく使うのはこんな感じの使い方。
(map-indexed #(vector %1 %2) ["a" "b" "c" "d" "e"])
; ([0 "a"] [1 "b"] [2 "c"] [3 "d"] [4 "e"])
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でなく値になってしまうから。 |
この記事は、lispリーダーマクロアドベントカレンダー の4日目の記事です。 タイトルにある通り、Clojure でのリー ダーマクロについて取り扱います(対象とする Clojure のバージョンは 1.4)。
2019-11-01 Wikiに変更を適応