커먼 리스프
-
리스프 개발 팁: 명령창 결과 저장하기Programmer/Programming 2014. 6. 27. 10:38
리스프에서 개발하기 가장 좋은 도구는 REPL 명령창이다. 따라서 저장할 내용을 표준 출력으로 보내면 개발이 수월할 것이다. 예를 들어, 당신은 `MY-SAVE' 함수를 개발하고 있다. 이 함수는 인자 `FNAME'으로 받은 파일명에 당신의 데이타를 저장한다. 개발 과정에서 수시로 파일을 열어서 내용을 확인해야 한다. 불편하다. REPL 명령창에 저장할 내용을 바로 확인하면 개발이 훨씬 편하겠다. 데이타를 저장할 형태로 가공하여 REPL 표준 출력하는 함수 `MY-WRITE'를 작성하자. 이 함수의 구현과 검증은 REPL을 벗어날 필요가 없다. 이제 함수 `MY-SAVE'는 단지 표준 출력을 저장할 파일에 연결한 후에 `MY-WRITE'를 호출하면 된다. (defun my-save (fname) (wit..
-
MAPCAR와 그 친구들(MAPC, MAPCAN)Programmer/Programming 2014. 5. 30. 16:05
MAPCAR는 리스트의 값에 동일한 작업을 처리하는데 유용하다. MAPCAR의 인자는 적용할 함수와 한 개 이상의 리스트를 인자로 가진다. 인자 함수는 리스트의 개수만큼 인자를 받을 수 있어야 한다. MAPCAR는 인자 함수의 결과를 리스트로 묶어서 반환한다. 리스트의 모든 값에 10을 더해보다. (인자 함수가 한개의 인자를 가지는 것을 주목한다.) (mapcar #'(lambda (x) (+ x 10)) (list 1 2 3)) ; => (11 12 13) 두개의 리스트의 값을 더해보다. (인자 함수가 두개의 인자를 가지는 것을 주목한다.) (mapcar #'(lambda (x y) (+ x y)) (list 1 2 3) (list 4 5 6)) ; => (5 7 9) MAPC, MAPCAN는 반환값(..