raku-type-x-placeholder-mainline

class X::Placeholder::Mainline is X::Placeholder::Block { }

플레이스홀더 변수를 **메인라인(mainline)**에서 썼을 때 던져지는 예외예요. 메인라인은 말하자면 어떤 명시적인 블록 안도 아닌, 즉 최상위 수준을 뜻해요.

예를 들어

$^x;

이렇게 하면

===SORRY!===
Cannot use placeholder parameter $^x outside of a sub or block

이런 오류와 함께 죽어요.

재미있는 점은, 블록이라고 생각했던 게 사실은 postcircumfix:<{ }>였다면 이런 오류가 날 수 있다는 거예요.

my %h;
say %h{ $^x };
#     ^^^^^^^  not a block, so $^x is part of the mainline

%h{ }는 블록이 아니라 해시 첨자라서, 안의 $^x는 메인라인에 있는 셈이 되는 거죠.