map、filter、reduce 以外に、clojure コアの他の多くの関数のうち、生産性を高めるために学ばなければならない最も有用な/一般的に使用される関数の次のセットはどれですか?
7 に答える
4clojure の問題ページにアクセスして「core-functions」を検索すると、4clojure チームが役立つと判断した多数の機能が見つかります。いくつか例を挙げると:
- グループ化
- 明確
- 削減
- 周波数
- パーティション
- と合併
- 間を空ける
- 介入する
シーケンス処理ライブラリは、私にとって Clojure を Clojurish にしているものの多くです。この考え方は、いくつかの型にいくつかの関数を持たせるのではなく、単一のデータ型に多くの関数を持たせることです。したがって、すべてのシーケンス操作関数を学習すると、大きなメリットが得られると言えます。
for
追伸: 、reductions
、およびの特別な叫び声iterate
http://clojure.org/cheatsheetにあるチートシートは便利で、読むのにそれほど時間はかかりません。
map、filter、reduce のリストには重要な部分がいくつか含まれているため、そのリストに追加すると、既に知っていることと重複する可能性があります。
Clojure の強みの 1 つは同期です。サンプル コードを書き始めて、これらの同期構造、参照、エージェント、アトムの使用方法を学びました。多くの Clojure の書籍で取り上げられています。Clojure in Actionがこれらをうまくカバーしていることは知っています。
特に関数について言及しているわけではありませんが、マップを使用して作業しますが、マップが一般的にマルチメソッドと同様に優れている理由について説明します。
最後に、 loop .. recur を使用する必要がある理由について説明します。過去 1 年以上にわたって私が得たアドバイスは非常に健全なものでした。どうしても必要な場合にご利用ください。
私がなしでは生きにくいと思ういくつか:
inc
/dec
- for ループ、再帰、off-by-one 修正などassoc
- マップの更新用comp
- 高階関数を構成するためpartial
- 引数のサブセットを使用して高階関数を構築するapply
- 引数のベクトルを関数に渡すためconj
- コレクションに追加するため (任意のタイプ)first
/next
- ヘッドエンドからのシーケンス操作用seq
- シーケンスの作成、または空のシーケンスのテスト用(if (seq x) ...)
厳密には関数ではない特別なフォーム/マクロもいくつかありますが、非常に重要であることがわかります。fn
たとえば、、、、、、などです。loop/recur
cond
and/or
for
doseq
let
reduce、cons、first、rest、loop/recur、fn、および [de structuring] は、私が最も頻繁に使用する形式です。編集:ああ、パーティション - 便利な機能です!
行う
Clojure を初めて使用するときは、常に「do」を使用することになると思います。これは、命令型の方法でプログラミングできるため、作業を完了できるようにするためです。Clojure の知識が増えるにつれて、「do」の使用が減ることに気付くでしょう。