본문으로 건너뛰기
로그인 둘러보기
개발·코딩·데이터베이스 · 윈도우즈 유틸

ICL – Interactive Common Lisp

0

ICL(Interactive Common Lisp)는 atgreen이 개발한 향상된 Common Lisp REPL입니다.

노트북대화형 개발데이터 시각화브라우저터미널

소개

ICL(Interactive Common Lisp)는 atgreen이 개발한 향상된 Common Lisp REPL입니다. 터미널, 웹 브라우저, Emacs와의 통합을 통해 현대적인 대화형 프로그래밍 환경을 제공하며, 구문 강조, 괄호 매칭, 탭 완성, 지속 기록, 확장 가능한 명령 시스템 등의 기능을 포함합니다. 이 도구는 SBCL, CCL, ECL, CLISP, ABCL, Clasp, Roswell 등 다양한 Lisp 구현체와 호환됩니다.

상세정보

터미널 REPL

터미널 기반 REPL은 구문 강조, 괄호 매칭, 탭 완성, paredit 모드(구조적 편집), 인터랙티브 객체 인스펙터, 지속 기록, 다중 줄 입력 자동 감지 및 스마트 들여쓰기를 제공합니다. 사용자는 ,help 명령으로 전체 명령 목록을 확인할 수 있습니다.

브라우저 REPL 및 노트북

웹 브라우저 인터페이스는 패키지 브라우저, 심볼 인스펙터, 데이터 시각화, 클래스 계층 그래프를 제공하며, Jupyter 스타일 노트북 기능을 포함합니다. 노트북은 전체 ICL 편집기 per 셀, 다중 폼 평가, 풍부한 출력(표, 차트, 다이어그램), 마크다운, KaTeX 수식, display() 함수, 명령 모드 단축키, HTML 또는 .lisp 형식으로의 내보내기를 지원합니다. --notebook 플래그 또는 ,notebook 명령으로 노트북을 생성, 열거나 데이터 파일로부터 스캐폴딩할 수 있습니다.

데이터 시각화 및 인터랙티브 테이블

ICL은 Apache Arrow와 Perspective(번들 포함)를 사용하여 플리스트/알리스트 또는 Lisp-Stat 데이터프레임을 인터랙티브 그리드로 렌더링합니다. 사용자는 점-클릭으로 피벗(행/열 그룹화), 집계(합, 평균, count 등), 필터, 정렬, 계산 열 생성, 열 표시/숨김 및 재order, 라이트/다크 테마 전환을 수행할 수 있으며, 구성을 노트북에 저장하고 출력을 창 최대화로 볼 수 있습니다.

Flame 그래프 프로파일링 (SBCL 전용)

,flame 명령은 SBCL에서만 작동하며, 표현식을 프로파일링하고 결과를 브라우저에서 인터랙티브 Speedscope flame 그래프로 표시합니다. Time Order, Left Heavy, Sandwich 뷰 간 전환을 통해 성능 병목 지점을 식별할 수 있습니다.

Emacs 통합

