Szukaj…


Uwagi

wprowadź opis zdjęcia tutaj

Clojure jest dynamicznie pisanym językiem programowania ogólnego przeznaczenia o składni Lisp.

Jego funkcje domyślnie obsługują styl programowania z pierwszorzędnymi funkcjami i niezmiennymi wartościami. Używanie zmiennych, które można ponownie przypisać, nie jest tak łatwe w Clojure, jak w wielu językach głównego nurtu, ponieważ zmienne muszą być tworzone i aktualizowane jak obiekty kontenerowe. Zachęca to do korzystania z czystych wartości, które pozostaną takie, jakie były w momencie ich ostatniego oglądania. Zwykle sprawia to, że kod jest znacznie bardziej przewidywalny, testowalny i umożliwia współbieżność. Działa to również w przypadku kolekcji, ponieważ wbudowane struktury danych Clojure są trwałe.

Aby uzyskać wydajność, Clojure obsługuje podpowiedzi typu, aby wyeliminować niepotrzebne odbicie, jeśli to możliwe. Grupy zmian w trwałych kolekcjach można również wprowadzić w przejściowych wersjach, zmniejszając liczbę zaangażowanych obiektów. Nie jest to konieczne przez większość czasu, ponieważ trwałe kolekcje są szybko kopiowane, ponieważ udostępniają większość swoich danych. Ich gwarancje wydajności nie są dalekie od ich zmiennych odpowiedników.

Oprócz innych funkcji Clojure posiada również:

  • programowa pamięć transakcyjna (STM)
  • kilka operacji podstawowych współbieżnych nie wymagających ręcznego blokowania (atom, agent)
  • transformatory sekwencyjne (przetworniki),
  • funkcjonalne narzędzia do manipulacji drzewem (zamki)

Ze względu na prostą składnię i wysoką rozszerzalność (za pomocą makr, implementacji podstawowych interfejsów i refleksji), niektóre często spotykane funkcje językowe można dodać do Clojure z bibliotekami. Na przykład core.typed zapewnia sprawdzanie typu statycznego, core.async zapewnia proste mechanizmy współbieżności oparte na core.logic , core.logic wprowadza programowanie logiki.

Zaprojektowany jako język hostowany, może współpracować z platformą, na której działa. Podczas gdy głównym celem jest JVM i cały ekosystem za Javą, alternatywne implementacje mogą również działać w innych środowiskach, takich jak ClojureCLR działający w środowisku uruchomieniowym Common Language lub ClojureScript działający w środowisku wykonawczym JavaScript (w tym przeglądarki internetowe). Chociaż alternatywne implementacje mogą nie zawierać niektórych funkcji wersji JVM, nadal są uważane za jedną rodzinę języków.

Wersje

Wersja Zmień dziennik Data wydania
1.8 Ostatni dziennik zmian 19.01.2016
1.7 Dziennik zmian 1.7 30.06.2015
1.6 Dziennik zmian 1.6 2014-03-25
1.5.1 Dziennik zmian 1.5.1 2013-03-10
1.4 Dziennik zmian 1.4 15.04.2012
1.3 Dziennik zmian 1.3 23.09.2011
1.2.1 25.03.2011
1.2 19.08.2010
1.1 04.01.2010
1.0 2009-05-04

Instalacja i konfiguracja

Opcja 1: Leiningen

Wymaga JDK 6 lub nowszego.

Najłatwiejszym sposobem na rozpoczęcie pracy z Clojure jest pobranie i zainstalowanie Leiningen, de facto standardowego narzędzia do zarządzania projektami Clojure, a następnie uruchomienie lein repl aby otworzyć REPL .

Linux

curl https://raw.githubusercontent.com/technomancy/leiningen/stable/bin/lein > ~/bin/lein
export PATH=$PATH:~/bin
chmod 755 ~/bin/lein

OS X

Postępuj zgodnie z powyższymi instrukcjami dla systemu Linux lub zainstaluj za pomocą menedżerów pakietów macOS.

Zainstaluj z Homebrew

brew install leiningen

Zainstaluj z MacPorts

Najpierw zainstaluj Clojure

sudo port -R install clojure

Zainstaluj Leiningen , narzędzie do kompilacji dla Clojure

sudo port -R install leiningen
lein self-install

Windows

Zobacz oficjalną dokumentację .

Opcja 2: oficjalna dystrybucja

Wymaga środowiska JRE 6 lub nowszego.

