리스펙스 프로그램에서 텍스트와 값을 출력할 수 있습니다. 호출 애플리케이션은 외부 데이터를 전달하고 반환된 결정에 따라 행동할지 판단합니다.
값 출력하기
네이티브 리스펙스를 설치한 뒤 다음 전체 소스를 output.lspx로 저장하세요.
(begin (display "answer=") (write 42) (newline) 0)파일을 실행합니다.
lispex run output.lspx명령은 다음 텍스트를 출력하고 종료 코드 0으로 끝납니다. 생성 파일은 없습니다.
answer=42
0프로그램은 answer=42와 줄바꿈을 직접 출력합니다.
그다음 네이티브가 형식의 반환값 0을 한 줄에 출력합니다.
| 프로시저 | 출력 내용 |
|---|---|
display | 사람이 읽을 텍스트 |
write | 다시 읽을 수 있는 리스펙스 표기의 값 |
newline | 줄바꿈 하나 |
println | display와 같은 텍스트 뒤에 줄바꿈 |
네 프로시저는 모두 값 0개를 반환합니다. 대화형 실행은 최상위 형식이 끝나면 명시적 출력 뒤에 반환값을 출력합니다. 배치 실행은 반환값을 따로 기록하고 명시적 출력만 stdout에 넣습니다.
실행이 멈췄을 때 출력 읽기
자원 프로파일이 출력 바이트 한도를 정합니다. 네이티브의 전체 소스 실행은 일반 오류와 자원 종료를 다르게 처리합니다.
| 결과 | stdout | 종료 코드 |
|---|---|---|
| 실행 성공 | 명시적 출력과 반환값 | 0 |
| 일반 실행 오류 | 오류 전에 기록한 출력 | 1 |
| 자원 한도 도달 | 비어 있음 | 2 |
예를 들어 다음 파일을 output-error.lspx로 저장하세요.
(display "before\n")
(car 1)lispex run output-error.lspxstdout에는 before와 줄바꿈이 남습니다. stderr는 다음과 같습니다.
종료 코드는 1이며 생성 파일은 없습니다.
E310 output-error.lspx:2:1 car: expected a pair, got 1CLI는 전체 소스를 읽고 축약 문법을 핵심 형식으로 바꾼 뒤 평가합니다. 그 준비 과정에서 소스 오류가 나면 stdout은 비어 있습니다. 자원 종료는 자원 문서에서 확인하세요.
외부 작업을 애플리케이션에 맡기기
지원하는 프로시저와 호스트 권한은 서로 다른 것을 정합니다. 프로시저는 규칙이 계산할 수 있는 일을 정합니다. 권한은 호출 애플리케이션이 수행할 수 있는 외부 행동을 정합니다.
| 작업 | 처리 주체 |
|---|---|
| 값과 텍스트 출력 | 리스펙스 출력 프로시저 |
| 소스 파일과 표준 입력 선택 | CLI를 실행하는 쪽 |
| 파일과 네트워크 접근 | 호출 애플리케이션의 어댑터 |
| 시각과 난수 | 애플리케이션이 명시적 입력으로 전달 |
| 데이터베이스와 트랜잭션 | 애플리케이션이 상태와 확정 시점 관리 |
| 결제와 배포 등 외부 행동 | 애플리케이션이 결정을 확인한 뒤 자체 정책 적용 |
네이티브 MCP는 로컬 표준 입출력으로 소스와 선택적 입력값과 결과를 주고받습니다. 이때 정해진 바이트 한도와 시간 한도를 적용합니다. 애플리케이션 어댑터는 검토한 데이터를 규칙에 전달하고 반환된 결정을 사용합니다.