Haskellで興味深いライブラリがScrap Your Boilerplateと呼ばれ、paper by Simon Peyton Jonesに基づいています。これは、関数型プログラミングで大きく深くネストされたデータ構造を更新するコードを書くのに有効な方法です言語。Haskellの "Scrap Your Boilerplate"のClojure相当
潜在的に大規模で複雑な会社のデータ構造内のすべての人に給与を実質的に一定割合k増加させるものです。
Clojureに同じ種類のプログラミングスタイルを実現するための同等のライブラリまたはアプローチはありますか?
例えば、どのように私は上記の使用例のClojureの同等物を書くことができます:
(defn increase [company k]
(everywhere-in company (transform-map-values :salary #(* % (+ 1 k))))
SYB論文は、(別の)共同著者のJoost Visserと共にHaskellにStrategoを組み込むことについての共同著者RalfLämmelの研究の続きであった。 Clojureのネストされた構造を更新するには、SYBの「トラバーサルコントロール」側がそのデータ型のジェネリックス側よりも必要なので、ClojureにStrategoを埋め込んでいるかどうかを質問するために質問を広げることができます。私はClojureとウェブ検索のビットを知らない誰もこれをまだ行っていないことを示唆しているようだ。 Schemeには、確かにSYBよりも移植が容易なStratego traversalsの埋め込みがあります。私は自分自身で作成しました。 –
私はSYBを知らないが、[clojure.walk](http://richhickey.github.com/clojure/clojure.walk-api.html)があなたが探しているものでしょうか? –