Wersje Clojure są publikowane jako proste pliki JAR do uruchomienia w JVM. Tak zwykle dzieje się w narzędziach do budowania Clojure.

  1. Wejdź na http://clojure.org i pobierz najnowsze archiwum Clojure

  2. Wyodrębnij pobrany plik ZIP do wybranego katalogu

  3. Uruchom java -cp clojure-1.8.0.jar clojure.main w tym katalogu

    Może być konieczne zastąpienie clojure-1.8.0.jar w tym poleceniu nazwą pliku JAR, który rzeczywiście pobrałeś.

    Aby uzyskać lepsze wrażenia REPL z wiersza poleceń (np. rlwrap poprzednich poleceń), możesz zainstalować rlwrap : rlwrap java -cp clojure-1.8.0.jar clojure.main

Opcja 3: Uruchomienie

Wymaga JDK 7 lub nowszego.

Boot to wielofunkcyjne narzędzie do budowania Clojure. Zrozumienie tego wymaga pewnej wiedzy o Clojure, więc może nie być najlepszą opcją dla początkujących. Zobacz stronę internetową (kliknij Rozpocznij tam), aby uzyskać instrukcje instalacji.

Po zainstalowaniu i w PATH możesz uruchomić boot repl dowolnym miejscu, aby uruchomić REPL Clojure.

"Witaj świecie!" w REPL

Społeczność Clojure kładzie duży nacisk na interaktywny rozwój, więc całkiem sporo interakcji z Clojure odbywa się w ramach REPL (read-eval-print-loop) . Po wprowadzeniu do niego wyrażenia Clojure odczytuje je, ocenia je i drukuje wynik oceny, wszystko w pętli .

Powinieneś już być w stanie uruchomić Clojure REPL. Jeśli nie wiesz jak, postępuj zgodnie z sekcją Instalacja i konfiguracja w tym temacie. Po uruchomieniu wpisz w nim następujące polecenie:

(println "Hello, world!")

Następnie naciśnij Enter . To powinno wydrukować Hello, world! , po której następuje wartość zwracana tego wyrażenia, nil .

Jeśli chcesz natychmiast uruchomić clojure, spróbuj online REPL. Na przykład http://www.tryclj.com/ .

Stwórz nową aplikację

Po wykonaniu powyższych instrukcji i zainstalowaniu Leiningen rozpocznij nowy projekt, uruchamiając:

lein new <project-name>

Spowoduje to skonfigurowanie projektu Clojure z domyślnym szablonem Leiningen w folderze <project-name> . Istnieje kilka szablonów dla Leiningen, które wpływają na strukturę projektu. Najczęściej używany jest szablon „aplikacja”, który dodaje funkcję główną i przygotowuje projekt do spakowania do pliku jar (którego główną funkcją jest punkt wejścia aplikacji). Można to osiągnąć, uruchamiając:

lein new app <project-name> 

Zakładając, że użyłeś szablonu aplikacji do utworzenia nowej aplikacji, możesz sprawdzić, czy wszystko zostało poprawnie skonfigurowane, wchodząc do utworzonego katalogu i uruchamiając aplikację, używając:

lein run

Jeśli widzisz Hello, World! na konsoli jesteś gotowy i możesz rozpocząć tworzenie aplikacji.

Możesz spakować tę prostą aplikację do dwóch plików jar za pomocą następującego polecenia:

lein uberjar

"Witaj świecie!" za pomocą Boot

Uwaga: przed wypróbowaniem tego przykładu musisz zainstalować Boot. Zobacz sekcję Instalacja i konfiguracja, jeśli jeszcze jej nie zainstalowałeś.

Boot pozwala na tworzenie wykonywalnych plików Clojure za pomocą linii shebang (#!). Umieść następujący tekst w wybranym pliku (w tym przykładzie założono, że znajduje się on w „bieżącym katalogu roboczym” i nazywa się hello.clj ).

#!/usr/bin/env boot

(defn -main [& args]
  (println "Hello, world!"))

Następnie zaznacz go jako wykonywalny (jeśli dotyczy, zazwyczaj uruchamiając chmod +x hello.clj ).
... i uruchom go ( ./hello.clj ).

Program powinien wypisać „Witaj, świecie!” i koniec.

Utwórz nową aplikację (z bootowaniem)

boot -d seancorfield/boot-new new -t app -n <appname>

To polecenie każe bootowi pobrać zadanie boot-new z https://github.com/seancorfield/boot-new i wykonać zadanie z szablonem app (patrz link do innych szablonów). Zadanie utworzy nowy katalog o nazwie <appname> z typową strukturą aplikacji Clojure. Aby uzyskać więcej informacji, zobacz wygenerowany plik README.

Aby uruchomić aplikację: boot run . Inne polecenia są określone w build.boot i opisane w README.



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow