클로저 1
- 8. 매크로 – 개발자 자신의 목적대로 변형해서 사용할 수 있도록 만들어 주는 도구이다.
- 9. 다른 언어에서는 private나 class의 의미가 정해져 있는데 Lisp는 매크로를 이 용해서 새로운 의미로 줄 수 있다. private의의미를 ‘단위 테스트와 직렬화의 경우에는 public이지만, 배포 시에는 private’으로 의미를 바꿀 수 있다.
- 10. Lisp는괄호로만 이루어져 있어서 간단하고일관성이 있지만 초보자에게는 걸림돌이이다. 클로저는 이런 어려움을 덜어 주기 위해서 몇 가지 방법을 사용하고 있다.
- 11. 클로저는 리스트, 맵, 집합 등 다양한 자료 구조를 표현하기 위해 간단한 문법을 제공한다. 예) 함수의 인자는 리스트 대신 벡터로 표현 (즉, () 대신 []으로 표현한다)
- 15. 함수형 언어 특성 함수는 ‘일급 객체’다. 즉, 함수가 실행 중에 생성되고, 인자를 넘겨지며, 반환될 수 있고, 다른 자료구조처럼 다뤄질 수 있다. 데이터 값은 변경 불가능하다. 함수들은 부수효과를 가지지 않는다.
- 16. 과거에 함수형 언어들이 별다른 관심을 얻지 못했는데 , 클로저는 왜 주목을 받는 것인가?
- 17. 시기 – 멀티코어 하드웨어의 수가 대폭 늘어나고 있고, 함수형 언어는 멀티코어에 이점을 활용할 수 있는 명확한 방법을 제공 대부분 함수형 언어는 동적이지만 클로저는 동적이기 때문에 배우고 접근하기 쉽다. 클로저는 자바 호출은 함수형 접근방식을 취하지 않는다.
- 19. 함수형 언어이기 때문에 데이터를 변경하는 것이 불가능하기 때문에 다른 스레드에 의해 데이터 변경되어 오류 나지 않는다. 또한 트랜잭션을 이용해서 어느 순서로 잠궈야 할지 고민할 필요가 없게 된다.
- 21. 클로저는 자바를 별도의 계층 없이 바로 호출이 이루어 진다. 클로저는 자바를 편하게 호출하기 위해서 여러가지 문법 장치를 있다. (3장에서 자세히~)
- 33. (hello “Stu”) 출력값- “Hello, Stu” (hello “Clojure”) 출력값– “Hello, Clojure” (str *1 “ and” *2) “Hello, Clojureand Hello, Stu”
- 36. require – 클로저 라이브러리 로드 (require ‘examples.introdution) (take 8 ‘examples.introdution/fibs) 출력 (0 1 1 2 3 5 8 13) 피보나치 수열에 대한 구현 포함
- 37. Refer – 현재 이름공간의 모든 이름을 새로운 이른 공간으로 대응 (refer ‘examples.introdution) (take 8 fibs) 출력 (0 1 1 2 3 5 8 13)
- 38. use – refer 과 require 모두 사용가능 (use ‘examples.introdution) (take 8 fibs) 출력 (0 1 1 2 3 5 8 13) (use :reload-all ‘examples.introdution) (take 8 fibs) 출력 (0 1 1 2 3 5 8 13)