Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

DrRacket

The Racket Programming Environment

racket 설치 (raco 도 같이 설치된다)

Windows

linux (ubuntu)

sudo apt-get install racket

macOs

brew install --cask racket

왜 DrRacket

PLr5rs함수 재정의GUI IDE
DrRacketRacketOXDrRacket
MITSchemeSchemeOOEdwin (GNU Emacs clone)
GNU GuileSchemeOOX
CHICKEN SchemeSchemeOOX
SBCLCommon LispXOSlt Plugin for JetBrains IDEs
LispWorksCommon LispXOLispWorks
  • Common Lisp로 하는건 일단 배제하고,
  • Emacs 사용이 자유로운 사람이라면, 함수를 계속 덮어쓰므로 Scheme구현체 중 하나를 선택하면 좋다.
  • 단점! 물론 불러온 함수 재정의가 안되는 치명적인 단점과 필요에 따라 추가적인 racket문법을 익혀야 한다는 단점이 있다.
  • 장점! 설치도 간편. IDE를 지원하는게 DrRacket이 유일. 디버거도 그럭저럭 쓸만하고, racket 패키지들도 유용하고 문서화가 잘 되어 있다.
  • 단점도 엄청 치명적이긴 한데 IDE지원이라는 장점이 진입장벽을 낮춤으로써 단점보다 조금 더 낫다고 생각했다.

흔히 쓰게될 단축키

단축키
파일 실행Ctrl + R / F5
코드 포맷Ctrl + I
코드 <=> Repl 전환Ctrl + F6shift-focus
λ 문자 삽입Ctrl + \insert λ#lang racket에선 lambda대신 λ도 가능
자동완성Ctrl + /Complete Word
파일 버퍼 되돌리기Ctrl + Shift + ERevert외부 에디터에서 파일을 수정해도 자동으로 버퍼를 갱신하지 않으니 외부에서 파일 수정시 버퍼 초기화 용도
인덴트 가이드Ctrl + Shift + IShow Indent Guides
  • 정의로 가기는 단축키가 없다
    • 함수 이름 우클릭 > Jump to definition of {blabla}? 클릭

Tip

SICP가 설치가 안되어 있다면

코드 색깔 바꾸기

코드 포맷

  • 메뉴> Racket > Reindent All
  • 혹은 단축키 Ctrl + I
  • 혹은 전체 선택(Ctrl + A) 후 Tab

백업파일(.bak) 생성 안되게

  • 메뉴> Edit > Preferences...
    • General 탭
      • Make backups for unsaved files 체크 해제
      • Create first-change files 체크 해제

Emacs 키 바인딩이 그립다면

쓰레딩 매크로( ~> / ~>> )를 사용하고 싶다면

  • threading
    • clojure -> / ->> 와는 다르게 ~> / ~>> 이다
#lang sicp
(#%require threading)

(~> 2 (/ 5))
;;=> 2/5

(~>> 2 (/ 5))
;;=> 5/2

유닛테스트를 하고 싶다면?

#lang sicp

(#%require rackunit)

(check-equal? (+ 1 2) 3)
;; (check-equal? <expected> <actual> <message>)

DrRacket 디버거 사용이 힘들어 그냥 쉽게 출력해서 보고 싶다면

#lang debug sicp
(+ 1 2 #R(* 3 4))
;;>> {* 3 4} = 12
;;=> 15

함수 수행을 따라가 보고 싶다면

#lang sicp

(define (f x)
  (if (zero? x) 0
      (add1 (f (sub1 x)))))

(#%require (prefix trace: racket/trace))
(trace:trace f)

todo errortrace

"C:\Program Files\Racket\Racket.exe" -l errortrace -t 4_08.rkt

  • https://docs.racket-lang.org/errortrace/using-errortrace.html

todo pretty print

  • https://docs.racket-lang.org/reference/pretty-print.html

TODO sandbox

  • https://docs.racket-lang.org/reference/Sandboxed_Evaluation.html

기타 문법


;; 블록 코맨트( #; )
#;(error "wtf")


;; TODO 설명 필요

(#%require (prefix racket: racket))
(racket:provide (racket:all-defined-out))