๋น ASCII ์๋ณ์๋ ํ์ฌ ๊ธฐ๋ฅ์ด ์ ํ๋ฉ๋๋ค. ๊ทธ๊ฒ๋ค์ ์ฒ๋ฆฌ๋ ์์ ๋์ด์ผ ํ๊ณ ๊ธฐ๋ฅ ๊ฒ์ดํธ๋ ์ ๊ฑฐ๋์ด์ผ ํฉ๋๋ค.
/cc @rust-lang/lang
์ง๋ช
cc @SimonSapin
๋ถ๋ช ํ ์ฐ๋ฆฌ๋ ์ด๊ฒ์ ๊ตฌํํฉ๋๋ค: http://www.unicode.org/reports/tr31/ ๋๋ ์ด์ ์ ์ฌํ ๊ฒ.
๋๋ ์ด๊ฒ์ด ์์ ํ๋๊ธฐ๋ฅผ ๋ฐ๋ผ์ง๋ง ์ฐ๋ฆฌ๊ฐ ์ณ์ ์ผ์ ํ๊ณ ์๋ค๊ณ ์ค์ค๋ก๋ฅผ ์ค๋ํ๋ ๋ฐ๋ ์ฝ๊ฐ์ ๋ ธ๋ ฅ์ด ํ์ํ ๊ฒ์ ๋๋ค.
์ฌ๊ธฐ์ ๋ญ๊ฐ ๋ง๋์ง ๋ชจ๋ฅด๊ฒ ๋ค. ์ ๋์ฝ๋ ๊ถ์ฅ ์ฌํญ ์ธ์๋ ๋ค๋ฅธ ์ธ์ด๊ฐ ์ค์ ๋ก ์ํํ๋ ์์ ๊ณผ ๊ด๋ จ ๋ฒ๊ทธ ๋ณด๊ณ ์ ๋๋ ๋นํ์ ๋ฐ๋์ง ์ดํด๋ณด๊ณ ์ถ์ ์ ์์ต๋๋ค. ์๋๋ฉด ์ด ๊ธฐ๋ฅ์ด ์ฒ์ ๋์ ๋์์ ๋ ์ด๋ฏธ ์๋ฃ๋์์ต๋๊น?
@SimonSapin
C ๋ฐ C++๋ http://unicode.org/reports/tr31/#Alternative_Identifier_Syntax (์ฝ๊ฐ์ ์ ํ์ด ์์)๋ฅผ ์ฌ์ฉํ๋ฉฐ isocpp ํฌ๋ผ์ด๋ ๋ฌธ์ ๋ชฉ๋ก์์ ์ด์ ๋ํ ๋ถ๋ง์ ๋ณธ ์ ์ด ์์ต๋๋ค. :)
๋ฌธ์ ๊ฐ์: http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1518.htm
Clang์์ ๊ตฌํ: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Lex/UnicodeCharSets.h?view=markup
์ฐธ์กฐ https://github.com/rust-lang/rust/issues/4928
์๋ณ์์ ์ ๊ทํ ๋ฐ ์ ๋์ฝ๋ mod
์ด๋ฆ์ ํ์ผ ์์คํ
์ด๋ฆ(OS X, IIRC์ ๊ฒฝ์ฐ)์ ๋งคํํ๋ ๋ฐ์๋ ๋ฌธ์ ๊ฐ ์์ง๋ง ์ฌ๊ธฐ์์ ๊ด๋ จ ๋งํฌ๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค . https://github.com /rust-lang/rust/issues/2253. (์ต์
์ ๊ฒฝ์ฐ ์ธ๋ผ์ธ์ด ์๋ mod
s ๋ฐ extern crate
s๋ ๊ฐ์ ๋ก ASCII๊ฐ ๋ ์ ์์)
์ #2253์ ์ ๋์ฝ๋๊ฐ ์๋ ์๋ณ์์ ์กฐ๊ธฐ ์์ ํ์ ๋ํด ๊ฑฑ์ ํ๊ฒ ๋ง๋๋ ํฐ ๋ฌธ์ ์ ๋๋ค.
(์ฌ๊ธฐ์ ์๋ ๋ ผ์๋ ๋ ๊ด๋ฒ์ํ๊ณ ํ๋ฆผ์์ด ๋ ๊ฐ์ ์ค๋ ๋๋ก ๋ถ๊ธฐ๋ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ์๋ณ์์ ๋ํด ํ๋์ ์ ๊ทํ ๊ฒฝ๋ก๋ฅผ ์ทจํ๊ณ ๋ฌธ์์ด ๋ฆฌํฐ๋ด ๋ด์ฉ์ ๋ํด ๋ค๋ฅธ ํ๋๋ฅผ _ํ ์ ์์ต๋๋ค_.)
์ด ํ ๋ก ์ RFCS ์ ์ฅ์(์: https://github.com/rust-lang/rfcs/issues/802 )๋ก ๋ง์ด๊ทธ๋ ์ด์ ํ ์ ์์ต๋๋ค.
๋๋ ์ด๊ฒ์ด RFC ํ๋ก์ธ์ค๋ฅผ ๊ฑฐ์ณ์ผ ํ๋ ๊ธฐ๋ฅ์ด๋ผ๋ ๋ฐ ๋์ํฉ๋๋ค.
non_ascii_idents
๊ธฐ๋ฅ ๊ฒ์ดํธ์ ์์ ํ(๋๋ ์ฌ์ฉ ์ค๋จ ๋ฑ)๋ฅผ ์ถ์ ํ๊ธฐ ์ํด ์ด ๋ฌธ์ ์ ์ฉ๋๋ฅผ ๋ณ๊ฒฝํ์ต๋๋ค.
lang ํ ํ์์์ ๋ ผ์ํ ํ ์ฐ๋ฆฌ๋ ์, RFC๊ฐ ์ฌ๊ธฐ์์ ์ ์ ํ ๋ฐฉ๋ฒ์ด ๋ ๊ฒ์ด๋ผ๊ณ ๊ฒฐ์ ํ์ต๋๋ค. ์ฐ๋ฆฌ๋ ๋ค๋ฅธ ์ธ์ด์์ ์๋ฃจ์ ์ ์์งํ๊ณ ์ฅ๋จ์ ์ ๋ถ์ํ๊ณ Rust์ ์ ์ ํ ์ ํ์ ์ ์ํ๋ ๋ฌด์ธ๊ฐ๊ฐ ํ์ํฉ๋๋ค. ์ด๊ฒ์ ๋ ผ์์ ์ฌ์ง๊ฐ ์๊ณ ์ถฉ๋ถํ ๋ณต์กํ์ฌ ์ปค๋ฎค๋ํฐ ์ ์ฒด์ ๊ฐ์ ธ์์ผ ํฉ๋๋ค. ํนํ ๋งค์ผ Rust๋ฅผ ํดํนํ๋ ๋ง์ ์ฌ๋๋ค์ด ์ด์จ๋ ๋น ASCII์ ๋ํ ๊ฒฝํ์ด ๋ง์ง ์๊ธฐ ๋๋ฌธ์ ๋๋ค.
๋ถ๋ฅ: P-๋ฎ์
ํ์ฌ RFC๊ฐ ์์ผ๋ฏ๋ก ์คํ ๊ฐ๋ฅํ ์ฝํ ์ธ ๊ฐ ์๋ ๊ฒ์ผ๋ก ํ์ํฉ๋๋ค.
JavaScript, Perl 5 ๋ฐ Perl 6์์ ์ด ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์๋ฐ์คํฌ๋ฆฝํธ(ํ์ด์ดํญ์ค 50)
function ะกะปะพะฒะพ(ััะพะนะฝะพัั) {
this.ััะพะนะฝะพัั = ััะพะนะฝะพัั;
}
var ะทะดัะฐััะธ = new ะกะปะพะฒะพ("ะะดัะฐะฒะตะน, ัะฒัั");
console.log(ะทะดัะฐััะธ.ััะพะนะฝะพัั) //ะะดัะฐะฒะตะน, ัะฒัั
ํ >=5.12
use utf8;
{
package ะกะปะพะฒะพ;
sub new {
my $self = bless {}, shift;
$self->{ััะพะนะฝะพัั} = shift;
$self
}
};
my $ะทะดัะฐััะธ = ะกะปะพะฒะพ->new("ะทะดัะฐะฒะตะน, ัะฒัั");
say ucfirst($ะทะดัะฐััะธ->{ััะพะนะฝะพัั}); #ะะดัะฐะฒะตะน, ัะฒัั
Perl6(์ด๊ฒ์ Perl์ ๋ค์ ๋ฒ์ ์ด ์๋๋๋ค. ์ด๊ฒ์ ์๋ก์ด ์ธ์ด์ ๋๋ค)
class ะกะปะพะฒะพ {
has $.ััะพะนะฝะพัั;
}
my $ะทะดัะฐััะธ = ะกะปะพะฒะพ.new(ััะพะนะฝะพัั => 'ะทะดัะฐะฒะตะน, ัะฒัั');
say $ะทะดัะฐััะธ.tc; #ะะดัะฐะฒะตะน, ัะฒัั
Rust์์๋ ๋ณผ ์ ์์ด์ ๊ธฐ์ฉ๋๋ค.
ECMAScript 2015 ์ ์๋ณ์๋ ์ ๋์ฝ๋ ํ์ค ๋ถ๋ก #31 ์ ๊ธฐ๋ณธ ์๋ณ์ ๊ตฌ๋ฌธ์ ๊ธฐ๋ฐ์ผ๋ก ํฉ๋๋ค.
use utf8;
๊ฐ ์๋ Perl์ ์๋์ ์ ๊ท ํํ์์ ์ฌ์ฉํ๋ฉฐ XID_Start
๋ฐ XID_Continue
๋ UAX # 31์์ ๊ฐ์ ธ์จ ๊ฒ ๊ฐ์ต๋๋ค.
/ (?[ ( \p{Word} & \p{XID_Start} ) + [_] ])
(?[ ( \p{Word} & \p{XID_Continue} ) ]) * /x
๋ค! @SimonSapin ๊ฐ์ฌํฉ๋๋ค!
ํ์ด์ฌ ์ ๊ฒฝ์ฐ <XID_Start> <XID_Continue>*
์
๋๋ค.
๋ฐ๋ผ์ ๋น ASCII ์๋ณ์๋ฅผ ํ์ฉํ๋ ๋ง์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๊ฐ ๋์ผํ ํ์ค์ ๊ธฐ๋ฐ์ผ๋ก ํ๋ ๊ฒ์ฒ๋ผ ๋ณด์ด์ง๋ง ์ธ๋ถ ์ฌํญ์์ ๊ฐ๊ฐ์ ์ฝ๊ฐ ๋ค๋ฅธ ์์ ์ ์ํํฉ๋๋ค...
๊ฐ์ธ์ ์ผ๋ก ์ํ ๊ด๋ จ ์๋ณ์์ ๋ํ ์ง์์ ๋ณด๊ณ ์ถ์ต๋๋ค. ์๋ฅผ ๋ค์ด, โ (๊ทธ๋ฆฌ๊ณ โฉ ๋ฐ โช๊ณผ ๊ฐ์ ์งํฉ ์ฐ์ฐ์). ์ฐ๊ตฌ ๋ ผ๋ฌธ/์ฌ์์ ๋ฐฉ์ ์์ ์ฝ๋๋ก ๋ณํํ๋ ๊ฒ์ ์ข ์ข ์ฅํฉํ๊ณ ์ฝ๊ธฐ ์ด๋ ค์ด ์ฝ๋๋ฅผ ์ด๋ํ๋ ๋์ฐํ ๊ณผ์ ์ ๋๋ค. ๋ ผ๋ฌธ์ ์ํ ๋ฐฉ์ ์์ ์๋ ๊ฒ๊ณผ ๋์ผํ ์๋ณ์๋ฅผ ์ฝ๋์์ ์ฌ์ฉํ ์ ์์ผ๋ฉด ๊ตฌํ์ด ๋จ์ํ๋๊ณ ์ฝ๋๋ฅผ ๋ณด๋ค ์ฝ๊ฒ โโํ์ธํ๊ณ ๋ ผ๋ฌธ์ ๋ฐฉ์ ์๊ณผ ๋น๊ตํ ์ ์์ต๋๋ค.
์ด ๊ธฐ๋ฅ์ ์์ ์ ์ ํํ ๋ฌด์์ ๋๊น? ์ฝ๋์์ ์๋ก ๋ค๋ฅธ ์ธ์ด๋ฅผ ์ ๋ง ๋ณด๊ธฐ ํํ๊ฒ ํผํฉํ์ฌ ๋ง๋ค ์ ์๋ ๊ฐ๋ฅ์ฑ์ ์ถ๊ฐํ๋ ๊ฒ ์ธ์(์์ด๊ฐ ์ ์ผํ ์ง์ ํ ๊ตญ์ ์ธ์ด์), ์ธ์ด ๊ธฐ๋ฅ์ ์๋ฌด๋ฐ ์ด์ ๋ ์ฃผ์ง ์์ต๋๋ค. ์๋๋ฉด ์ ๋์ฝ๋ ์ง์์ ์ํ ์ ๋์ฝ๋ ์ง์์ธ๊ฐ์?
@DoumanAsh ๋ชจ๋ ํ๋ก๊ทธ๋จ์ด ๊ตญ์ ์ ์ด์ง๋ ์์ผ๋ฉฐ ์์ด ์ ์ฐฝํจ์ด ํ๋ก๊ทธ๋๋ฐ์ ์๊ตฌ ์ฌํญ์ผ ํ์๋ ์์ต๋๋ค.
์ฝ๋์ ๋ณ์ ์ด๋ฆ๊ณผ ์ฃผ์์ด ์์ด๋ก ๋์ด ์์ด์ผ ํ๋ค๊ณ ๊ฒฐ์ ํ๋ ๊ฒ์ ๋ชจ๋ ํ๋ก์ ํธ์ ํ๋ฅญํ ๊ด๋ฆฌ์์ ๋๋ค. ์ด๊ฒ์ Rustc ์์ฒด๋ฅผ ํฌํจํ ๋ง์ ์คํ ์์ค ํ๋ก์ ํธ์์ ์ผ์ด๋๋ ์ผ์ ๋๋ค. ๊ทธ๋ฌ๋ ๊ทธ๊ฒ์ด ์ธ์ด๊ฐ ๊ทธ๊ฒ์ผ๋ก ์ ํ๋์ด์ผ ํ๋ค๋ ๊ฒ์ ์๋ฏธํ์ง๋ ์์ต๋๋ค.
๋ด๊ฐ ๋ณธ ์ฌ์ฉ ์ฌ๋ก๋ ํ๋ก๋์ ์ฝ๋๋ฅผ ์์ฑํ๊ธฐ ์ํ ๊ฒ์ด ์๋๋ผ ๊ต์ก์ ์ํ ๊ฒ์ ๋๋ค. ๋๋ ์ฌ๋๋ค์๊ฒ ํ๋ก๊ทธ๋๋จธ๊ฐ ๋๋ ค๋ฉด ์์ด์ ๋ฅํตํด์ผ ํ๋ค๊ณ ๋งํ๋ ๊ฒ์ด ์ ๋ง ์ง์ฆ๋ฉ๋๋ค. ๋ค๋ฅธ ์ํฉ์ ์ธ๊ตญ์ด UI๋ฅผ ์์ฑํ ๋ UI์ "pลรญjmenรญ"๋ผ๋ ํ ์คํธ ์์๊ฐ ์์ง๋ง ๊ฐ์ "last name"์ด๋ผ๋ ๋ณ์์ ์ด์ํ ๊ฐ์ ๋ฃ๋ ๊ฒฝ์ฐ์ ๋๋ค. ๋ ์ด์ํ ๊ฒ์ "rodnรฉ_ฤรญslo"(์ฒด์ฝ ์ฃผ๋ฏผ๋ฑ๋ก๋ฒํธ)๋ผ๋ ํ๋๊ฐ ์๋ ๊ฒฝ์ฐ์ ๋๋ค. ์ด์ ์ ์ฌํ ์์ด ๋จ์ด๋ ์์ต๋๋ค. ๋ฐ๋ผ์ ์ฒด์ฝ ์ธ๊ธ ์ฑ์ด๋ ์ํ ์ฑ์ ์์ฑํ๋ ๊ฒฝ์ฐ ์ ๋นํ ์ด์ ์์ด ์ด์ํ ์ด๋ฆ์ ์ฌ์ฉํด์ผ ํ์ต๋๋ค. ๊ทธ๋ฐ ์ฑ์ด ์ด์จ๋ ๋ค๋ฅธ ์ธ์ด๋ก ์ด์๋ ์ ์๋ ๊ฒ๊ณผ๋ ๋ค๋ฆ ๋๋ค.
์ด๋ฅผ ํ์ฉํ๋ ๋ ๋ค๋ฅธ ์ข์ ์ด์ ๋ ์ธ์ดํ์๊ฐ ์ข
์ข
๋ณ์ ์ด๋ฆ์ IPA ํ๊ธฐ๋ฒ์ ์ฌ์ฉํด์ผ ํ๊ธฐ ๋๋ฌธ์
๋๋ค. IPA ๊ธฐํธ์ ์์ด ์ด๋ฆ์ ์์ฒญ๋๊ฒ ๊ธธ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ๋นจ๊ฐ์์ด๋ผ๋ ๋จ์ด์ ๋ฏธ๊ตญ์ ์์ด r ์๋ฆฌ๋ ํ ๋ฌธ์ ษนฬ ๋ก ํ๊ธฐ๋์ง๋ง ํํฌ ํ ์ญ๊ตด๊ณก ๊ทผ์ฌ๋ก ๋ช
๋ช
๋ฉ๋๋ค. https://en.wikipedia.org/wiki/Alveolar_and_postalveolar_approximants ๋ฐ๋ผ์ ํ
์คํธ ์์ฑ ๋ณํ ํ๋ก๊ทธ๋จ์ ์์ฑํ๋ ๊ฒฝ์ฐ $ fn say_post_alveolar_retroflexive_approximant()
๋์ fn say_ษนฬ ()
์ ์์ฑํ๋ ๊ฒ์ด ํฉ๋ฆฌ์ ์ผ ์ ์์ต๋๋ค.
์๊ฒฌ์ด ์๋ ์ธก๋ฉด์์, ๋ณ์ ์ด๋ฆ์ ์ผ๋ถ๋ก ํ์ฉ๋๋ ์ ๋์ฝ๋ ์ฝ๋ ํฌ์ธํธ์ ๊ด๋ จํ์ฌ ์ฌ๊ธฐ์์ ํฅ๋ฏธ๋ก์ด ํ ๋ก ์ด ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ์: ๋ณ์ ์ด๋ฆ์ priceโฌ
๋ก ์ง์ ํ ์ ์์ต๋๊น? ์๋ง๋ ์๋ ๊ฒ์
๋๋ค price$
๊ฐ ์๋ํ์ง ์๋ ๊ฒ ๊ฐ์ต๋๊น? ๋ฒกํฐ ์์ฑ์ ์ํ โ![] ๋งคํฌ๋ก๋ฅผ ์์ฑํ ์ ์์ต๋๊น? ๋๊ตฐ๊ฐ๊ฐ ๊ทธ๋ ๊ฒํ๊ณ ์ถ์ด ํ ์๋ ์๋ค๋ ๊ฒ์ ์๊ณ ์์ง๋ง โ "์ํ ๊ธฐํธ" http://www.fileformat.info/info/unicode/char/2192/index.htm ์
๋๋ค. ๋ฐ๋ผ์ ๋ ์ฑํ ๋ ์ด๋ค ์ฝ๋ ํฌ์ธํธ๊ฐ ํ์ฉ๋๊ณ ์ด๋ค ์ฝ๋ ํฌ์ธํธ๊ฐ ํ์ฉ๋์ง ์๋์ง ๊ฒฐ์ ํด์ผ ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์๋ง๋ rust๋ ๋ฌด์ธ๊ฐ๊ฐ ๋ฌธ์์ธ์ง ์๋์ง ์ ๋์ฝ๋ ํ์ค์ ๋ฉ์ฒญํ๊ฒ ๋ฌป์ง ์์์ผ ํฉ๋๋ค.
ํ์ฌ ๊ตฌํ์์ @timthelion Rust๋ ๋จ์ํ ์ ๋์ฝ๋ ํ์ค์ ์ด๋ค ๊ฒ์ด ๋ฌธ์์ธ์ง ์๋์ง ๋ฌป์ง ์์ต๋๋ค. ๋ชจ๋ ์์ ์์ ์ ํํ๊ณ ์ง๊ด์ ์ธ ๋์์ ํ๋ XID_Start ๋ฐ XID_Continue ์ ๋์ฝ๋ ์์ฑ์ ์์กดํฉ๋๋ค.
'ษน'
๋ฐ 'ฬ '
๊ฐ ๋ชจ๋ XID_Continue์ด๋ฏ๋ก say_ษนฬ
๊ฐ ํ์ฉ๋ฉ๋๋ค.'โฌ'
๋ฐ '$'
๋ XID_Continue๊ฐ ์๋๊ธฐ ๋๋ฌธ์ $ priceโฌ
๋ฐ price$
๋ ํ์ฉ๋์ง ์์ต๋๋ค.'โ'
โ![]
๋ ํ์ฉ๋์ง ์์ต๋๋ค.pลรญjmenรญ
๋ฐ rodnรฉ_ฤรญslo
๊ฐ ํ์ฉ๋ฉ๋๋ค.@dtolnay ์ค๋ช ๊ฐ์ฌํฉ๋๋ค. ๋ด๊ฐ "๋ฉ์ฒญํ๊ฒ"๋ผ๋ ๋จ์ด๋ฅผ ์ฌ์ฉํ ๊ฒ์ ๋ํด ๊ธฐ๋ถ์ด ์ํ์ง ์์์ผ๋ฉด ์ข๊ฒ ์ต๋๋ค. ์๋ง๋ ๊ทธ๊ฒ์ ์๋ชป ์ ํ๋ ๋จ์ด์์ ๊ฒ์ ๋๋ค.
์๋์, ์๋ํ ์ฌ๋๋ค์ด ๋๊ฐ์ด ์๊ฐํ๊ณ ์ ๋์ฝ๋ ๊ธฐ์ ์์ํ์ ํ๋ฅญํ ์ฌ๋๋ค์ด ๋น์ ๊ณผ ๊ฐ์ ์ฐ๋ ค๋ฅผ ๊ฐ๊ณ ์๋ค๋ ์ ์ ์ง์ ํ ๊ฒ์ ๋๋ค.
๋ค๋ฅธ ํ๋ก๋์ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ์๊ฐํด๋ผ ์ ์์ต๋๋ค.
ํน์ ๋ถ์ผ์ ์ผ๋ถ ๋จ์ด๋ ์์ด๋ก ๋ฒ์ญํ๊ธฐ ์ด๋ ต์ง๋ง ์ผ๋ถ ํ๋ก๊ทธ๋จ(์: ๊ฒ์, ์ง์ญ ์จ๋ผ์ธ-์คํ๋ผ์ธ ์๋น์ค)์ ์๋ฅผ ๋ค์ด ์ค๊ตญ ์๋ฆฌ ์ด๋ฆ, ์์ ์ด๋ฆ, ์ฅ์ ์ด๋ฆ์ ์ฒ๋ฆฌํด์ผ ํ ์ ์์ต๋๋ค. ํ์ฌ์์ ์ผํ๋ ํ๋ก๊ทธ๋๋จธ๋ ์์ด ๋ฒ์ญ์ด ๋ฌด์์ธ์ง ์ ํ์๊ฐ ์์ง๋ง ๋ณ์ ๋ฐ ํจ์ ์ด๋ฆ์ ์ ๊ณตํด์ผ ํฉ๋๋ค. ๊ทธ๋ค์ ์์ด๋ฅผ ์ฌ์ฉํด์ผ ํ๋ ๊ฒฝ์ฐ ์ด์ํ ์ด๋ฆ์ ๋ ์ฌ๋ฆด ๊ฒ์ ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ๋ค๋ฅธ ๋๋ฃ๊ฐ ์ดํดํ๊ธฐ์๋ ๋งค์ฐ ์ด๋ ต์ต๋๋ค.
ํ์์ ์์ ์ฐ๋ฆฌ ์ฌ๋ก๊ฐ ๋ง๋ค๋ ๊ฒ์ ์์ฌ์ ์ฌ์ง๊ฐ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ์ธ๋ถ ์ฌํญ์ ํ์ ํ๋ ์ผ๋ง ๋จ์์ต๋๋ค.
๋ค๋ฅธ ์ฌ๋ฌ ์ธ์ด๊ฐ Unicode Standard Annex # 31์ ๋์ํ์ง๋ง ์ธ๋ถ ์ฌํญ์๋ ์ฝ๊ฐ์ ์ฐจ์ด๊ฐ ์์ต๋๋ค. ์ด์์ ์ผ๋ก, ์ฐ๋ฆฌ๋ ๋ฌด์์ด Rust์ ๊ฐ์ฅ ์ข์์ง ๊ฒฐ์ ํ๊ธฐ ์ํด ๋ฌด์์ด ์ด๋ฌํ ์ฐจ์ด๋ฅผ ์ ๋ฐํ๋์ง ์์๋ผ ๊ฒ์ ๋๋ค.
https://rosettacode.org/wiki/Unicode_variable_names ์๋ ์ฌ๋ฌ ์ธ์ด์ ๋ํ ์ ๋ณด๊ฐ ์์ต๋๋ค.
@SimonSapin ์ ๋์ํฉ๋๋ค. ์๋ฌด๋ ์ด๊ฒ์ด ์ ์ฉํ ๊ฒ์ด๋ผ๊ณ ์์ฌํ์ง ์์ต๋๋ค. ๋ฌธ์ ๋ ํ์ค ์๋ฃจ์ ์ด ์๊ณ ์ฐ๋ฆฌ ์ค ๋ง์ ์ฌ๋๋ค(์: ๋ ์์ )์ด ์ ์ถฉ์์ ํ๊ฐํ๋ ๋ฐ ์ด์ ํ ์์น์ ์๋ค๋ ๊ฒ์ ๋๋ค. ์ฐ๋ฆฌ๊ฐ ๋์น๊ณ ์๋ ๊ฒ์ ์ ์ฝ ์กฐ๊ฑด์ ์์งํ๊ณ ๊ถ์ฅ ์ฌํญ์ ์ ์ํ ์ฌ๋์ ๋๋ค. ๋๋ ์ด ์์ ์์ ๊ฒฐ์ ์ ๋ด๋ฆฌ์ง ์๋ ๊ฒ๋ณด๋ค ์ด๋ค ๊ฒฐ์ ์ ๋ด๋ฆฌ๋ ๊ฒ์ด ๋ ๋์ ๊ฑฐ๋ผ๊ณ ์๊ฐํฉ๋๋ค. ๊ทธ๋๋ ์์ง ๋ ๋ค๋ฅธ ๊ท์น ์งํฉ์ ์ฑํํ๋ ๊ฒ๋ณด๋ค ๋ช ๊ฐ์ง ์ ๋ก(์ด์์ ์ผ๋ก๋ ์ ๋์ฝ๋ ์ฌ์์ด๋ ๋ถ๋ก์ด์ง๋ง ๋ค๋ฅธ ์ธ์ด์ผ ์๋ ์์)๋ฅผ ๋ฐ๋ฅด๋ ๊ฒ์ ํ์คํ ์ ํธํฉ๋๋ค.
@nikomatsakis ๋ค์ํ ์ธ์ด ๊ฐ์ ์์ ์ฐจ์ด์ ์ ๋๊ธฐ๋ฅผ ๋ถ์ฌํ ์ ํํ ์์ธ์ ์กฐ์ฌํ๋ ๊ฒ์ด ์ข๊ฒ ์ง๋ง ์๋ฌด๋ ๊ทธ ์กฐ์ฌ์ ๋์์ง ์๊ณ ์ด์จ๋ ๊ณ์ ์งํํ๊ณ ์ถ๋ค๋ฉด UAX # 31์ ์ ํํ ๋ฐ๋ฅด๋ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ํ์ฌ ๊ตฌํ์) ํ๋ฅญํ ๊ธฐ๋ณธ๊ฐ์ ๋๋ค.
ํ์ฌ ๊ตฌํ๊ณผ ์ผ์นํ๋๋ผ๋ ์ธ๋ถ์ ์ธ ๋์์ธ์ผ๋ก RFC ํ๋ก์ธ์ค๋ฅผ ์งํํ๋ ๊ฒ์ด ์ฌ์ ํ ๊ฐ์น๊ฐ ์์ ์ ์์ต๋๋ค. (์ด๋ค ๋ฌธ์๋ฅผ ์ฌ์ฉํ ์ ์๋์ง, ๋๋ฑ์ฑ์ ์ํด ์ ๊ทํ/๋น๊ตํ๋ ๋ฐฉ๋ฒ, ํฅํ ์ ๋์ฝ๋ ๋ฒ์ ์ ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ ๋ฑ) ์ด RFC๋ฅผ ์์ฑํ๋ ์ฌ๋์ ๋๊ตฌ๋ ์ง UAX 31์ ์์์ ์๋๋ก ํ ๋ฒ ์ด์ ์ฝ์ ๊ฒ์ ์ ์ํฉ๋๋ค.
๋ํ ์๋ณ์์ ๋ํด ์ PRECIS ํ๋กํ(๋๋ ๊ธฐ์กด ํ๋กํ ์ค ํ๋์ ์ ํ๋ ํ์ ์งํฉ์ ์ฌ์ฉํ์ฌ) PRECIS ํ๋กํ[1]์ ๋ง๋๋ ๊ฒ์ ๊ณ ๋ คํ ์๋ ์์ต๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ์ฝ๊ฐ ๋ค๋ฅธ ๊ฒฝ์ฐ์๋ ๋์ผํ๊ฒ ๊ฐ์ฃผ๋์ด์ผ ํ๋ ์๋ณ์๋ฅผ ์ ๊ทํํ ์ ์์ ๋ฟ๋ง ์๋๋ผ(์: ๋์ผํ๊ฒ ๋ณด์ด์ง๋ง ์ ๋์ฝ๋ ํํ์ด ์ฝ๊ฐ ๋ค๋ฅธ ํ ์คํธ๋ฅผ ์ถ๋ ฅํ๋ ํค๋ณด๋๊ฐ ์๋ ๋ก์ผ์ผ์ ๊ฒฝ์ฐ) ๋ช ํํ ์ ๋ณด๋ฅผ ์ ๊ณตํ ์ ์์ต๋๋ค. ์ ํจํ Rust ์๋ณ์๊ฐ ๋ฌด์์ธ์ง ๊ฒฐ์ ํ๊ธฐ ์ํ ๊ฐ๊ฒฐํ ๊ท์น ์ธํธ.
์ ๋ PRECIS ํ๋ ์์ํฌ์ ๊ธฐ์กด Rust ๊ตฌํ์ ๋ํด ์์ง ๋ชปํฉ๋๋ค.
์ค์ค๋ก๋ฅผ ์ ๋ฌธ๊ฐ๋ผ๊ณ ๋ถ๋ฅด์ง๋ ์๊ฒ ์ง๋ง PRECIS ๊ตฌํ ํ๋๋ฅผ ๊ตฌ์ถํ๋ ๋ฐ ๋์์ ์คฌ๊ณ ์ผ๋ฐ์ ์ผ๋ก RFC์ ๋ช ๊ฐ์ง ํจ์ ๊ณผ ๋ฌธ์ ์ ์ต์ํฉ๋๋ค. ํ์ํ ๊ณณ์.
[1] [RFC 7564](https://tools.ietf.org/html/rfc7564): PRECIS ํ๋ ์์ํฌ: ์์ฉ ํ๋ก๊ทธ๋จ ํ๋กํ ์ฝ์์ ๊ตญ์ ํ ๋ฌธ์์ด์ ์ค๋น, ์ํ ๋ฐ ๋น๊ต
๋๊ฐ์ด ์๊ธด ์บ๋ฆญํฐ์ ๋ํ ์ข์ ์ . ์ฌ๊ธฐ๋ ์ํคํผ๋์
๋ฌธ์ ์ ๋ํ ๊ธฐ์ฌ
https://en.wikipedia.org/wiki/Duplicate_characters_in_Unicode
๋ค์์ ์ค๋ณต ๋ฌธ์๋ฅผ ์ค๋ช
ํ๋ ๊ธฐ์ฌ์
๋๋ค.
์์์ ์คํฌ๋ฆฝํธ๋ ๋๋ถ๋ถ ํตํฉ๋์ด ์์ต๋๋ค.
https://people.w3.org/rishida/scripts/chinese/
2017๋
4์ 11์ผ ์คํ 9์ 1๋ถ์ Sam Whited๋ ๋ค์๊ณผ ๊ฐ์ด ์ผ์ต๋๋ค.
>
์ฐ๋ฆฌ๋ ๋ํ ์๋ก์ด(๋๋ ๋ ๊ฐ๋ฅ์ฑ์ด ๋์
๊ธฐ์กด ํ๋กํ ์ค ํ๋์ ์ ํ๋ ํ์ ์งํฉ) PRECIS ํ๋กํ [1]
์๋ณ์์ ๊ฒฝ์ฐ. ์ด๋ ๊ฒ ํ๋ฉด ๋ค์๊ณผ ๊ฐ์ ์๋ณ์๋ฅผ ์ ๊ทํํ ์ ์์ต๋๋ค.
์ฝ๊ฐ ๋ค๋ฅด๋๋ผ๋ ๋์ผํ ๊ฒ์ผ๋ก ๊ฐ์ฃผํด์ผ ํฉ๋๋ค(์:
๋์ผํ๊ฒ ๋ณด์ด๋ ํ ์คํธ๋ฅผ ์ถ๋ ฅํ๋ ํค๋ณด๋๊ฐ ์๋ ๋ก์ผ์ผ์ ๊ฒฝ์ฐ
๊ทธ๋ฌ๋ ์ ๋์ฝ๋ ํํ์์ ์ฝ๊ฐ ๋ค๋ฆ) ์ ๊ณตํ ๋ฟ๋ง ์๋๋ผ
์ ํจํ Rust๊ฐ ๋ฌด์์ธ์ง ๊ฒฐ์ ํ๊ธฐ ์ํ ๋ช ํํ๊ณ ๊ฐ๊ฒฐํ ๊ท์น ์ธํธ
์๋ณ์.PRECIS์ ๊ธฐ์กด Rust ๊ตฌํ์ ๋ํด ์์ง ๋ชปํฉ๋๋ค.
ํ๋ ์์ํฌ(ํ๋๋ฅผ ๋ง๋๋ ๋ฐ ํ์ํ ๋ง์ ์ ๋์ฝ๋ ์ธํ๋ผ
๋ด ์๊ฐ์๋ ์ฌ์ ํ ๋๋ฝ๋์์ง๋ง ์ด๊ฒ์ ์๋ง๋ ์์ ๋์ด์ผ ํ ๊ฒ์ ๋๋ค
์ด๋ ์ ๋).[1] RFC 7564 https://tools.ietf.org/html/rfc7564 : PRECIS ํ๋ ์์ํฌ:
๊ตญ์ ํ ๋ฌธ์์ด์ ์ค๋น, ์ํ ๋ฐ ๋น๊ต
์์ฉ ํ๋กํ ์ฝ์์โ
๋น์ ์ด ์ธ๊ธ๋์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๋ฐ๋ ๊ฒ์ ๋๋ค.
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ณ GitHub์์ ํ์ธํ์ธ์.
https://github.com/rust-lang/rust/issues/28979#issuecomment-293367700 ,
๋๋ ์ค๋ ๋ ์์๊ฑฐ
https://github.com/notifications/unsubscribe-auth/ABU7-IMgXefW2yZYyM0tn8qLhpGFw0bSks5ru84GgaJpZM4GM3Lj .
@SamWhited ์ ๋์ฝ๋์ NFC ๋๋ NFKC๋ณด๋ค PRECIS๊ฐ ํ์ํ ์ด์ ๋ ๋ฌด์์ ๋๊น?
์ ๋์ฝ๋์ NFC ๋๋ NFKC๋ณด๋ค PRECIS๊ฐ ํ์ํ ์ด์ ๋ ๋ฌด์์ ๋๊น?
TL:DR โ ์ ๊ทํ๋ ๋ฌด์ธ๊ฐ๊ฐ ์ ํจํ ์๋ณ์์ธ์ง ๊ฒฐ์ ํ ๋ ์ํํ๊ณ ์ ํ๋ ํ ๋จ๊ณ์ผ ๋ฟ์ ๋๋ค. ๋ค๋ฅธ ์์ ๋ ์ํํด์ผ ํ ์๋ ์๊ณ ์ํํ์ง ์์ ์๋ ์์ต๋๋ค.
@SimonSapin ์ ๋์ฝ๋ ์ ๊ทํ๋ PRECIS ํ๋กํ์ผ์ ํ ๋จ๊ณ์ผ ๋ฟ์
๋๋ค(๊ทธ๋์ ์ฐ๋ฆฌ๋ ์ค์ ๋ก ์ ๊ทํ๋ฅผ ์ฌ์ฉํ๊ณ ์์ ๊ฒ์
๋๋ค. ์ถ์ธก์ ๋ฐ๋ฅด๋ฉด NFC์ผ ๊ฒ์
๋๋ค). ๊ทธ๋ฌ๋ PRECIS๋ ๋ ๊ด๋ฒ์ํ ํญ๋ชฉ์ ๋ค๋ฃน๋๋ค. ์๋ฅผ ๋ค์ด, ์ ๊ทํ ํ์์ ๋๋น ๋งคํ์ ์ํํ์ง ์์ผ๋ฏ๋ก(์๊ฐํ์ง ์์ต๋๊น?), ๋ฐ๋ผ์ FullWidth
๋ ๏ผฆ๏ฝ๏ฝ๏ฝ๏ผท๏ฝ๏ฝ๏ฝ๏ฝ
์ ๋์ผํ ์๋ณ์๊ฐ ์๋๋๋ค. ์ ์ฒด ๋๋น ํ
์คํธ๋ฅผ ์
๋ ฅํ๋ ค๋ ํค๋ณด๋๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ์ด๊ฒ์ด ๋ฌธ์ ์ผ ์ ์์ต๋๋ค(์ด๋ ๋ผํด ๋ฌธ์๋ณด๋ค ๋์์์ ๋ฌธ์์ ๋ ๋ฌธ์ ๊ฐ ๋ ์ ์์ง๋ง ์ ์ฒด ๋๋น ํ
์คํธ๋ฅผ ์ฌ์ฉํ๋ ๋ก์ผ์ผ์ ๋๊ตฐ๊ฐ๋ ๋ด๊ฐ ์ด๋ค ์์ผ๋ก๋ ๋ฌธ์ ๋ฅผ ์๋ชป ํํํ๊ณ ์๋์ง ์๋ ค์ฃผ์ธ์. PRECIS ํ๋กํ์ผ์ด ํ ์ ์๋ ๋ค๋ฅธ ์ผ์๋ ํ์ฉ๋๋ ๋ฌธ์ ์์ฑ์ ํ์ ์งํฉ์ ์ ์ํ๋ ๊ฒ์ด ํฌํจ๋ฉ๋๋ค(์: ๋ฌธ์, ์ซ์, ๋์ ๋ฐ ๋ฌธ์ ๋๋ ์ด์ ์ ์ฌํ ๊ฒ์ผ๋ก ์์).
_๋ฉด์ฑ ์กฐํญ:_ ์ ๋ ์ค์ ๋ก ์ ์ฒด ๋๋น ํ ์คํธ ๋งคํ์ด ๋ฐ๋์งํ์ง ์ฌ๋ถ์ ๋ํด ์๊ฐํ์ง ์์์ต๋๋ค. ๊ทธ๊ฒ์ ๋จ์ง ์์ผ ๋ฟ์ ๋๋ค. ์ ๊ทํ๊ฐ ์ค์ํ ์ ๋ถ์ผ ์๋ ์๊ณ ๋งคํ์ ์ ํ ํ์ง ์๋ ๊ฒ์ผ ์๋ ์์ต๋๋ค. Go๋ ์๋ณ์์ ๋ฌธ์ ๋๋ ์ซ์ ์์ฑ์ด ์๋์ง ํ์ธํ๊ธฐ๋ง ํ๋ฏ๋ก, ๊ทธ๊ฒ๋ง์ผ๋ก ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋๋ค๋ฉด ์ฐ๋ฆฌ์๊ฒ๋ ๊ด์ฐฎ์ ๊ฒ์ ๋๋ค. ํ์คํ ๋ ๋ง์ ์๊ฐ์ด ํ์ํฉ๋๋ค.
์ถ๊ฐ ์ฝ๊ธฐ: ์ด๊ฒ์ Go ์ฌ์์ด ํ๋ ์ผ์ ๋๋ค(๋ด๊ฐ ์ ์ํ ๊ฒ๋ณด๋ค ํจ์ฌ ๊ฐ๋จํ๋ฉฐ ์ข์ ๊ฒ์ผ ์๋ ์๊ณ ์๋ ์๋ ์์): https://golang.org/ref/spec#Source_code_representation
PRECIS๋ ๋ฌด์์ ์ฌ์ฉํฉ๋๊น? ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๊ฐ ์์ต๋๊น?
PRECIS๋ ๋ฌด์์ ์ฌ์ฉํฉ๋๊น? ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๊ฐ ์์ต๋๊น?
Go ์ด์ธ์ ์ธ์ด๊ฐ ๋ฌด์์ธ์ง ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค.
๊ด๋ จ Go 2 ๋ฌธ์ : golang/go#16033
2017๋ 4์ 11์ผ ํ์์ผ 02:07:49PM -0700์ Sam Whited๋ ๋ค์๊ณผ ๊ฐ์ด ์ผ์ต๋๋ค.
์๋ฅผ ๋ค์ด, ์ ๊ทํ ํ์์ ๋๋น ๋งคํ์ ์ํํ์ง ์์ผ๋ฏ๋ก
FullWidth
๋๏ผฆ๏ฝ๏ฝ๏ฝ๏ผท๏ฝ๏ฝ๏ฝ๏ฝ
์ ๋์ผํ ์๋ณ์๊ฐ ์๋๋๋ค.
NFKC๋ ๋ค์์ ์ํํฉ๋๋ค.
Python 3.6.0 (default, Jan 16 2017, 12:12:55)
[GCC 6.3.1 20170109] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> ๏ผฆ๏ฝ๏ฝ๏ฝ๏ผท๏ฝ๏ฝ๏ฝ๏ฝ = 1
>>> FullWidth
1
--
์น์ ํ๋,
lilydjwg
@SamWhited , ์ฒซ ๋ฒ์งธ ๋งํฌ์์ ๋ค์์ ์ฐพ์ต๋๋ค.
identifier = letter { letter | unicode_digit } .
letter = unicode_letter | "_" .
๊ทธ๋ฌ๋ ๋ด๊ฐ ๋งํ ์ ์๋ ํ Go๋ ํ์ฌ ์ ๊ทํ๋ฅผ ์ํํ์ง ์์ผ๋ฉฐ PRECIS๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ ์์ ๋๋ค. ๊ทธ ๋ง์ต๋๊น?
๊ทธ๋ฌ๋ ๋ด๊ฐ ๋งํ ์ ์๋ ํ Go๋ ํ์ฌ ์ ๊ทํ๋ฅผ ์ํํ์ง ์์ผ๋ฉฐ PRECIS๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ ์์ ๋๋ค. ๊ทธ ๋ง์ต๋๊น?
@SimonSapin ๋ง์ต๋๋ค. ๊ธ์์, ์ค์ ๋ก ์ ์๋ ์๋๊ณ ๊ทธ๋ฅ ์ด ๋ฌธ์ ์ฒ๋ผ ์๊ฐํด ๋ด์ผ ํ ์์ด๋์ด์ ๋๋ค(์ฃ์กํฉ๋๋ค. ๊ทธ ๋ฌธ์ฅ๊ณผ ์ ๋งํฌ๋ฅผ ๋ค์ ์ฝ์ด๋ณด๋ ์๋ชป๋ ํํ์ด์์ต๋๋ค. ์ง๊ธ ๋น์ฅ ์ฌ์ฉํ๋ค๋ ์๋ฏธ๋ ์๋๋๋ค. ๋จ์ง ์ ๊ฐ Go ์ด์ธ์ ๋ค๋ฅธ ๊ฒ์ ์ค์ ๋ก ๋นASCII ์๋ณ์๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํด ๋ฌด์์ ํ๋์ง ๋ชจ๋ฆ ๋๋ค).
@SimonSapin
ํ์ฌ ๊ตฌํ๊ณผ ์ผ์นํ๋๋ผ๋ ์ธ๋ถ์ ์ธ ๋์์ธ์ผ๋ก RFC ํ๋ก์ธ์ค๋ฅผ ์งํํ๋ ๊ฒ์ด ์ฌ์ ํ ๊ฐ์น๊ฐ ์์ ์ ์์ต๋๋ค.
๐
๋ฐฉ๊ธ UAX #31 ์ ํตํด ๊ทธ๋ค์ด ํ ์ผ์ ๋ณด๊ณ ์์๊ณ PRECIS ํ๋กํ์ผ์ ์ฌ์ฉํ๋ ๊ฒ์ ๋ ๋ค๋ฅธ ์ด์ ์ด ๋์ ๋์์ต๋๋ค. stringprep์ ์ฌ์ฉํ์ง ์๊ณ ๋์ PRECIS๋ฅผ ์ฌ์ฉํ๋ ๊ฒ๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ์ ๋์ฝ๋ ๋ฒ์ ์์ ๋ฏธ๋์ ํธํ๋๊ณ ๋ฏผ์ฒฉํ ์ ์๋ ๋ฐฉ๋ฒ์ ์ ๊ณตํฉ๋๋ค( ๊ฐ๋ณ ์ฝ๋ ํฌ์ธํธ ์์ฒด๊ฐ ์๋ ์ฝ๋ ํฌ์ธํธ์ ํ์ ์์ฑ์ ๋ํด ์๋).
TR31์๋ ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐ ๋์์ด ๋๋ " Immutable Identifiers "๋ผ๋ ๊ฐ๋ ์ด ์์ง๋ง ์ฌ์ค์ ์์ ํ์ ํด๋์ค์์ ํ์๋ PRECIS ํ๋กํ ์ฝ์ ์ฝ๊ฐ ๋ ์ ํ์ ์ธ ๋ฒ์ ์ด์ง๋ง PRECIS๊ฐ ๊ท์น์ ์ง์ ํด์ผ ํ๋ ์์์ ๋ํ ๊ณ ๋ ค ์ฌํญ์ด ์์ต๋๋ค. ์ ์ฉ (์๊ฐํ์ง ์์ต๋๊น?) ๋ํ ๊ทธ๋ฆฌ์ค ์ต์ข ์๊ทธ๋ง ์ฌ์ฉ๊ณผ ๊ฐ์ PRECIS ํ๋ ์ ์ํฌ ๋๋ ํ๊ธ ์๋ชจ ์ฃผ๋ณ์ ์ผ๋ถ ์ฌ๋ก๋ฅผ ๋ค๋ฃจ์ง ์์ต๋๋ค (๋ค์ ๋งํ์ง๋ง, ๋๋ ์ด๋ค ์ค ์ด๋ ์ชฝ์๋ ์ ๋ฌธ๊ฐ๊ฐ ์๋๋๋ค. , ๊ทธ๋ฌ๋ ๊ทธ๊ฒ์ด PRECIS๊ฐ ์กด์ฌํ๋ ์ด์ ์ด๋ฉฐ ์ ๋ฌธ๊ฐ๋ค์ด ์ด๋ฏธ ์์ ์ ์ํํ์ต๋๋ค).
์ด๋ ์ ๋์ฝ๋ ๋ฒ์ ์ ์ฒด์์ ๋ฏธ๋์ ํธํ๋๊ณ ๋ฏผ์ฒฉํ ์ ์๋ ๋ฐฉ๋ฒ์ ์ ๊ณตํฉ๋๋ค(๊ฐ๋ณ ์ฝ๋ ํฌ์ธํธ ์์ฒด ๋์ ์ฝ๋ ํฌ์ธํธ์ ํ์ ์์ฑ์์ ์๋).
๋๋ ์ด ์ ์ ์ดํดํ์ง ๋ชปํ๋ค. XID_Start
๋ฐ XID_Continue
๋ ํ์ ์์ฑ์
๋๋ค.
๋๋ ์ด ์ ์ ์ดํดํ์ง ๋ชปํ๋ค. XID_Start ๋ฐ XID_Continue๋ ํ์ ์์ฑ์ ๋๋ค.
๊ทธ๋ ๋ค๋ฉด UAX 31์ ์๋ชป ์ดํดํ์ ์ ์์ต๋๋ค. ํน์ ์ ๋์ฝ๋ ๋ฒ์ ์ด ํ์ํ ๊ฒ์ฒ๋ผ ๋ณด์์ต๋๋ค. ๋ค์ ์ฝ์ด๋ ์ด๋์ ์ป์๋์ง ๋ชจ๋ฅด๊ฒ ์ต๋๋ค.
์ด๊ฒ์ด ์ด๊ฒ์ ๊ฒ์ํ๊ธฐ์ ์ ํฉํ ์ฅ์์ธ์ง ํ์คํ์ง ์์ง๋ง, ์ํ ๊ธฐํธ์ ๋ณดํ๊ณผ ํจ๊ป ๋ช ๊ฐ์ง ํฅ๋ฏธ๋ก์ด ๋ฌธ์ ๊ฐ ๋ํ๋ ์ ์์ต๋๋ค. ๋ณ์ ์ด๋ฆ์ ์์ฑํ๋ฉด ์ฝ๊ฒ ํผํ ์ ์์ง๋ง ์ค์ ๋ฐฉ์ ์๊ณผ์ ๋ ๋์ ์๊ด ๊ด๊ณ๊ฐ ๋ชฉํ์ธ ๊ฒฝ์ฐ ์ค์ํ ์ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด, ๋ค์ ์คํฌ๋ฆฐ์ท์์ ฮ(๋๋ฌธ์) ๋ ฮด(์๋ฌธ์)์ ๋๋ค. linter๋ /wrong/์ด ์๋์ง๋ง ์ฌ๊ธฐ์ ์ค๋ค์ดํฌ ์ผ์ด์ค ์๊ตฌ ์ฌํญ์ ์ ์ฉํ๋ ๊ฒ๋ ์ด์น์ ๋ง์ง ์์ต๋๋ค.
Swift์ ๊ฐ์ด XID ์์/๊ณ์์ด ์๋๋๋ผ๋ ๋ณ์ ์ด๋ฆ์ ์ด๋ชจํฐ์ฝ์ ํ์ฉํ ์ ์์ต๋๊น?
@fwrs , ์ด๋ชจํฐ์ฝ์ ์ด๋ชจํฐ์ฝ์ด ์๋ ๋ฌธ์๋ณด๋ค ํจ์ฌ ๋ ๋ณต์กํฉ๋๋ค.
์ผ๋ถ ๊ณต๊ธ์ ์ฒด ๋๋ถ์ ์ด์ ์์๊ณผ ์์ ์ธ๋ถ ์ฌํญ์ ๊ณ์ ๋ณ๊ฒฝํ๋ Emoji ๊ฒฐํฉ(ZWJ) ์ํ์ค๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ด ์ค ๋ง์ ๋ถ๋ถ์ด ๋ฐ๋์ ์ก์์ผ๋ก ๋ณผ ์ ์๋ ๊ฒ์ ์๋๋๋ค.
๋ํ Emoji์ ์ ์๋ ๋งค๋ ๋น ๋ฅด๊ฒ ํ์ฅ๋๊ณ ์์ต๋๋ค. ์ด๋ ์์ ์ ์ด๊ณ ์ ๋ขฐํ ์ ์๋ ์๊ตฌ ์ฌํญ์ ์ํ๋ ์์คํ ์์ค ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๊ฐ ์๋๋๋ค.
๊ทธ๋์ ๊ท์ฝ๊ธด ํ์ง๋ง Rust ๋ชฉํ์ ์ ์ด์ธ๋ฆฌ์ง ์๋๋ค๊ณ ์๊ฐํฉ๋๋ค. ๊ทธ๋ฌ๋ ๋ น ๊ธฐ๋ฐ ์คํฌ๋ฆฝํ /๊ต์ก์ฉ ์ธ์ด๋ ๋ชฉํ์ ๋ฐ๋ผ Emojis๋ฅผ ํ์ฉํ๋ ๊ฒ์ด ๋์์ด ๋ ์ ์์ต๋๋ค.
@ryankurte ๊ทํ์ ์์๋ ์๋ฏธ๋ก ์ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ์ํ ๊ณต์์ ๊ธฐ๋กํ๊ณ ์์ง๋ง U+2206 INCREMENT ๋์ U+0394 GREEK CAPITAL LETTER DELTA๋ฅผ ์ฌ์ฉํ์ต๋๋ค. ์ ์๋ ๊ทธ๋ฆฌ์ค ์ํ๋ฒณ ๋ฌธ์์ด๋ฏ๋ก ๋์๋ฌธ์ ๋งคํ์ด ์์ต๋๋ค. ํ์๋ ์ํ ๊ธฐํธ์ด๋ฉฐ ๊ทธ๋ ์ง ์์ต๋๋ค.
์ด ์๊ฒฌ์ ๊ต์ฐจ ๋งํฌํ๊ณ ์ถ์ต๋๋ค: https://github.com/rust-lang/rust/issues/4928#issuecomment -343137316
๋๋ ์ฌ๊ธฐ์์ ๋ํ ๋ฌธ์ ๊ธฐ๋ฐ ๊ณต๊ฒฉ์ ํ์ฑํํ ๊ฐ๋ฅ์ฑ์ ๋ณด์ง ๋ชปํ์ง๋ง(๋๊ตฐ๊ฐ๊ฐ ์ธ๊ธํ๋ค๋ฉด ๋ ธ์ด์ฆ๋ฅผ ๋ฌด์ํ์ญ์์ค) ๋ค์๊ณผ ๊ฐ์ ์ฝ๋์ ๋ํด ๊ฒฝ๊ณ ํ๋ ๋ณดํธ๋ผ๊ธฐ๋ฅผ ์์ฒญํ๊ธฐ ์ํด ๊ฐ๋จํ ๋ฌธ์ ๋ฅผ ์ฑ์ ์ต๋๋ค .
#![feature(non_ascii_idents)]
fn main() {
let a = 2;
let ะฐ = 3;
assert_eq!(a, 2); // OK
assert_eq!(ะฐ, 3); // OK
}
๊ฐ๋จํ ๋งํด์, ์ด ๋ a
์ ์๋ก ๋ค๋ฅธ ์ ๋์ฝ๋ ๋ฌธ์์ด๋ฏ๋ก ๋ ๋ฒ์งธ let ๋ฐ์ธ๋ฉ์ ์ฒซ ๋ฒ์งธ ๋ฐ์ธ๋ฉ์ ๊ทธ๋ฆผ์ ์ฒ๋ฆฌํ์ง ์์ผ๋ฉฐ ๋ ์ฃผ์ฅ ๋ชจ๋ ํต๊ณผํฉ๋๋ค(ํ๋ ์ด๊ทธ๋ผ์ด๋๋ ์ ๋์ฝ๋ ์๋ณ์๋ฅผ ์ง์ํ์ง ์๋ ๊ฒ ๊ฐ์ผ๋ฏ๋ก ์ ์ผํ ๋ฐฉ๋ฒ์ ์ด๊ฒ์ ๋ก์ปฌ์์ ์๋ํ์ญ์์ค; ์ ์๊ฒ ํจ๊ณผ์ ์
๋๋ค).
์ด "๊ธฐ๋ฅ"์ ํ์งํ๊ธฐ ์ด๋ ค์ด Rust ํ๋ก๊ทธ๋จ์ ์ต์คํ๋ก์์ ๋์ ํ๋ ๋ฐ ์ฌ์ฉํ ์ ์์ต๋๋ค. ํนํ ์๋์ let ๋ฐ์ธ๋ฉ์ด ์ ๋ฅผ ํฌํจํ์ฌ ๋ง์ ์ฌ๋๋ค์ด ๊ด์ฉ์ Rust๋ก ๊ฐ์ฃผํ๋ค๋ ์ ์ ๊ฐ์ํ ๋ ๊ทธ๋ ์ต๋๋ค.
์ถ์ : ์ด "๊ธฐ๋ฅ"์ ์ธ๋ํธ๋ ๋ฌ์คํธ ์ฝํ
์คํธ์์ ์ ์ฉํ ์ ์์ต๋๋ค. ํ์ง๋ง #![feature(non_ascii_idents)]
๋ ์ฝ๊ฐ์ ๋์ด์ ์ฐํธ๋ฆฌ๊ฒ ํ ๊ฒ์
๋๋ค. :)
@gnzlbg ์ฌ๋๋ค์ด ์ธ๋ฏธ์ฝ๋ก ์ ๊ทธ๋ฆฌ์ค์ด ๋ฌผ์ํ๋ก ๋ฐ๊พธ๋ ๊ฒ์ ๋ง๊ธฐ ์ํด ํผ๋ ๊ฐ์ง์ ๋ํ ์ง์์ด ์ด๋ฏธ ์๋ค๊ณ ์๊ฐ ํ์ง๋ง ์๋ณ์์ ์ ์ฉ๋๋์ง๋ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. ๊ทธ๋ ๋ค๋ฉด ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋ฉ๋๋ค. ๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ์๋ ์ต์ํ ์ด๋ฅผ ์ํํ ์ ์๋ ๋๊ตฌ๊ฐ ์ค๋น๋์ด ์์ต๋๋ค.
ํ๋์ ์ค์ํ ์์ง์์ด ์์๊ณ RFC๊ฐ ํ์ํ๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ด ๋ซํ ์ ์๊ณ ์ฝ๋๊ฐ ์ปดํ์ผ๋ฌ์์ ์ ๊ฑฐ๋ ์ ์๋ค๋ ์ ์ด ์กฐ๊ธ ๊ฑฑ์ ๋ฉ๋๋ค. ์ ๋ Rust๊ฐ ์ ๋์ฝ๋๋ฅผ ์๋ฏธํ๋ 21์ธ๊ธฐ์ ์ธ์ด์ด๊ณ Rust๊ฐ ์์ด๋ฅผ ์ฌ์ฉํ์ง ์๋ ํ๋ก๊ทธ๋๋จธ์๊ฒ ์น์ํ ๊ฒ์ ๋ํด ์๋นํ ๊ด์ฌ์ ๊ฐ๊ณ ์์ต๋๋ค. ๋ด๊ฐ ๋ถ์กฑํ ๊ฒ์ ์ค์ ๋ก RFC๋ฅผ ์์ฑํ๋ ๋ฅ๋ ฅ์ ๋๋ค.
@์ผ์ธ ๋ฐ
์ฌ๋๋ค์ด ์ธ๋ฏธ์ฝ๋ก ์ ๊ทธ๋ฆฌ์ค์ด ๋ฌผ์ํ๋ก ๋ฐ๊พธ๋ ๊ฒ์ ๋ฐฉ์งํ๊ธฐ ์ํด ํผ๋ ๊ฐ์ง์ ๋ํ ์ง์์ด ์ด๋ฏธ ์๋ค๊ณ ์๊ฐํ์ง๋ง ์๋ณ์์ ์ ์ฉ๋๋์ง ์ฌ๋ถ๋ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค.
์, ํด๋ฆฌํผ ๋ฌธ์ ์์ @oli-obk๊ฐ ์ ์ํ ๊ฒ์ฒ๋ผ Rust ๊ตฌํ์ ๋์ ์ต์ ๊ณต์ ํผ๋ ๋ชฉ๋ก์ ์ฌ์ฉํฉ๋๋ค.
http://www.unicode.org/Public/security/revision-06/confusables.txt
๋ํ ๋ฌธ์ ๊ธฐ๋ฐ ๊ณต๊ฒฉ์ ๋ฐฉ์งํ ์ ์์ต๋๋ค. ์ด ๋ชฉ๋ก์ ๋๊ธฐํ ์ํ๋ก ์ ์งํด์ผ ํ์ง๋ง ์ด๋ ๋น๋ ์์คํ ์ ์ผ๋ถ๋ก ์๋ํํ ์ ์๋ ๊ฒ์ ๋๋ค.
@์ผ์ธ ๋ฐ
์ด ์ ์ ์ผ๋์ ๋์๋ฉด ์๋ณ์์ ์ ๋์ฝ๋๋ฅผ ์ง์ํ๋ ๋ค๋ฅธ ์ธ์ด๊ฐ ์์ผ๋ฉฐ ์ด๋ฌํ ์ธ์ด์๋ RFC ํ๋ก์ธ์ค์ ์ ์ฌํ ํ๋ก์ธ์ค๊ฐ ์์ต๋๋ค. ๊ทธ๊ฒ๋ค์ ํ์ธํ๋ ๊ฒ์ผ๋ก ์์ํ ์ ์์ต๋๋ค. ์ด ๋ฌธ์ ์ ํผ๋๋ฐฑ๊ณผ ํจ๊ป ๋ณํฉํ๊ณ ๋ด๋ถ ํฌ๋ผ์์ ์ฌ์ RFC๋ฅผ ์ป์ ์ ์๋์ง ๋๊ฐ ์๋๊น? ๊ทธ ์์ ๋ถํฐ ๋ค๋ฅธ ์ฌ๋๋ค๊ณผ ํผ๋๋ฐฑ์ ํตํฉ/๋ ผ์ํ๋ ๊ฒ์ ๊ดํ ๊ฒ์ด๋ฉฐ, ๋น์ ์ด ๊ทธ๊ฒ์ ์๊ธฐ๋ ์ ์ RFC๋ฅผ ์ค๋นํ๊ฒ ๋ ๊ฒ์ ๋๋ค.
์ด๋ค ๋ฉด์์ ๋๋ ์ฐ๋ฆฌ๊ฐ ASCII ์๋ณ์๋ฅผ ์์ํ ๊ณ ์ํ๊ธฐ๋ฅผ ๋ฐ๋๋๋ค. ์ ๋์ฝ๋ ์๋ณ์๋ฅผ ์ฒ๋ฆฌํ๋ ๊ฒ์ ์์ฒญ๋ ์ํธ ์ด์ฉ์ฑ ๋ฌธ์ ์ ๋๋ค. NFKC ๋งคํ์ ๋ ๊ธฐ์ดํ ์ ์ค ์ผ๋ถ๋ ๋ค์๊ณผ ๊ฐ์ ํญ๋ชฉ์ด ๋์ผํ ์๋ณ์์ ๋งคํ๋๋ค๋ ๊ฒ์ ๋๋ค.
>>> โ = 1
>>> H
1
>>> โ
จ = 42
>>> IX
42
>>> โ = 23
>>> N
23
>>> import math
>>> โฏ = math.e
>>> e
2.718281828459045
>>> โจ = 2
>>> Z
2
@mitsuhiko ํ์ค ์ธ๊ณ๋ ๊ทธ๋ฐ ๊ณ ํต์ด ์์ต๋๋ค. ๋ค๋ฃจ๊ธฐ ์ด๋ ต๊ณ _๊ฐ์ธ์ ์ผ๋ก_ ์ฌ์ฉํ์ง ์๋ ๊ธฐ๋ฅ์ด ํฌํจ๋์ด ์๊ธฐ ๋๋ฌธ์ ์ด ๋ฌธ์ ๋ฅผ ๋ฌด์ํ ์ ์์ต๋๋ค.
๋ํ ํ์ฌ RFC๋ ์ด์ ๋งค์ฐ ์ ์ฌํ ์์ ๋ํด _๋ง์_ ๋ ผ์ ํ์ NFKC๋ฅผ ํตํ NFC๋ฅผ ๋ช ์์ ์ผ๋ก ์ ์ํฉ๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
์ด๊ฒ์ด ์ด๊ฒ์ ๊ฒ์ํ๊ธฐ์ ์ ํฉํ ์ฅ์์ธ์ง ํ์คํ์ง ์์ง๋ง, ์ํ ๊ธฐํธ์ ๋ณดํ๊ณผ ํจ๊ป ๋ช ๊ฐ์ง ํฅ๋ฏธ๋ก์ด ๋ฌธ์ ๊ฐ ๋ํ๋ ์ ์์ต๋๋ค. ๋ณ์ ์ด๋ฆ์ ์์ฑํ๋ฉด ์ฝ๊ฒ ํผํ ์ ์์ง๋ง ์ค์ ๋ฐฉ์ ์๊ณผ์ ๋ ๋์ ์๊ด ๊ด๊ณ๊ฐ ๋ชฉํ์ธ ๊ฒฝ์ฐ ์ค์ํ ์ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด, ๋ค์ ์คํฌ๋ฆฐ์ท์์ ฮ(๋๋ฌธ์) ๋ ฮด(์๋ฌธ์)์ ๋๋ค. linter๋ /wrong/์ด ์๋์ง๋ง ์ฌ๊ธฐ์ ์ค๋ค์ดํฌ ์ผ์ด์ค ์๊ตฌ ์ฌํญ์ ์ ์ฉํ๋ ๊ฒ๋ ์ด์น์ ๋ง์ง ์์ต๋๋ค.