Lisp 포매터 sift, Scheme·Emacs Lisp·Common Lisp를 각자의 규칙으로 다룬다

Sift: LSP, Lint, Format Lisp, Scheme and Emacs Lisp

Guile 3.0로 작성된 sift는 Scheme, Emacs Lisp, Common Lisp를 위한 포매터 겸 린터 겸 LSP 서버다. 소스를 텍스트가 아닌 위치 정보를 지닌 폼 트리로 읽어 주석과 공백을 바이트 단위로 보존하고, 두 번 실행해도 결과가 변하지 않는 멱등성을 모든 테스트 케이스에서 검증한다. 92개 규칙은 각각 고유 코드와 근거를 갖추고 있으며, 같은 엔진이 CLI 출력과 LSP 응답을 모두 만들어 파이프라인과 에디터가 동일한 결과를 받는다. MIT 라이선스로 배포된다.

Lisp 파일은 텍스트의 줄이 아니라 소스 위치를 지닌 폼의 트리로 읽히고, 포매터는 그 트리를 다시 출력한다. 보존, 하나의 범위만 교체하는 수정, 변경분만 담긴 diff가 모두 여기서 따라 나온다.
  1. vegnus

    재미로 Scheme을 배우고 있는 사람으로서, 감사합니다

  2. stackghost

    멋지네요! Lisp 도구 생태계가 발전하고 있어서 기쁘지만, 단일 도구를 위해 guile을 설치해야 한다는 점은 아마 일반적인 Lisp 사용자들에게는 시작부터 걸림돌이 될 겁니다.

    Sly/Slime과의 상호 운용성은 어떻게 되나요?

  3. sargstuff

    뭐라고!?! BLC[0] PIC[1] 포매팅을 지원하지 않는다고? :-) (포맷 예시는 Programs(BLC) 섹션[0]을 참고하세요.)

    -------

    [0] : blc : https://esolangs.org/wiki/Binary_lambda_calculus

    [1] : PIC : https://en.wikipedia.org/wiki/PIC_(markup_language)

이 날의 다른 글

2026-11-13