우선 brew로 Racket을 설정하고 racket에서 제공하는 SCHEME BatteryPack을 설치한다.

brew install --cask racket
raco pkg install sicp

racket-mode 설정

emacs에서 문제를 풀기위해서 Paredit과 racket-mode를 설치하고 ob-racket을 설치한다.


(use-package racket-mode
  :config
  (add-hook 'racket-mode-hook (lambda () define-key racket-mode-map (kbd "<f5>") 'racket-run) )
  )

(use-package paredit
  :ensure t
  :config
  (dolist (m '(emacs-lisp-mode-hook
               racket-mode-hook
               racket-repl-mode-hook))
    (add-hook m #'paredit-mode))
  (bind-keys :map paredit-mode-map
    ("{"   . paredit-open-curly)
    ("}"   . paredit-close-curly)
    )
  (unless terminal-frame
    (bind-keys :map paredit-mode-map
      ("M-[" . paredit-wrap-square)
      ("M-{" . paredit-wrap-curly))))

ob-racket 설정

(use-package ob-racket
  :straight (:host github :repo "karohani/ob-racket" :branch "master")
  :after org
  :pin manual
  :config
  :init (cl-pushnew '(racket . t) load-language-alist)
  )
(define (fact-iter product counter max-count)
  (if (> counter max-count)
      product
      (fact-iter (* counter product)
                 (+ counter 1)
                 max-count)))

(fact-iter 1 1 4)