Raku REPL
Raku REPL
Raku를 설치하고 나서 가장 먼저 만나게 되는 대화형 환경이 바로 REPL(Read-Eval-Print Loop)이에요. 한 줄씩 코드를 입력하면 그 자리에서 바로 실행되고, 별도 출력이 없다면 그 줄이 반환한 값이 그대로 화면에 찍힙니다.
출처: Raku Docs - REPL
함정 하나만 짚고 갈게요 (Trap)
REPL에 코드를 넣어 실행하는 것은, 코드를 파일에 저장해서 실행하는 것과 같지 않아요. 한 줄마다 새로운 스코프(scope)가 생기기 때문에 여러 줄에 걸친 코드는 예상과 다르게 동작할 수 있습니다. 큰 스크립트 안에서 REPL을 하나 띄우고 싶다면 아래에서 다룰 sub repl()을 쓰면 돼요.
이전 값 사용하기 (Previous Values)
REPL에 명령을 입력하면 각 줄에 0부터 시작하는 숫자 ID가 붙어요. 그다음 줄부터는 REPL에서만 쓸 수 있는 특별한 변수로 이전 결과를 다시 사용할 수 있는데, 바로 $*0, $*1 같은 변수예요. 아래 예시에서는 두 값을 계산해 놓고, 세 번째 줄에서 둘을 함께 쓰고 있어요.
✗ raku
Welcome to Rakudo™ v2025.08.
Implementing the Raku® Programming Language v6.d.
Built on MoarVM version 2025.08.
To exit type 'exit' or '^D'
[0] > 3+2
5
[1] > 7+1
8
[2] > $*0 * $*1
40
[3] >
비대화형 모드 (non-interactive mode)
raku --repl-mode=non-interactive처럼 명령줄에서 비대화형 모드로 실행하면, 히스토리나 프롬프트가 출력되지 않고 입력이 끝날 때까지 코드가 실행되지 않아요. 예를 들어 리눅스에서는 코드를 파이프로 넣거나 Control-d를 눌러 입력을 닫아 주면 됩니다.
$ echo "say 3" | raku --repl-mode=non-interactive
3
sub repl()
이 루틴을 쓰면 큰 스크립트 안에 REPL을 끼워 넣고, 그 시점의 모든 변수에도 접근할 수 있어요. 자세한 내용은 독립 루틴 문서의 sub repl()을 참고하세요.
환경 변수 (ENVIRONMENT Variables)
REPL이 쓰는 환경 변수는 ENVIRONMENT Variables 문서에서 확인할 수 있어요.
명령줄 히스토리 얻기 (Get command line history)
새로 설치한 상태에서는 히스토리가 없어요. 이 모드로 REPL을 실행하면 히스토리를 제공하는 모듈 중 하나를 설치하라고 안내가 나옵니다. 설치하고 나면 방향키로 이전 명령을 훑고 표준 터미널 단축키로 수정하는 것도 가능하고요. 현재 네 가지 방법이 있어요.
zef install Terminal::LineEditor
C툴체인이 작동해야 해요.
zef install Linenoise
Readline개발 라이브러리가 설치되어 있어야 해요.
zef install Readline
- UNIX 계열 시스템에서는
rlwrap을 설치하는 방법도 있어요. Debian 계열에서는 이렇게 설치하면 됩니다.
sudo apt-get install rlwrap
설치 후에는 이렇게 REPL을 실행하면 돼요.
rlwrap raku