R6RS Scheme: 문자열

R6RS Scheme: 문자열

문자(characters)의 수열인 문자열(string)의 연산을 설명해요. 문자열 생성·접근·비교·부분 추출·결합·변환 프로시저를 시그니처와 예시로 다뤄요.

출처: 문서

본문

문자열은 문자의 수열이에요.

문자열의 길이는 그것이 포함하는 문자의 개수예요. 이 숫자는 문자열이 만들어질 때 고정돼요. 문자열의 유효한 색인들은 문자열의 길이보다 작은 정수들이에요. 문자열의 첫 문자는 색인 0을, 두 번째 문자는 색인 1을 가지는 식이에요.

(string? obj) — procedure

obj가 문자열이면 #t를, 그렇지 않으면 #f를 반환해요.

(make-string k) — procedure

(make-string k char) — procedure

길이 k의 새로 할당된 문자열을 반환해요. char가 주어지면 문자열의 모든 원소가 char로 초기화되고, 그렇지 않으면 문자열의 내용은 미지정이에요.

(string char ...) — procedure

인자들로 이루어진 새로 할당된 문자열을 반환해요.

(string-length string) — procedure

주어진 문자열의 문자 개수를 정확한 정수 객체로 반환해요.

(string-ref string k) — procedure

kstring의 유효한 색인이어야 해요. string-ref 프로시저는 0-기반 색인(0-origin indexing)을 사용하여 string의 문자 k를 반환해요.

Note: 구현자들은 string-ref가 상수 시간에 실행되도록 해야 해요.

(string=? string1 string2 string3 ...) — procedure

문자열들이 같은 길이이고 같은 위치에 같은 문자들을 포함하면 #t를 반환해요. 그렇지 않으면 string=? 프로시저는 #f를 반환해요.

(string=? "Straße" "Strasse") ⇒ #f

(string<? string1 string2 string3 ...) — procedure

(string>? string1 string2 string3 ...) — procedure

(string<=? string1 string2 string3 ...) — procedure

(string>=? string1 string2 string3 ...) — procedure

이 프로시저들은 문자에 대한 대응하는 순서들(ordering)의 문자열로의 사전순(lexicographic) 확장이에요. 예를 들어:

(string<? "z" "zz")  ⇒ #t
(string<? "z" "Z")  ⇒ #f

(substring string start end) — procedure

string은 문자열이어야 하고, startend는 다음을 만족하는 정확한 정수 객체여야 해요:

0 ≤ start ≤ end ≤ (string-length string)

substring 프로시저는 색인 start(포함)에서 시작하여 색인 end(배제)에서 끝나는 string의 문자들로 이루어진 새로 할당된 문자열을 반환해요.

(string-append string ...) — procedure

문자들이 주어진 문자열들의 결합을 이루는 새로 할당된 문자열을 반환해요.

(string->list string) — procedure

(list->string list) — procedure

list는 문자의 리스트여야 해요. string->list 프로시저는 주어진 문자열을 이루는 문자들의 새로 할당된 리스트를 반환해요. list->string 프로시저는 list의 문자들로 이루어진 새로 할당된 문자열을 반환해요. string->listlist->string 프로시저는 equal?에 관한 한 역(inverse)이에요.

(string-for-each proc string1 string2 ...) — procedure

문자열들은 모두 같은 길이여야 해요. proc은 문자열들의 개수만큼의 인자를 받아들여야 해요. string-for-each 프로시저는 proc을 문자열들의 문자들에 원소별로 적용해 그 부수 효과를 일으켜요. 적용 순서는 첫 문자부터 마지막 문자까지예요. proc은 항상 string-for-each 자신과 같은 동적 환경에서 호출돼요. string-for-each의 반환 값들은 미지정이에요.

for-each에 해당하는 문자열 버전이에요.

구현 책임: 구현은 proc에 대한 제약을, 설명된 대로 적용함으로써 수행되는 범위까지 확인해야 해요. 구현은 proc을 적용하기 전에 그것이 적절한 인자인지 확인할 수 있어요.

(string-copy string) — procedure

주어진 문자열의 새로 할당된 복사본을 반환해요.

더 알아보기 (Learn more)

출처: Strings - R6RS