리스프에서 멋진 3가지.
(black7375.tistory.com)Racket팀의 좋아요를 말미암아
리스프 계열 언어에서 선진적으로 구현된 부분들을 소개합니다.
- Racket의 가장 강력하고 안전한 매크로
1.1 안전한 매크로
- C vs Racket: 매크로가 구문이어야 하는 이유
- Common Lisp vs Racket: 위생적 매크로여야 하는 이유
1.2 강력한 매크로
- Syntax 객체를 이용한 Transform 개요
- Syntax 객체와 리스트 다루기
- define-syntax로 직접 Transform 해보기
- 패턴매칭 매크로로 선언적으로 작성하기
- 매크로 정의시 컴파일타임과 런타임
- 함수나 변수를 정의하는 매크로 - Racket의 Thread와 함께하는 동적바인딩
2.1 동적 바인딩이란?
2.2 왜 동적 바인딩인가?
- 전역변수에서 불필요한 전역 오염을 방지
- 컨텍스트에서 불필요한 매개변수 제거
- 의존성 주입에서 불필요한 보일러 플레이트 줄이기
2.3 Thread 안전한 동적 바인딩 - Common Lisp의 동적이고 유연한 객체지향 시스템
3.1 다양한 객체지향 구현
3.2 유연한 메서드 시스템
- 클래스 정의를 수정하지 않는 확장 가능한 메서드
- 객체 타입에 따른 다중 디스패치
- 횡단 관심사 제어를 위한 메서드 조합
3.3 동적인 객체
3.4 객체지향 시스템을 확장하는 MOP(Meta-Object Protocol)
- 생성시 상태제어를 해보는 카운터
- 기존 기능 확장을 해보는 타입 검사기
- 클래스 정의에 키워드를 추가하여 값 검증해보기
3.5 다중상속
- C++의 다중상속 문제
- CPL(Class Precedence List) 규칙
HtDP(How to Design Programs) 라고 SICP의 쉬운 버전으로 공부를 하다가 접하게 되었는데요.
문법이 깔끔하고 잘만들어져 있더라고요.
그래서 관심을 가지고 이것저것 살펴보다보니 설계가 잘 된 부분들이 생각보다 많드란..