# 리스프에서 멋진 3가지.

> Clean Markdown view of GeekNews topic #17569. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=17569](https://news.hada.io/topic?id=17569)
- GeekNews Markdown: [https://news.hada.io/topic/17569.md](https://news.hada.io/topic/17569.md)
- Type: news
- Author: [alstjr7375](https://news.hada.io/@alstjr7375)
- Published: 2024-11-03T13:39:56+09:00
- Updated: 2024-11-03T13:39:56+09:00
- Original source: [black7375.tistory.com](https://black7375.tistory.com/98)
- Points: 15
- Comments: 5

## Summary

Racket의 매크로 시스템은 안전하고 강력하며, 구문 수준에서의 변환을 통해 코드의 유연성을 높입니다. Racket의 동적 바인딩은 전역 오염을 방지하고, 불필요한 매개변수를 제거하며, 의존성 주입에서 보일러 플레이트를 줄이는 데 유용합니다. Common Lisp의 객체지향 시스템은 다양한 구현과 유연한 메서드 시스템을 제공하며, MOP를 통해 객체지향 시스템을 동적으로 확장할 수 있습니다.

## Topic Body

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

## Comments



### Comment 30813

- Author: kayws426
- Created: 2024-11-06T09:48:50+09:00
- Points: 1

나중에 공부할때 꼭 읽어봐야겠어요!!

### Comment 30864

- Author: alstjr7375
- Created: 2024-11-06T13:23:34+09:00
- Points: 1
- Parent comment: 30813
- Depth: 1

감사합니다!! ㅎㅎㅎ

### Comment 30785

- Author: roxie
- Created: 2024-11-06T02:34:43+09:00
- Points: 1

어떻게 여러 방언 중에서도 racket 의 매력에 빠지게 되셨는지 궁금합니다!

### Comment 30866

- Author: alstjr7375
- Created: 2024-11-06T13:27:10+09:00
- Points: 2
- Parent comment: 30785
- Depth: 1

[HtDP(How to Design Programs)](https://en.wikipedia.org/wiki/How_to_Design_Programs) 라고 SICP의 쉬운 버전으로 공부를 하다가 접하게 되었는데요.  
문법이 깔끔하고 잘만들어져 있더라고요.  
  
그래서 관심을 가지고 이것저것 살펴보다보니 설계가 잘 된 부분들이 생각보다 많드란..

### Comment 31089

- Author: roxie
- Created: 2024-11-09T19:58:05+09:00
- Points: 1
- Parent comment: 30866
- Depth: 2

감사합니다! 그런 책이 있군요
