Clojure:
Koodin järjestäminen funktioihin
Miten:
Clojure-funktiot määritellään käyttäen defn
, sen jälkeen tulee nimi, parametrit ja runko. Tässä on nopea esimerkki.
(defn greet [name]
(str "Hello, " name "!"))
(greet "Alex") ; => "Hello, Alex!"
Kuvitellaan nyt, että haluamme laskea suorakulmion pinta-alan. Sen sijaan, että sotkisimme kaiken yhteen, erotamme sen kahdeksi funktioksi:
(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
Syväluotaus
Aikojen alussa koodaajat vain mukauttivat kaiken logiikkansa yhteen lohkoon. Se oli ruma näky. Sitten rakennoitu ohjelmointi tuli kuvioihin, ja funktioista tuli juttu. Clojuressa jokainen funktio on ensiluokkainen – voit heittää niitä ympäriinsä kuten mitä tahansa muuta arvoa.
Vaihtoehtoja? Jotkut saattaisivat kikkailla multimetodeilla tai korkeamman asteen funktioilla, mutta nuo ovat vain mausteita funktiopadassa.
Kaikki funktioiden yksityiskohdissa: ne ovat muuttumattomia Clojuressa, mikä tekee sivuvaikutusten sekasorrosta epätodennäköisempää. Ne nojautuvat voimakkaasti rekursioon tyypillisten silmukoiden sijaan, mikä istuu hyvin yksiin kielen toiminnallisten paradigmojen kanssa.
Katso Myös
- Clojuren oma opas: https://clojure.org/guides/learn/functions
- Funktionaalisen Ohjelmoinnin Alkeet: https://www.braveclojure.com/core-functions-in-depth/
- Rich Hickeyn Puheenvuorot: https://changelog.com/posts/rich-hickeys-greatest-hits - näkemyksiä Clojuren filosofiasta.