유니코드 기호와 ASCII 기호

유니코드 기호와 ASCII 기호 (unicode_ascii)

Raku에서는 어떤 모듈을 추가로 로드하지 않아도 아래 유니코드 기호들을 그대로 쓸 수 있어요. 그중 일부는 ASCII 문자만으로 입력할 수 있는 대응(equivalent) 표기가 있어요.

문서에서 유니코드 코드포인트의 여러 속성(property)을 언급하는데, 그 정의 목록은 https://www.unicode.org/Public/UCD/latest/ucd/PropList.txt에서 확인할 수 있어요.

알파벳 문자 (Alphabetic characters)

Ll(Letter, lowercase), Lu(Letter, uppercase), Lt(Letter, titlecase), Lm(Letter, modifier), Lo(Letter, other) 속성을 가진 코드포인트는 ASCII 범위의 알파벳 문자처럼 자유롭게 쓰일 수 있어요.

my $Δ = 1;
$Δ++;
say $Δ;

숫자 문자 (Numeric characters)

Nd(Number, decimal digit) 속성을 가진 코드포인트는 어떤 숫자에서든 숫자(digit)로 쓸 수 있어요. 예를 들어:

my $var = 19; # U+FF11 U+FF19
say $var + 2;   # OUTPUT: «21␤»

숫자 값 (Numeric values)

No(Number, other)나 Nl(Number, letter) 속성을 가진 코드포인트는 ½, ⅓처럼 단독으로 숫자 값으로 쓸 수 있어요. (이들은 10진 숫자 문자가 아니라서 서로 조합할 수 없어요.) 예를 들어:

my $var = ⅒ + 2 + Ⅻ; # 여기서 ⅒은 No이면서 Rat, Ⅻ는 Nl이면서 Int
say $var;              # OUTPUT: «14.1␤»

공백 문자 (Whitespace characters)

공백과 탭 외에도 Zs(Separator, space), Zl(Separator, line), Zp(Separator, paragraph) 속성을 가진 다른 유니코드 공백 문자를 쓸 수 있어요.

공백 특성을 가진(또는 관련된) 유니코드 코드포인트의 상세 표는 위키백과의 Whitespace 섹션을 참고하세요. 인쇄·웹용 디지털 타이포그래피 모듈을 만드는 Raku 작성자에게는 중요한 섹션이에요.

허용되는 기타 단일 코드포인트

아래는 Raku에서 특별한 의미를 가진 단일 코드포인트[와 그 ASCII 대응] 목록이에요.

기호 코드포인트 ASCII 비고
« U+00AB << «»의 일부, .«, 정규식 좌측 단어 경계로
» U+00BB >> «»의 일부, .», 정규식 우측 단어 경계로
× U+00D7 *
÷ U+00F7 /
U+2264 <=
U+2265 >=
U+2A75 ==
U+2260 !=
U+2212 -
U+2218 o
U+2A76 ===
U+2245 =~=
π U+03C0 pi 3.14159_26535_89793_238e0
τ U+03C4 tau 6.28318_53071_79586_476e0
𝑒 U+1D452 e 2.71828_18284_59045_235e0
U+221E Inf
U+2026 ...
U+2018 ' ‘’ 또는 ’‘의 일부
U+2019 ' ‘’ 또는 ‚’ 또는 ’‘의 일부
U+201A ' ‚‘ 또는 ‚’의 일부
U+201C " “” 또는 ”“의 일부
U+201D " “” 또는 ”“ 또는 ””의 일부
U+201E " „“ 또는 „”의 일부
U+FF62 Q// 「」의 일부 (주의: Q// 변형은 정규식에서 단독으로 못 씀)
U+FF63 Q// 「」의 일부 (주의: Q// 변형은 정규식에서 단독으로 못 씀)
U+207A + 지수(power)의 일부로 (명시적 숫자 사용 필수)
U+207B - 지수의 일부로 (명시적 숫자 사용 필수)
¯ U+00AF - 지수의 일부로 (명시적 숫자 사용 필수, 매크론은 마이너스의 대체 표기)
U+2070 **0 ⁰..⁹와 조합 가능
¹ U+00B9 **1 ⁰..⁹와 조합 가능
² U+00B2 **2 ⁰..⁹와 조합 가능
³ U+00B3 **3 ⁰..⁹와 조합 가능
U+2074 **4 ⁰..⁹와 조합 가능
U+2075 **5 ⁰..⁹와 조합 가능
U+2076 **6 ⁰..⁹와 조합 가능
U+2077 **7 ⁰..⁹와 조합 가능
U+2078 **8 ⁰..⁹와 조합 가능
U+2079 **9 ⁰..⁹와 조합 가능
U+2205 set() (빈 집합)
U+2208 (elem)
U+2209 !(elem)
U+220B (cont)
U+220C !(cont)
U+2261 (==)
U+2262 !(==)
U+2286 (<=)
U+2288 !(<=)
U+2282 (<)
U+2284 !(<)
U+2287 (>=)
U+2289 !(>=)
U+2283 (>)
U+2285 !(>)
U+222A (|)
U+2229 (&)
U+2216 (-)
U+2296 (^)
U+228D (.)
U+228E (+)

원자 연산자 (Atomic operators)

원자(atomic) 연산자에는 U+269B ⚛ ATOM SYMBOL이 포함돼 있어요. 이들의 ASCII 대응은 연산자가 아니라 일반 서브루틴이에요.

my atomicint $x = 42;
$x⚛++;                # 유니코드 버전
atomic-fetch-inc($x); # ASCII 버전

ASCII 대안은 다음과 같아요.

기호 ASCII 비고
⚛= atomic-assign
atomic-fetch prefix:<⚛> 연산자
⚛+= atomic-add-fetch
⚛-= atomic-sub-fetch
⚛−= atomic-sub-fetch U+2212 마이너스 기호 사용
++⚛ atomic-inc-fetch
⚛++ atomic-fetch-inc
--⚛ atomic-dec-fetch
⚛-- atomic-fetch-dec

복수 코드포인트 (Multiple codepoints)

아래는 ASCII 대응을 위해 특별한 조합이 필요한 복수 코드포인트 연산자 목록이에요. 코드포인트는 공백으로 구분해 표시했지만 실제로는 붙여 써야 해요.

기호 코드포인트 ASCII 도입 비고
»=» U+00BB = U+00BB >>[=]>> v6.c ASCII '=' 사용
«=« U+00AB = U+00AB <<[=]<< v6.c ASCII '=' 사용
«=» U+00AB = U+00BB <<[=]>> v6.c ASCII '=' 사용
»=« U+00BB = U+00AB >>[=]<< v6.c ASCII '=' 사용