open:defmacro

defmacro

macroexpand 일어나는 과정을 확인하는 데 도움이 되는 도구

(defmacro if-not [condition expression]
  (list 'if condition nil expression))

(defmacro if-not
  ([condition expression]
    (list 'if condition nil expression))
  ([condition expression2 expression3]
    (list 'if condition expression3 expression)))

(defmacro when (1)
  "Evaluates test. If logical true, evaluates body in an implicit do."
  {:added "1.0"} (2)
  [test & body] (3)
  (list 'if test (cons 'do body))) (4)

  1. defmacro를 사용하여 when이라는 매크로를 만든다
  2. 언어의 어느 버전에 추가되었는지를 나타내는 맵이다
  3. 논리적 검사식을 test 인수로 받고 식의 본문을 나머지 인수들인 body로 받았다
  4. 이것은 if 문 안에 test 인수를 넣고 body 인수를 do로 감싼다. 여기서 do는 출력과 같은 부수 효과를 내는 식을 평가한다.

  • open/defmacro.txt
  • 마지막으로 수정됨: 2022/02/17 02:22
  • 저자 127.0.0.1