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는 메인라인에 있는 셈이 되는 거죠.