Clojureで以下のようなネストしたデータ構造を扱いたい場合があります。
1 2 3 4 5 |
|
ここからstaff要素を参照したい場合、手続き型言語ではforeach文を重ねるのが一般的だと思いますが、Clojureでmap
関数やreduce
関数をネストすると非常に読みづらくなってしまいます。
Clojureで構造や深さがあらかじめわかっているデータ構造を扱う場合は、for
マクロが便利です。
以下のコードでネストしたキーと値の組み合わせが取り出せます。
nested.clj
reduce
と組み合わせると値の更新ができます。
nested.clj