輸入 Unicode 字符
Perl 6 允許把 unicode 字符用作變量名. 很多操作符使用 unicode 符號(特別是在 set/bag 操作符中)還有一些引號結(jié)構(gòu). 因此, 知道如何把這些符號輸入編輯器, Perl 6 shell 和 命令行中是極好的, 特別是現(xiàn)實鍵盤中不存在那個符號的時候.
在各種操作系統(tǒng)和環(huán)境下關(guān)于輸入 unicode 字符的通用信息可以在 Wikipedia unicode input page 中找到.
編輯器和 shell
Vim
在 Vim 中, unicode 字符是通過先按 Ctrl-V(也表示為 ^V), 然后按下 u 和 要輸入的 unicode 字符的十六進制值來輸入的(在插入模式). 例如, 希臘字母 λ (lambda) 是通過組合鍵來輸入的:
^Vu03BB
更多關(guān)于在 Vim 中輸入特殊字符的信息可以在 Vim Wikia 頁 entering special characters 中找到.
Emacs
在 Emacs 中, unicode 字符的輸入是首先輸入和弦 Ctrl-x 8 Enter , 然后再輸入 unicode 代碼點的十六進制數(shù)字, 然后回車. 因此, 要輸入希臘字母 λ (lambda) 使用下面的組合鍵(命令之間添加了空格以使清晰):
Ctrl-x 8 Enter 3bb Enter
更多關(guān)于在 Emacs 中輸入 unicode 字符的信息可以在 Unicode Encoding Emacs wiki page 中找到.
Unix shell
在 bash shell 中, 要輸入 unicode 字符先鍵入 Ctrl-Shift-u, 然后鍵入 unicode 代碼點的值后回車. 例如, 要鍵入屬于操作符(∈)這個 unicode 字符, 使用下面的組合鍵(添加的空白是為了清晰):
Ctrl-Shift-u 2208 Enter
如果在 Unix shell 中開啟了 REPL, 這也是一種在 perl 6 的 REPL 中輸入 unicode 字符的方式之一.
Perl 6中有用的 Unicode 字符
引號
這些字符在法語和德語中是當(dāng)作引號使用的. 在 Perl 6中, 它們?nèi)匀挥米饕?在 POD 中是單引號, 在普通代碼中是雙引號), 還可以標(biāo)示超運算符. 下面是這些符號和它們的 unicode 十六進制值:
符號 unicode代碼點 ascii equivalent
? U+00AB <<
? U+00BB >>
因此, 下面這些結(jié)構(gòu)是可用的:
C? fixed-width POD text ?
say (1, 2) ?+? (3, 4); # 4 6 ; element-wise add
@array ?+=? 42; # add 42 to each element of @array
say ?moo?; # moo
my $baa = 123; say ?$baa?; # 123
Set/bag 操作符
下面列出的 set/bag 操作符 都有與集合理論相關(guān)的符號, unicode 代碼點, 和它們的 ascii 等價物. 要構(gòu)成這樣的一個字符, 只需鍵入字符組合鍵(例如 Vim中的 Ctrl-V u, Bash 中的 Ctrl-Shift-u), 然后輸入 unicode 代碼點的十六進制數(shù).
操作符 unicode代碼點 ascii equivalent
∈ U+2208 (elem)
? U+2209 !(elem)
? U+220B (cont)
? U+220C !(cont)
? U+2286 (<=)
? U+2288 !(<=)
? U+2282 (<)
? U+2284 !(<)
? U+2287 (>=)
? U+2289 !(>=)
? U+2283 (>)
? U+2285 !(>)
? U+227C (<+)
? U+227D (>+)
∪ U+222A (|)
∩ U+2229 (&)
? U+2216 (-)
? U+2296 (^)
? U+228D (.)
? U+228E (+)
數(shù)學(xué)符號
Wikipedia 包含了一個 unicode 中數(shù)學(xué)操作符和符號 的完整列表, 還有它們數(shù)學(xué)意義的鏈接.
希臘字符
希臘字符可以用作變量名了. 查看 Greek in Unicode Wikipedia article 列表獲取希臘和埃及字符還有它們的 unicode 代碼點.
例如, 把數(shù)值3賦值給 π, 在 Vim 中輸入(添加的空格是為了清晰):
my $Ctrl-V u 03C0 = 3; # same as: my $π = 3;
say $Ctrl-V u 03C0; # 3 same as: say $π;
上標(biāo)和下標(biāo)
使用 U+207x, U+208x 和 (less often) U+209x 范圍能直接創(chuàng)建一個有限的上標(biāo)和下標(biāo)的集合. 然而, 要生成一個值的平方或立方, 你需要使用 U+00B2 和 U+00B3 , 因為這些被定義在 Latin1 supplement Unicode block 中.
因此, 要書寫泰勒級數(shù)展開, 你可以在 Vim 中輸入:
exp(x) = 1 + x + xCtrl-V u 00B2/2! + xCtrl-V u 00B3/3! + ... + xCtrl-V u 207F/n!
# which would appear as
exp(x) = 1 + x + x2/2! + x3/3! + ... + x?/n!
或者指定列表中從1到k 的元素:
ACtrl-V u 2081, ACtrl-V u 2082, ..., ACtrl-V u 2096
# which would appear as
A?, A?, ..., A?