clojure 튜토리얼
Clojure 시작하기
수색…
비고
Clojure 는 Lisp 구문을 사용하는 동적 유형화 된 범용 프로그래밍 언어입니다.
이 기능은 기본적으로 일류 함수 및 불변 값을 사용하여 프로그래밍의 기능 스타일을 지원합니다. Clojure에서 재 할당 가능한 변수를 사용하는 것은 많은 주류 언어 에서처럼 쉽지 않습니다. 왜냐하면 변수는 컨테이너 객체처럼 생성되고 업데이트되어야하기 때문입니다. 이것은 마지막으로 본 순간의 상태를 유지할 수있는 순수한 가치의 사용을 장려합니다. 이는 일반적으로 코드를 훨씬 더 예측 가능하고 테스트 가능하며 동시성을 가능하게합니다. 이것은 Clojure의 내장 데이터 구조가 지속적이기 때문에 콜렉션에도 적용됩니다.
성능을 위해 Clojure는 가능한 경우 불필요한 리플렉션을 제거하기 위해 유형 힌팅을 지원합니다. 또한 지속적인 컬렉션에 대한 변경 그룹을 임시 버전에 적용하여 관련된 객체의 양을 줄일 수 있습니다. 영구 콜렉션은 대부분의 데이터를 공유하므로 복사가 빠르기 때문에 대부분의 경우에는 필요하지 않습니다. 그들의 성능 보장은 그들의 대응 가능한 대응 물과 그리 멀지 않습니다.
그 중에서도 Clojure는 다음과 같은 기능을 제공합니다.
- 소프트웨어 트랜잭션 메모리 (STM)
- 수동 잠금 (atom, agent)을 수반하지 않는 여러 가지 동시성 프리미티브
- 구성 가능한 시퀀스 트랜스포머 (트랜스 듀서),
- 기능 트리 조작 시설 (지퍼)
간단한 구문과 높은 확장 성 (매크로, 코어 인터페이스 및 리플렉션 구현)으로 인해 일반적으로 사용되는 언어 기능을 라이브러리를 사용하여 Clojure에 추가 할 수 있습니다. 예를 들어 core.typed
는 정적 유형 검사기를 제공하고 core.async
는 간단한 채널 기반 동시성 메커니즘을 제공하며 core.logic
은 논리 프로그래밍을 제공합니다.
호스팅 된 언어로 설계된이 플랫폼은 실행되는 플랫폼과 상호 운용 될 수 있습니다. 주요 대상은 JVM과 Java의 전체 생태계이지만, Common Language Runtime에서 실행되는 ClojureCLR 또는 JavaScript 런타임 (웹 브라우저 포함)에서 실행되는 ClojureScript와 같은 다른 환경에서도 대체 구현을 실행할 수 있습니다. 대체 구현에는 JVM 버전의 일부 기능이 없을 수도 있지만 여전히 하나의 언어 패밀리로 간주됩니다.
버전
번역 | 변경 로그 | 출시일 |
---|---|---|
1.8 | 최신 변경 로그 | 2016-01-19 |
1.7 | 변경 로그 1.7 | 2015-06-30 |
1.6 | 변경 로그 1.6 | 2014-03-25 |
1.5.1 | 로그 1.5.1 변경 | 2013-03-10 |
1.4 | 변경 로그 1.4 | 2012-04-15 |
1.3 | 변경 로그 1.3 | 2011-09-23 |
1.2.1 | 2011-03-25 | |
1.2 | 2010-08-19 | |
1.1 | 2010-01-04 | |
1.0 | 2009-05-04 |
설치 및 설정
옵션 1 : Leiningen
JDK 6 이상이 필요합니다.
Clojure를 시작하는 가장 쉬운 방법은 Clojure 프로젝트를 관리하는 사실상의 표준 도구 인 Leiningen을 다운로드하여 설치 한 다음 lein repl
을 실행하여 REPL 을 여는 것입니다.
리눅스
curl https://raw.githubusercontent.com/technomancy/leiningen/stable/bin/lein > ~/bin/lein export PATH=$PATH:~/bin chmod 755 ~/bin/lein
OS X
위의 Linux 단계를 따르거나 macOS 패키지 관리자로 설치하십시오.
Homebrew로 설치
brew install leiningen
MacPorts로 설치
먼저 Clojure를 설치하십시오.
sudo port -R install clojure
Clojure 빌드 도구 인 Leiningen
설치
sudo port -R install leiningen
lein self-install
Windows
공식 문서를 참조하십시오.
옵션 2 : 공식 배포
JRE 6 이상이 필요합니다.
Clojure 릴리스는 간단한 JAR 파일로 게시되어 JVM에서 실행됩니다. 이것은 일반적으로 Clojure 빌드 도구에서 발생합니다.
http://clojure.org로 이동하여 최신 Clojure 아카이브를 다운로드하십시오.
다운로드 한 ZIP 파일을 원하는 디렉토리에 압축 해제하십시오.
해당 디렉토리에서
java -cp clojure-1.8.0.jar clojure.main
을 실행하십시오.해당 명령에서
clojure-1.8.0.jar
을 실제로 다운로드 한 JAR 파일의 이름으로 대체해야 할 수도 있습니다.보다 나은 명령 행 REPL 환경 (예 : 이전 명령 순환)을 위해
rlwrap
을 설치하고자 할 수 있습니다.rlwrap java -cp clojure-1.8.0.jar clojure.main
옵션 3 : 부팅
JDK 7 이상이 필요합니다.
Boot는 다목적 Clojure 빌드 도구입니다. 이를 이해하려면 Clojure에 대한 지식이 필요하므로 초보자에게 최선의 선택이 아닐 수도 있습니다. 설치 지침 은 웹 사이트 ( 시작하기를 클릭 하십시오 )를 참조하십시오.
설치가 완료되고 PATH
에 있으면 Clojure REPL을 시작할 때 어디에서든지 boot repl
실행할 수 있습니다.
"안녕, 세상!" REPL에
Clojure 커뮤니티는 대화식 개발에 중점을두고 있으므로 Clojure와의 많은 상호 작용이 REPL (read-eval-print-loop) 내에서 발생합니다. 당신이 입력은 그것에 표현은 Clojure의 그것을 읽고, 그것을 평가하고, 모든 루프, 평가의 결과를 출력합니다.
지금까지 Clojure REPL을 시작할 수 있어야합니다. 방법을 모르는 경우이 항목의 설치 및 설정 섹션을 따르십시오. 일단 실행 시키면 다음과 같이 입력하십시오 :
(println "Hello, world!")
그런 다음 Enter 키를 누릅니다 . Hello, world!
출력해야합니다 Hello, world!
이 표현식의 반환 값 nil
이 뒤 따른다.
즉시 clojure를 실행하려면 온라인 REPL을 사용해보십시오. 예 : http://www.tryclj.com/ .
새 응용 프로그램 만들기
위의 지침에 따라 Leiningen을 설치 한 후 다음을 실행하여 새 프로젝트를 시작하십시오.
lein new <project-name>
이렇게하면 Clojure 프로젝트가 <project-name>
폴더 내의 기본 Leiningen 템플릿으로 설정됩니다. Leiningen에는 프로젝트의 구조에 영향을주는 몇 가지 템플릿이 있습니다. 가장 일반적으로 사용되는 템플리트 "app"는 주 기능을 추가하고 프로젝트가 jar 파일 (주 기능이 응용 프로그램의 진입 점임)에 들어갈 수 있도록 준비합니다. 다음과 같이 실행하면됩니다.
lein new app <project-name>
app-template을 사용하여 새 응용 프로그램을 만들었다 고 가정하면 만들어진 디렉토리를 입력하고 다음을 사용하여 응용 프로그램을 실행하여 모든 것이 올바르게 설정되었는지 테스트 할 수 있습니다.
lein run
당신이여 Hello, World!
를 보는 경우에 Hello, World!
콘솔에서 모든 것을 설정하고 응용 프로그램을 만들 준비가되었습니다.
다음의 명령을 사용하여이 간단한 애플리케이션을 두 개의 jar 파일로 압축 할 수 있습니다.
lein uberjar
"안녕, 세상!" 부팅 사용
참고 : 이 예제를 사용하기 전에 Boot를 설치해야합니다. 아직 설치하지 않은 경우 설치 및 설정 절을 참조하십시오.
Boot는 shebang (#!) 행을 사용하여 실행 가능한 Clojure 파일을 만들 수 있습니다. 선택한 파일에 다음 텍스트를 넣으십시오 (이 예제는 "현재 작업 디렉토리"에 있다고 가정하고 hello.clj
라고 hello.clj
).
#!/usr/bin/env boot
(defn -main [& args]
(println "Hello, world!"))
그런 다음이를 실행 파일로 표시하십시오 (해당되는 경우 일반적으로 chmod +x hello.clj
실행 chmod +x hello.clj
).
... ( ./hello.clj
)를 실행하십시오.
프로그램은 "Hello, world!"를 출력해야합니다. 끝내라.
새 응용 프로그램 만들기 (부팅 사용)
boot -d seancorfield/boot-new new -t app -n <appname>
이 명령은 boot-new
라는 작업을 https://github.com/seancorfield/boot-new 에서 가져 와서 app
템플릿으로 작업을 실행하도록합니다 (다른 템플릿의 링크 참조). 이 작업은 일반적인 Clojure 응용 프로그램 구조와 함께 <appname>
이라는 새 디렉토리를 만듭니다. 자세한 내용은 생성 된 README를 참조하십시오.
: 응용 프로그램 실행하려면 boot run
. 다른 명령은 build.boot
에 지정되며 README에 설명되어 있습니다.