SICP(컴퓨터 프로그램의 구조와 해석)는 전통적으로 Scheme을 사용해 계산의 원리를 가르칩니다. 리스펙스는 이 학습 과정에 필요한 Scheme 호환 표면을 별도의 SICP 프로필로 제공합니다. 이는 일반 리스펙스 코어 프로필과 완전히 분리되어 있으며, 일반 코어 프로필의 동작을 바꾸지 않습니다.
1. 학습 환경 선택하기
학습 목적에 따라 가장 알맞은 도구를 선택하세요.
- 장별 맞춤 학습(웹 과정). sicp.io와 한국어 경로 sicp.io/ko를 이용하세요. 교재를 읽고 코드를 편집·실행하여 결과를 확인하는 학습 흐름, 한국어 강좌, 지원 범위 지도, 브라우저 워크벤치를 제공합니다.
- 단일 브라우저 실행(플레이그라운드).
리스펙스 SICP 플레이그라운드에서
?profile=sicp를 명시해 브라우저에서 바로 코드를 실행하세요. 이 값이 없는 기본 플레이그라운드는 일반 코어 프로필로 동작합니다. - 로컬 파일 실행(CLI). 네이티브 CLI는 바이너리에 Rust로 내장된 SICP
프로필을 직접 실행하며, npm CLI
lispex@1.18.0은@lispex/sicp@1.0.0Wasm 의존성을 통해 구동합니다..scm파일 확장자만으로 런타임이 자동 전환되지 않으므로,lispex sicp run과 같이 SICP 프로필을 명시적으로 지정하여 실행하세요. - 애플리케이션 내장(JavaScript API). Node.js나 브라우저 앱에서 정형화된 관측 데이터와 정해진 한도 안의 추적 정보가 필요하다면 전용 라이브러리를 직접 설치해 연동하세요.
npm install @lispex/sicp@1.0.02. 파일 하나 실행하기
로컬 .scm 파일이나 파이프 입력은 반드시 sicp run 하위 명령으로
실행하세요.
lispex sicp run exercise.scm
cat exercise.scm | lispex sicp run -일반 명령인 lispex run exercise.scm을 실행하면 오류가 발생하며 실행이
거부됩니다. .scm 확장자만으로 프로필이 암묵적으로 전환되지 않으며, 다른
엔진으로 대체 실행하지도 않습니다.
CLI는 학습 흐름에 필요한 표준 출력과 최종 평가 값만을 출력합니다. 타입이 지정된 관측 결과나 상세 실행 추적이 필요하다면 JavaScript API를 사용하세요.
3. JavaScript 런타임 직접 연동하기
Node.js 또는 브라우저 환경에서 @lispex/sicp를 직접 불러와 코드를 평가할
수 있습니다.
const { run } = require('@lispex/sicp');
const result = run('(define (square x) (* x x)) (square 12)');
console.log(result);브라우저에서는 전용 진입점을 사용하세요.
const { createSicpRuntime } = await import('@lispex/sicp/browser');
const runtime = await createSicpRuntime();
const result = runtime.run('(define (square x) (* x x)) (square 12)');
console.log(result);@lispex/sicp WebAssembly 모듈은 외부 import가 없으며, 선택한 Wasm을
불러온 뒤 실행 중에는 네트워크를 사용하지 않습니다.
- 입력 크기: UTF-8 소스 기준 최대 1 MiB까지 허용합니다.
- 고정 한도: 고정된 논리 heap, fuel, output, trace 한도를 적용합니다. 이는 정해진 한도일 뿐이며, 보안 샌드박스가 아닙니다.
- 구조화된 결과: JavaScript API 결과 객체에는
sicp-observation/v1규격의 타입화된 관측 데이터와 정해진 한도 안의lispex-trace/v1실행 추적 정보가 포함됩니다.
4. 공개 측정 결과 확인하기
리스펙스는 SICP 프로필의 동작 측정 결과를 공개합니다. 전체 측정 데이터는 claim.json에서 확인할 수 있습니다.
- 측정 방식: 실제 배포되는 WebAssembly 바이너리로 버전이 고정된 26개의 대표 corpus(검증용 코드 모음) fixture를 실행하고, 4개의 고정된 외부 Scheme oracle과 대조해 일치 여부, 불일치 내역, 제외 범위를 기록했습니다.
- 명시적 비주장: 이 측정 데이터는 책 전체 지원, 다른 엔진과의 성능 순위나 비교 우월성, 제3자의 독립 검증을 주장하거나 보증하지 않습니다.
- 런타임 동작 원칙: 런타임은 선택한 Wasm을 불러온 뒤 실행 중에는 네트워크를 사용하지 않으며, 시스템의 다른 엔진을 탐색하거나 실패 시 임의로 대체 실행하지 않습니다. 교육용 실행기는 실행 권한이나 바우치 권한을 부여하지 않고 근거를 인증하지 않습니다.
5. 두 프로필의 엄격한 분리
| 구분 | 일반 리스펙스 코어 | 리스펙스 SICP 프로필 |
|---|---|---|
| 선택 방식 | 기본값 lispex run | 명시적 lispex sicp run 또는 ?profile=sicp |
| 소스 확장자 | .lspx | .scm |
| 사용 목적 | 일반 리스펙스 애플리케이션 개발 | SICP 교재 학습 및 연습 문제 풀이 |
| 런타임 | 리스펙스 코어 엔진 | 네이티브 Rust 내장 프로필 / npm 및 JavaScript용 @lispex/sicp Wasm |
SICP 교재 본문과 검증용 corpus 소스는 별도 라이선스가 적용되는 저작물이며, 제품에 번들로 포함되지 않습니다.