원문 캡처 · github.com
원문 캡처 · github.com

Liquid Shplait은 Shplait에 세분화 타입(refinement types)을 더해, Z3 솔버로 조건을 컴파일 시점에 검사하는 패키지다. 예제에서는 입력 n과 반환값 y가 모두 양의 정수라는 조건을 지정한다.

#lang shplait/liquid fun double({n :: Int | n > 0}) :: {y :: Int | y > 0}: n * 2

사용하려면 Racket 9.3 이상과 Z3가 필요하다. DrRacket의 File 메뉴에서 Install Package...를 선택해 liquid-shplait을 설치하거나 다음 명령을 실행하면 된다.

raco pkg install liquid-shplait

Z3는 패키지 관리자로 설치하거나 Z3 릴리스 페이지에서 받을 수 있다. 검사기는 Z3 환경 변수, PATH 또는 일반적인 설치 경로에서 z3를 찾는다. macOS에서는 brew install z3, Debian과 Ubuntu에서는 apt install z3를 사용할 수 있다.

패키지를 설치하면 문서도 함께 설치된다. DrRacket의 Help | Racket Documentation 메뉴에서 언어를 검색하거나 온라인 문서를 확인할 수 있다. 짧은 예제 프로그램은 저장소의 예제 디렉터리에 있다. 테스트 명령은 raco test -p liquid-shplait 이며, 라이선스는 MIT다.