언제 필요한가요?
이 페이지는 결정적 게스트 평가와 호스트 효과 사이의 경계를 긋습니다. 텍스트를 명시적으로 출력할 때는 내장 출력 프로시저를 쓰세요. 파일과 네트워크, 시간, 무작위, 외부 행위는 호출하는 애플리케이션 쪽에 두세요.
실행으로 확인하기
LISPEX
(begin (display "answer=") (write 42) (newline) 0)관측 결과
OUTPUT
answer=42
0예제 읽기
display는 문자열 내용을 그대로 씁니다. write는 42를 다시 읽어 들일 수
있는 게스트 표기로 씁니다. newline은 줄바꿈 하나를 붙입니다. println은
display 다음에 그 줄바꿈을 붙인 것과 정확히 같습니다. 마지막 0은 CLI가
찍는 프로그램 결과이므로 명시적 출력보다 뒤에 나옵니다.
이 순서로 생각하세요
display는 문자열의 따옴표를 빼고 문자를 글리프로 씁니다.write는 다시 읽어 들일 수 있는 따옴표와 이스케이프, 문자 표기를 씁니다.- 네 프로시저는 모두 0개 값을 반환합니다. 명시적 출력과 CLI 자동 출력은 하나의 표준 출력 순서를 함께 씁니다. 완료된 최상위 값은 영수증이 별도 기록으로 보존합니다.
- 뒤의 식이 실패해도 그전에 쓴 출력은 남습니다.
- CLI의 파일·표준 입력 선택과 소스 라벨은 호출 쪽 관심사입니다. 새 언어 바인딩이 아닙니다.
- 외부 능력(capability)은 명시적이어야 하고 버전이 붙어야 합니다. 호스트 전역에서 대신 쓸 것을 찾아내는 방식은 안 됩니다.
- 어시스턴트가 붙는 로컬 서버인 네이티브 MCP도 이런 능력을 하나도 주지
않습니다.
lispex_eval은 로컬 stdio로 소스와 선택 datum 하나를 받고, 정해진 크기와 시간 한도 안에서 관측값만 돌려줍니다.
빠르게 고르기
| 작업 | 리스펙스 안에서 가능? | 대안 |
|---|---|---|
| 다시 읽어 들일 수 있는 값 출력 | 예, write | 출력한 표기를 다시 읽어야 할 때 |
| 사람용 텍스트 출력 | 예, display, newline, println | 순서가 결정적 |
| 파일·네트워크 접근 | 아니요 | 명시적 호출 경계에서 수행 |
| 시계·무작위 | 아니요 | 선택한 값을 입력으로 제공 |
| 결정에서 외부 행위 실행 | 아니요 | 소비자 코드가 승인하고 실행 |
흔한 오해
포트와 파일시스템, 네트워크, 시간, 난수, 무제한 호스트 평가는 현재 순수 프로필에 없습니다.
현재 경계
- 출력 버퍼에는 정해진 크기 한도가 있습니다. 이 프로시저들 뒤에 숨은 포트나 파일, 네트워크 핸들은 없습니다.
- 타깃 언어 출력은 리스펙스 실행 모드가 아닙니다.
다음으로
실행 방식 고르기는 호스트 경계에 맞는 방식을 고르는 데 도움이 됩니다. 행위를 실행하는 대신 이름 붙은 데이터를 돌려주는 법은 결정 규칙에서 보여 줍니다.