Clojure – Wiki

Clojure

Z Wikipedii, wolnej encyklopedii
Skocz do: nawigacji , szukaj
Clojure
Logo języka
Pojawienie się 16 października 2007 [1]
Paradygmat funkcyjny , wieloparadygmatowy
Typowanie dynamiczne , silne
Aktualna wersja stabilna 1.4 (18 kwietnia 2012 )
Twórca Rich Hickey
Licencja Eclipse Public License
Platforma sprzętowa wieloplatformowy
Platforma systemowa wieloplatformowy
Oficjalna strona Clojure

Clojure ( /'klo'uʒə/   ? / i [2] ) – nowoczesny dialekt języka programowania Lisp opracowany przez Richa Hickeya . Jest to język ogólnego przeznaczenia, wspierający modyfikację uruchomionego programu i zachęcający do programowania funkcyjnego oraz współbieżnego .

Clojure akcentuje niezmienność struktur danych jako kluczową technikę ułatwiającą programowanie współbieżne . Działa na wirtualnej maszynie Javy . Może być uruchamiany przez interpreter lub kompilowany do kodu bajtowego . Można w nim tworzyć aplety , aplikacje , lub Serwlety , co umożliwia tworzenie aplikacji internetowych w całości w języku Clojure. Cały język mieści się w jednym pliku jar . Ma rozbudowany system makr znany z Lispu, dzięki czemu można rozszerzać język o nowe konstrukcje. Posiada jedną przestrzeń nazw dla funkcji i zmiennych tak jak Scheme . Posiada pełną integrację z językiem Java , można uruchamiać kod Clojure z poziomu Javy jak i kod Javy z poziomu Clojure.

Spis treści

[ edytuj ] Etymologia nazwy

Rich Hickey – twórca języka Clojure

Nazwa Clojure pochodzi od słowa Closure (domknięcie), które jest ważnym elementem języka Lisp, z literą s zamienioną na j, wskazująca Javę . Autor chciał utworzyć nazwę, która nawiązywałaby do C# , Lispa i Javy [2] i to właśnie dlatego wybrał to słowo na nazwę swojego języka programowania.

[ edytuj ] Niektóre cechy języka

  • Kompilowany do kodu bajtowego JVM ( ang. Java Virtual Machine, wirtualna maszyna Javy);
  • Pełna kompatybilność z Javą : Clojure natywnie wywołuje metody Javy i na odwrót;
  • Możliwość pracy w trybie interaktywnym REPL ( ang. read–eval–print loop, pętla wczytaj–wykonaj–wypisz);
  • Domknięcia z naciskiem na rekurencję ;
  • Bogata biblioteka stałych struktur danych;
  • Silne wsparcie dla współbieżności w postaci transakcyjnej pamięci ( ang. Software Transactional Memory – STM) i systemu

agentów.

[ edytuj ] Przykłady

[ edytuj ] Uruchomienie REPL

java -cp clojure.jar clojure.main

[ edytuj ] Wypisywanie tekstu

(println "Hello world!")

[ edytuj ] Definicja zmiennej

(def zmienna (+ 2 (* 4 5)))

[ edytuj ] Definicja funkcji

Funkcja obliczająca silnie (nazwy zmiennych tj. symboli, tak jak w innych dialektach języka lisp mogą się składać z dowolnych znaków).

(defn ! [x]
  (if (= x 0)
      1
      (* x (! (- x 1)))))

[ edytuj ] Funkcje anonimowe

(fn [x] (* 2 (/ 3 4)))

[ edytuj ] Funkcje wyższego rzędu

(defn f [x]
   (* 2 (/ 3 4)))
(map f '(3 4 5 6 7 8))
 
;; Lub to samo używając funkcji anonimowej:
(map (fn [x] (* 2 (/ 3 4))) '(3 4 5 6 7 8))

[ edytuj ] Makra

Makro define służące do definiowania funkcji jak w Scheme . W odróżnieniu od innych dialektów, do obliczenia wyrażenia wewnątrz cytowania Quasi-quotation, zamiast przecinka używa się znaku tyldy .

(defmacro define [params & body]
  `(defn ~(first params) [~@(rest params)] ~@body))
 
(define (f x) (* x x))
(f 10)

[ edytuj ] Tworzenie nowego obiektu Javy

(new java.lang.String "Hello world!")

[ edytuj ] Wywoływanie metody obiektu

(defn upper [s] (.toUpperCase s))
(upper (new java.lang.String "foo bar"))

[ edytuj ] Wywyoływanie metody statycznej

Funkcja string → integer występująca w języku Scheme .

(defn string→integer
  ([str]
     (Integer/parseInt str 10))
  ([str base]
     (Integer/parseInt str base)))

[ edytuj ] GUI

Użycie biblioteki Swing .

(javax.swing.JOptionPane/showMessageDialog nil "Hello world!")

[ edytuj ] Zobacz też

[ edytuj ] Linki zewnętrzne

Wikibooks-logo.svg
Zobacz publikację na Wikibooks :
Clojure Programming

[ edytuj ] Bibliografia

  • Rationale . W: Rich Hickey [on-line]. clojure.org. [dostęp 2011-07-18].

Przypisy

  1. Rich Hickey: Pierwszy rok Clojure'a ( ang. ). 16 października 2008. [dostęp 2011-07-18].
  2. 2,0 2,1 Rich Hickey: Znaczenie i wymowa Clojure ( ang. ). 5 stycznia 2009. [dostęp 2011-07-18].

Wyszkowski w procesie o "Bolka" chce przesłuchania ponad 80 świadków
Przesłuchania przed sądem ponad 80 świadków, w tym 25 b. funkcjonariuszy SB, chce b. działacz Wolnych Związków Zawodowych Krzysztof Wyszkowski pozwany przez Lecha Wałęsę za wypowiedź o agenturalnej przeszłości.



Byli szefowie WSI: Bohater akcji "Zen" wciąż zagrożony
Zemstą terrorystów nadal zagrożony jest Aleksander Makowski, główny uczestnik tajnej operacji "Zen" w Afganistanie, ujawnionej w raporcie z weryfikacji Wojskowych Służb Informacyjnych - twierdzą byli szefowie WSI.



Breivik: Nie będę składał apelacji, jeśli uznają mnie za winnego
Sprawca zamachu bombowego w Oslo i masakry na wyspie Utoya w lipcu 2011 roku Anders Behring Breivik powiedział w czwartek, że jeśli sąd uzna go za winnego, to nie będzie składał apelacji, nawet jeśli zostanie skazany na długoletnią karę więzienia.



W Sejmie wniosek o wotum nieufności dla minister edukacji
"Świadectwo z czarnym paskiem za zniszczenie polskiej edukacji" dostała w Sejmie minister edukacji Krystyna Szumilas podczas debaty nad wnioskiem PiS o odwołanie jej ze stanowiska szefowej resortu. Wręczył je w imieniu wnioskodawców poseł Sławomir Kłosowski.



Benedykt XVI o krzyżu w Nowej Hucie
Benedykt XVI powiedział, że dotykający Europę kryzys jest "duchowy i moralny", a jego przyczyną jest porzucenie Boga i "wymiaru nadprzyrodzonego". W przemówieniu podczas spotkania z włoskimi biskupami papież przypomniał sprawę krzyża w Nowej Hucie.



Home Page , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,