Clojure:
コードを関数に整理する

方法:

Clojureの関数はdefnで定義され、その後に名前、パラメータ、および本体が続きます。こちらが簡単な例です。

(defn greet [name]
  (str "Hello, " name "!"))

(greet "Alex") ; => "Hello, Alex!"

今度は長方形の面積を計算したいとしましょう。それを全てひとまとめにするのではなく、2つの関数に分けます。

(defn area [length width]
  (* length width))

(defn print-area [length width]
  (println "The area is:" (area length width)))

(print-area 3 4) ; => The area is: 12

詳細分析

昔のコーダーたちは、全てのロジックを単一のブロックに叩き込んだものです。それは醜かった。その後、構造化プログラミングが登場し、関数が物になりました。Clojureでは、全ての関数はファーストクラスです—それらを他のどんな値のように扱うことができます。

代替案は?一部の人々はマルチメソッドや高階関数を扱うかもしれませんが、それらは関数のシチューの中のスパイスにすぎません。

一関数の細部に全部あります:それらはClojure内で不変です、副作用の混乱が少なくなるでしょう。彼らは典型的なループの代わりに再帰に大いに依存し、それは言語の関数型パラダイムとよく合っています。

参照

  • Clojure自身のガイド:https://clojure.org/guides/learn/functions
  • 関数型プログラミングの基礎:https://www.braveclojure.com/core-functions-in-depth/
  • リッチ・ヒッキーの講演:https://changelog.com/posts/rich-hickeys-greatest-hits - Clojureの哲学に関する洞察のために。