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, що робить ускладнення із побічними ефектами менш ймовірними. Вони в значній мірі спираються на рекурсію замість типових циклів, що добре поєднується з функціональною парадигмою мови.
Дивіться також
- Власний посібник Clojure: https://clojure.org/guides/learn/functions
- Основи функціонального програмування: https://www.braveclojure.com/core-functions-in-depth/
- Розмови Річа Хіккі: https://changelog.com/posts/rich-hickeys-greatest-hits - для розуміння філософії Clojure.