Clojure 언어 기본정리

1 minute read

1. 숫자, 분수, 소수, 사칙연산 다른 언어나 비슷하다

1+1
2/3
2/3.0
4*6
4*6.0
 

2. 괄호넣고연산 연산자가 함수로 인정

(+ 1 1)
(/ 2 3)
(/ 2 3.0)
(* 4 6)
(* 4 6.0)

3. 문자열, 키워드, 캐릭터, 불린

"bat"
:bat
\c
 
true
false

4. 컬렉션Collection - 목록형 모든 컬렉션은 Immutable, Persistent Lisp의 벡터는 인덱스가 있고 리스트는 인덱스가 없다 List ‘(1 2 3 4) - LinkedList Vector [1 2 3 4] - ArrayList

'(1 2 "bat" :dog)
[1 2 "bat" :dog]
(first ~)
(rest ~)
(last ~)
(count
(nth
컬렉션 합치기
(cons
(cons '(1 2) nil)
(cons '(1 2) '())
항목추가 벡터는 뒤에 리스트는 앞에
(conj

5. 컬렉션Collectino - Map Map {:bat “bat1” “dog” “dog0”}

(get
(:bat
("dog"
(keys
(vals
값추가
(assoc ~ :cot "cot0")
값제거
(dissoc ~ :cot)
(merge

6. 컬렉션Collectino - Set Set #{:bat “dog :cow} 합집합union 차집합difference 교집합intersection

#{:bat "dog :cow}
#{:bat "dog :cow :cow}
(require 'clojure.set)
(clojure.set/union #{:bat :dog :cow} #{:bat :rat}
(clojure.set/difference #{:bat :dog :cow} #{:bat :rat}
(clojure.set/intersection #{:bat :dog :cow} #{:bat :rat}
(get
(:bat ~)
(~ :bat)
(contains? ~ :bat)
(conj ~ :rat)
(disj ~ :rat)

7. def 변수 정의(선언)

(def bat "bat0")
(let [bat "bat0"] bat)
(let [bat "bat0" cow "cow0"] bat)
(let [bat "bat0" cow "cow0"] bat cow))
(let [bat "bat0" cow "cow0"] [bat cow])))
(let [bat "bat0" cow "cow0"] '(bat cow))

8. defn 함수정의 (defn -name [-param0 -param1] -return)

(defn bat [] "bat0")
bat
(bat)

9. fn 익명함수

(fn [] (str "bat0" "dog0"))
((fn [] (str "bat0" "dog0")))
#(str "bat0" "dog0")
(#(str "bat0" "dog0"))
(defn (fn [] (str "bat0" "dog0")))

(#(str "bat0" "dog0" %) "cow0")
(#(str "bat0" "dog0" % %) "cow0" "rat0")")
(#(str "bat0" "dog0" %0 %1) "cow0" "rat0")
(#(str "bat0" "dog0" %1 %2) "cow0" "rat0")
(#(str "bat0" "dog0" %1 %3) "cow0" "rat0")

10. ns 네임스페이스

(ns cat.house)
(def cat "cat0")
cat
(ns dog.house)