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
  1. C 툴체인이 작동해야 해요.
    zef install Linenoise
  1. Readline 개발 라이브러리가 설치되어 있어야 해요.
    zef install Readline
  1. UNIX 계열 시스템에서는 rlwrap을 설치하는 방법도 있어요. Debian 계열에서는 이렇게 설치하면 됩니다.
sudo apt-get install rlwrap

설치 후에는 이렇게 REPL을 실행하면 돼요.

rlwrap raku