ICL은 SLY/SLIME과의 통합을 통해 브라우저 시각화를 동기화합니다. M-x icl로 현재 세션과 연결된 브라우저 REPL을 시작하고, M-x icl-stop 및 M-x icl-restart로 프로세스를 제어할 수 있습니다. 설정 파일에서 (setq icl-backend 'slime) 등으로 백엔드를 지정할 수 있습니다.

다운로드·설치 방법

Windows 사용자는 GitHub 릴리스 페이지에서 ZIP, EXE 설치 프로그램, MSI 설치 프로그램을 다운로드할 수 있으며, Chocolatey를 통해서도 설치 가능합니다(chocolatey.icl 패키지). 공식 배포 채널은 GitHub Releases입니다.

기본 사용법/명령어

터미널에서 ICL을 시작하려면 icl 명령을 입력합니다. 특정 Lisp 구현체를 지정하려면 icl --lisp ccl와 같이 사용합니다. 표현식을 평가하고 종료하려면 icl -e '(+ 1 2 3)', 파일을 로드하여 시작하려면 icl -l init.lisp를 사용합니다. 브라우저 인터페이스를 함께 시작하려면 icl -b 또는 ,browser 명령을 입력합니다.

노트북 관련 명령은 다음과 같습니다:
– icl --notebook: 새 빈 노트북 생성
– icl --notebook analysis.iclnb: 기존 노트북 열기
– icl --notebook data.csv: CSV 파일로부터 노트북 스캐폴딩 (자동으로 .iclnb 저장)
브라우저 내에서 ,notebook 명령으로도 동일한 작업을 수행할 수 있으며, 탭 완성으로 파일명을 자동 완성할 수 있습니다.

기타 유용한 명령:
– ,help: 전체 명령 목록 표시
– ,inspect 또는 ,i: 인터랙티브 객체 인스펙터 실행
– ,bt: 마지막 오류의 백트레이스 표시
– ,trace : 함수 트레이싱 활성화
– ,source : Monaco 에디터에서 소스 코드 보기
– ,viz : 데이터 시각화 (해시 테이블, 이미지, JSON, SVG 등)
– ,sql : DuckDB를 사용한 CSV/Parquet/JSON 쿼리 (결과는 인터랙티브 그리드로 렌더링 가능)
– ,explain: AI를 사용한 코드 또는 오류 설명 (Gemini, Claude, Codex CLI 필요)

이런 경우에 유용합니다

대화형 Lisp 개발을 원하는 개발자에게 유용합니다. 특히 데이터 분석 작업에서는 브라우저 노트북의 인터랙티브 피벗 테이블과 차트 기능을 통해 CSV/TSV 파일을 로드하고, 실시간으로 데이터를 필터링·집계·시각화할 수 있습니다. Emacs 사용자는 SLY/SLIME과의 통합을 통해 편집기 내에서 브라우저 시각화를 실시간으로 동기화할 수 있으며, 성능 최적화가 필요한 경우 SBCL에서 ,flame 명령으로 flame 그래프를 생성해 병목 지점을 찾을 수 있습니다.

지원 환경·시스템 요구사항

ICL은 Windows, Linux, macOS에서 실행됩니다. Windows에서는 ZIP, EXE, MSI 설치 형식을 지원하며, Chocolatey를 통해서도 배포됩니다. 실행에는 SBCL 또는 다른 지원되는 Common Lisp 구현체(CCL, ECL, CLISP, ABCL, Clasp, Roswell)가 필요하며, 일부 기능(라이브러리 설치 등)을 위해 ocicl가 요구될 수 있습니다. 소스 코드로부터 빌드 시 libfixposix-devel도 필요합니다.

최신 버전·업데이트

현재 버전은 1.25.1이며, 공식 저장소의 릴리스 페이지에서 최신 버전 및 업데이트 내역을 확인할 수 있습니다. README에는 CI, 릴리스, 라이선스, 플랫폼 배지가 포함되어 있어 프로젝트의 활동 상태를 간접적으로 확인할 수 있습니다.

제한 사항·확인 사항

Flame 그래프 프로파일링(,flame 명령)은 SBCL에서만 작동하며, 다른 Lisp 구현체에서는 사용할 수 있습니다. 브라우저 기반 시각화 및 노트북 기능은 웹 브라우저 환경이 필요하며, headless 실행 시 --execute 플래그를 사용해야 합니다. AI 설명 기능(,explain)은 Gemini, Claude 또는 Codex CLI가 시스템에 설치되어 있고 PATH에 있어야 합니다.

시스템 요구사항

ICL은 실행하려면 SBCL 또는 다른 지원되는 Common Lisp 구현체가 필요하며, 일부 기능(예: 패키지 설치, 라이브러리 통합)을 위해 ocicl이 필요할 수 있습니다. 소스 코드로부터 빌드 시 libfixposix-devel도 요구됩니다.