리스펙스를 이해하는 가장 빠른 방법은 프로그램을 수정하면서 바뀌는 값을 직접 확인하는 것입니다. 우선 브라우저에서 시작해 보세요. 작성한 파일을 보관하고 싶을 때만 로컬 런타임을 설치하면 됩니다.
플레이그라운드에서 실행하기
플레이그라운드를 열고 편집기 내용을 아래 프로그램으로 바꾼 다음 실행을 누르세요.
(define language "Lispex")
(list 'hello language (+ 2 3))결과
(hello "Lispex" 5)첫 번째 폼은 "Lispex"라는 문자열에 language라는 이름을 지정합니다. 마지막
폼은 인용된 심볼, 해당 문자열, 그리고 (+ 2 3)의 계산 결과로 리스트를 만듭니다.
플레이그라운드는 하나 이상의 값을 만드는 모든 최상위 표현식의 값을 출력합니다.
define 자체는 출력되는 값을 만들지 않습니다.
3을 8로 바꾸고 다시 실행해 보세요. 마지막 원소가 10으로 바뀌었다면
브라우저 실습 과정을 마친 것입니다.
로컬 파일로 보관하기
같은 소스를 hello.lspx 파일로 저장하세요. 두 로컬 제품 가운데 하나를 선택하면
됩니다.
npx lispex hello.lspx또는 사용 중인 플랫폼에 맞는 네이티브 바이너리를 내려받아 실행하세요.
lispex hello.lspx두 명령 모두 Rust로 작성된 같은 레퍼런스 구현을 실행합니다. npm 패키지는 WebAssembly를 통해 이를 전달하고, 네이티브 바이너리는 직접 실행합니다. 플랫폼별 설치 방법과 체크섬 확인 절차는 다운로드 페이지에서 확인할 수 있습니다.
첫 프로그램을 작성하는 데는 이 정도로 충분합니다. 나중에 같은 소스에서 매번 같은 방식으로 만들어지는 컴파일된 파일이 필요한 네이티브 사용자는 검증된 바이트코드 실행하기로 이어가면 됩니다. 입문 과정은 여전히 소스 중심입니다.
에디터 색상, 파일 아이콘, 포매팅 추가하기
공식 확장은 .lspx 파일을 인식해 리스펙스 구문을 강조하고, 밝은 테마와 어두운
테마에 맞는 파일 아이콘을 제공하며, 설치된 네이티브 CLI로 문서를 포매팅합니다.
정확한 식별자는 studiohaze.lispex입니다. 네이티브 바이너리를 설치하고 나면
문서 서식 지정이나 저장 시 포매팅을 사용할 수 있습니다. 확장은 내부적으로
lispex fmt -를 실행합니다. 바이너리가 PATH에 등록되어 있지 않다면
lispex.format.executable에 경로를 지정하세요. 이 확장은 런타임이나 언어 서버를
내장하지 않으며, 자동 완성, 마우스 오버 타입, 에디터 진단도 제공하지 않습니다.
포매팅은 npm, 공개 WebAssembly 빌드, 플레이그라운드에서는 쓸 수 없습니다.
진단 하나 읽기
이제 첫 define 폼에서 닫는 괄호를 지워 보세요.
(define total 10
(+ total 5)이 명령은 실패 상태로 끝나고 E100 리더 진단을 보고합니다. 여기서 중요한 점은
진단이 나온 단계입니다. 리스펙스가 소스 폼 하나를 끝까지 읽어 내지 못했기 때문에
어떤 표현식도 실행되지 않은 것입니다. 런타임 문제를 찾기 전에 10 뒤의 )를
먼저 복구하세요.
리스펙스는 진단을 표준 오류에 기록하며, 실패한 실행은 0이 아닌 종료 상태를 반환합니다. 나중에 오류, 경고, 진단 문서에서 리더, 정규화, 런타임, 자원 오류를 구분합니다.
연습
성공한 프로그램을 고쳐 다음 결과가 출력되도록 만들어 보세요.
(hello "Lispex" 12)답 하나 보기
마지막 표현식을 (list 'hello language (* 3 4))로 바꾸면 됩니다. 리스펙스는
안쪽 호출 (* 3 4)를 먼저 계산한 뒤 list가 세 값을 받습니다.
2단계로 갈 준비가 됐나요?
첫 프로그램에서 이름, 문자열, 안쪽 호출, 최종 리스트를 각각 가리킬 수 있다면 다음 단계로 넘어가도 좋습니다. 다음 주제는 값, 이름, 프로시저입니다.