Lisp
-
간단한 데이타베이스를 TDD 로 개발하기 3회: add-recordProgrammer/Programming 2014. 3. 19. 10:02
이번 강의에서는 CD 레코드를 DB에 추가하는 함수 add-record를 개발한다. 이 함수는 인자로 CD 레코드를 받는다. 비어있는 DB에 add-record로 레코드를 추가하면, (add-record (make-cd "Home" "Dixie Chicks" 9 t)) dump-db는 다음과 같은 결과를 출력한다. '((:title "Home" :artist "Dixie Chicks" :rating 9 :ripped t)) 1차 테스트의 구현과 통과는 쉽고 간단함으로 빠르게 진행하자. (define-test add-record-test (add-record (make-cd "Home" "Dixie Chicks" 9 t)) (assert-equal '((:title "Home" :artist "Dixie ..
-
간단한 데이타베이스를 TDD 로 개발하기 2회: make-cdProgrammer/Programming 2014. 3. 19. 09:57
이번에는 CD의 레코드를 만드는 함수를 만들어보자. 함수의 이름은 make-cd이며 인자로 제목, 아티스트, 순위, 리핑 여부를 전달한다. (make-cd "Home" "Dixie Chicks" 9 t) 반환값은 이전 강의에서 언급한 속성 리스트를 출력한다. (:title "Home" :artist "Dixie Chicks" :rating 9 :ripped t) 우리가 예상하는 동작을 토대로 테스트를 작성하자. (define-test make-cd-test (assert-equal '(:title "Home" :artist "Dixie Chicks" :rating 9 :ripped t) (make-cd "Home" "Dixie Chicks" 9 t))) 우선 가장 단순한 방법으로 위 테스트를 통과시키자...
-
간단한 데이타베이스를 TDD 로 개발하기 1회: dump-dbProgrammer/Programming 2014. 3. 19. 09:47
앞으로 몇번에 걸쳐서 연재할 내용은 Peter Seibel가 쓴 “Practical Common Lisp” 중에 3장 “A Simple Database”를 테스트 주도 개발(Test-Driven Development: TDD)로 재구성한 것이다. 책과 비교해서 프로그램의 작성 순서만 달리할 뿐 소스는 책의 것과 같다. 이번 연재에는 테스트 프레임워크로 lisp-unit을 이용한다 CD 데이타베이스인 cd-db 패키지와 테스트가 있는 cd-tests 패키지로 분리하여 개발을 시작한다. (defpackage :cd-db (:use :common-lisp) (:export #:dump-db)) (in-package :cd-db) (defpackage :cd-tests (:use :common-lisp :lis..
-
DEFPARAMETER와 DEFVAR의 차이Programmer/Programming 2013. 1. 17. 16:23
Lisp에서 전역 변수(global variable)를 정의하는 방법은 DEFPARAMETER와 DEFVAR를 사용하는 두가지가 있다. 이 둘의 차이는 재정의(redefine) 이후 변수의 값이 정의대로 갱신되는지 여부이다. DEFPARAMETER는 재정의 할 때마다 새로운 값으로 갱신되는 반면, DEFVAR는 변수의 값이 계속 유지가 된다. 다시 말하면, DEFVAR는 바인딩 되지 않았을 때(unbound), 초기값으로 설정이 된다. > (defparameter *foo* 5) *FOO* > *foo* 5 > (defparameter *foo* 6) *FOO* > *foo* 6 > (defvar *bar* 5) *BAR* > *bar* 5 > (defvar *bar* 6) *BAR* > *bar* 5 ..