728x90
1. 문자열
- 문자열은 symbol이 아님
- SRINGP는 문자열임을 판단해주는 함수
2. Format
- 기본 반환값은 nil 이다
- 사이드 효과로 화면이나 파일에 쓰여진 글을 출력함
- 첫번째 매개변수는 format을, 두번째 매개변수는 문자열이다.
🧀 기본 format
(format t “Hi, mom!”)
//t: format(T에 출력하고 싶은 문자열을 두번째 매개변수에 넣는다.)
🧀 서식문자
- ~%: new line 줄바꿈
- ~&: new line if it is not at the beginning of a new line 새로운 줄이 아니면 줄바꿈
- ~S: S-expression being inserted, 삽입할 거
- ~A: without using escape characters 제어문자가 없어짐
- ~D: 정수 출력
- ~B: 2진수 출력
- ~O: 8진수 출력
- ~X: 16진수 출력
# format 이용한 함수 구현
ⓐ name 출력하는 함수
(defparameter *glee-club*
'((john smith) (barbara wilson) (mustapha ali)))
(defun print-one-name (name)
(format t "~&~10S ~S" (second name) (first name)))
//~10S : 10길이의 문자열 출력
(defun print-all-names (x)
(mapcar #'print-one-name x) 'done)
//done을 넣으면 마지막에 nil이 출력되지 않고 done이 출력됨
3. Read 함수
- 키보드를 통한 입력을 받는다. (입력함수)
(defun my-square ()
(format t "Please type in a number: ")
(let ((x (read))) //read로 입력을 받고 그것을 x라고 함
(format t "The number ~S squared is ~S.~%" x (* x x))))
- YES-OR-NO-P or Y-OR-N-P 함수
(defun riddle ()
(if (yes-or-no-p “Do you seek something? “)
(format t “Yes, I do.”)
(format t “No, I don’t.”)))
* riddle 함수를 입력하면 위와 같이 뜬다.
4. 파일 입출력
1) 파일읽기
- 파일을 읽기 위해서는 아래와 같은 형식을 사용한다.
(WITH-OPEN-FILE (var pathname) body)
– :direction - :input, :output, :io
– :element-type specifies the type of the unit of transaction for the stream
(usually, :default - being determined by the file system)
– :if-exists - :error (default), :overwrite, :append, nil
– :if-does-not-exist :error (default), :create, nil
(defun save-tree-data (tree-loc tree-table num-trees)
(with-open-file (stream “timber.txt” :direction :output :if-exists :overwrite)
(format stream “~&~S~%” tree-loc)
(format stream “~&~S~%” tree-table)
(format stream “~&~S~%” num-trees)))
2) 파일쓰기
(defun get-tree-data ()
(with-open-file (stream “timber.txt”)
(let* ((tree-loc (read stream))
(tree-table (read stream))
(num-trees (read stream)))
(format t “~&There are ~S trees on ~S.”
num-trees tree-loc)
(format t “~&They are: ~S” tree-table))))
728x90
'Major > Lisp' 카테고리의 다른 글
[Lisp] Tic-Tac-Toe 게임 실습(1) (0) | 2021.06.09 |
---|---|
[Lisp] Chapter 10 Assignment (0) | 2021.06.09 |
[Lisp] CH 8 - Recursion(재귀) (0) | 2021.06.01 |
[Lisp] Ch 7 Applicative Programming(실용적인 프로그래밍) (0) | 2021.05.29 |
[Lisp] Ch 6 - 리스트 자료구조 (List Data Structures) (0) | 2021.04.21 |