# Clojure
## 설치
brew install clojure
## Docs
- [[A History of Clojure]]
- [[clojure lib]]
- [[clojure guides]]
- [[Threading Macros Guide]]
- [[clojure web framework]]
- [[Learning Clojure]]
- brew install openjdk
- brew install leiningen
## Create Project
- [[clojure-cli]]
- [[leiningen]]
## Library
- [[fulcro]]
- [[quil]]
- http : [[hato]]
## Syntax
- [[Atomic Data Types]]
- [[Data Structures]]
- [[clojure_cheatsheet|cheatsheet]]
- [[values]]
- [[clojure-by-example]]
- [[typed clojure]]
- [[클로저 스타일 가이드]]
## Clojure is a Lisp
- [[Dynamic]]
- [[Code as data]]
- [[Reader]]
- [[Small core]]
- [[Sequences]]
- [[Syntactic abstraction]]
## 매크로
- [[Hygienic]]
- [[Thread last|->>]]
## 격언
- 클로저 프로그래머는 클로저로 애플리케이션을 작성하는 것이 아닐, 클로저로 애플리케이션을 작성하는 데 사용되는 언어를 작성하는 것이다.
## Learn
- https://practical.li/
- https://clojurebridge.org/
- Clojure from the ground up
- https://4clojure.oxal.org/
- Clojure Koans
- https://clojure.org/api/cheatsheet
- https://shaunlebron.github.io/t3tr0s-slides/#0
- https://github.com/unclebob/spacewar
- https://github.com/clojure-kr/clojure-complete
- https://johngrib.github.io/wiki/clojure/
## 클로저 참조 타입
^ ^ [[ref]] ^ [[agent]] ^ [[atom]] ^ [[var]] ^
| [[조정 여부]] | ✅ | | | |
| [[비동기]] | | ✅ | | |
| [[반복 가능 여부]] | ✅ | | ✅ | |
| [[스레드-로컬]] | | | | ✅ |
[[ref]]의 독특한 특징은 관리된다는 점이다.
다시 말하면 여러 참조들을 읽고 쓸 때 경합 조건이 발생하지 않도록 보장해준다는 뜻이다
[[비동기]]는 업데이트 요청은 나중에 다른 스레드에서 실행되도록 큐에 입력되고, 요청을 생성했던 스레드는 계속해서 동작하는 것을 의미한다.
[[반복 가능 여부]]는 참조 값 업데이트를 마치는 동작을 추정하여 반복할 수 있는지와 관련한 특성이다
마지막으로 [[스레드-로컬]]은 변경 정보를 단일 스레드의 상태에 격리시켜 스레드 안전성을 확보하는 것을 말한다
## Docs
- [[Sequences]]
- [[clojure_namespace|Namespace]]
- [[clojure_file|File]]
- [[clojure_lib|lib]]
- [[metadata]]
- [[destructuring]]
- [[shorthand]]
- [[macro]]
- [[gensym]]
- [[protocol]]
- [[dynamic var]]
- [[core collection functions]]
- [[Learn Clojure]]
- [[Clojure Web Framework]]
- [[Clojure Design Patterns]]
- [[unclebob_spacewar]]
- [[project.clj]]
- [[clojure.spec.alpha]]
- [[clojure syntax]]
## 책
- [[클로저 시작하기]]
- [[The Joy Of Clojure]]
- [[Programming Clojure]]
### Data structures
{{ https://i.imgur.com/GDeSWSV.jpg?400 }}
### Code as data
{{ https://i.imgur.com/TwuSdQ1.jpg?400 }}