Clojure:
Організація коду в функції

Як це зробити:

Функції в Clojure визначаються за допомогою defn, за яким слідують назва, параметри та тіло функції. Ось швидкий приклад.

(defn greet [name]
  (str "Привіт, " name "!"))

(greet "Олексій") ; => "Привіт, Олексій!"

Тепер скажімо, ми хочемо обчислити площу прямокутника. Замість того, щоб усе зіпсувати і змішати разом, ми розділимо його на дві функції:

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

(defn print-area [length width]
  (println "Площа становить:" (area length width)))

(print-area 3 4) ; => Площа становить: 12

Поглиблений огляд

Давно розробники просто вдавили весь логічний код у єдиний блок. Це було потворно. Тоді настала ера структурованого програмування, і функції стали реальністю. В Clojure кожна функція є об’єктом першого класу — ви можете маніпулювати ними, як будь-яким іншим значенням.

Альтернативи? Деякі можуть погратись з мультиметодами чи функціями вищого порядку, але це всього лише спеції у страві функцій.

Усі деталі функцій: вони незмінні в Clojure, що робить ускладнення із побічними ефектами менш ймовірними. Вони в значній мірі спираються на рекурсію замість типових циклів, що добре поєднується з функціональною парадигмою мови.

Дивіться також