Clojure:
Organizacja kodu w funkcje

Jak to zrobić:

Funkcje w Clojure definiujemy za pomocą defn, po którym następuje nazwa, parametry i ciało funkcji. Oto szybki przykład.

(defn powitanie [imie]
  (str "Cześć, " imie "!"))

(powitanie "Alex") ; => "Cześć, Alex!"

Załóżmy teraz, że chcemy obliczyć pole prostokąta. Zamiast pakować wszystko do kupy, dzielimy to na dwie funkcje:

(defn pole [dlugosc szerokosc]
  (* dlugosc szerokosc))

(defn drukuj-pole [dlugosc szerokosc]
  (println "Pole wynosi:" (pole dlugosc szerokosc)))

(drukuj-pole 3 4) ; => Pole wynosi: 12

Wgłębiając się

Dawno temu programiści wrzucali całą swoją logikę do jednego bloku. To było brzydkie. Potem przyszło programowanie strukturalne i funkcje stały się ważne. W Clojure każda funkcja jest klasą pierwszą – możesz nimi rzucać jak każdą inną wartością.

Alternatywy? Niektórzy mogą bawić się multi-metodami lub funkcjami wyższego rzędu, ale to tylko dodatki w zupie funkcji.

Wszystko w szczegółach funkcji: w Clojure są one niezmienne, co zmniejsza prawdopodobieństwo zamieszania przez efekty uboczne. Opierają się głównie na rekurencji zamiast typowych pętli, co dobrze współgra z funkcyjnymi paradygmatami języka.

Zobacz również