Char! datatype

1. Úvodem

Hodnoty typu char! odkazují na kódové body (code points) znakové sady Unicode, jimiž jsou celá čísla v rozsahu od hexadecimální nuly (00) do hexadecimální hodnoty 10FFFF.

Red používá kódování UTF-8, převádějící číselné dekadické či hexadecimální hodnoty Unicode na binární čísla o proměnné délce 1 až 4 bajty - viz UTF-8 encoding table.

Znaky (characters) mohou být tisknutelné (printable or graphical) nebo netisknutelné, řídící (escaped or control). Řídící znak je odkazem na interní proceduru či hodnotu, například horizontal tab, null, atp.

Typ char! je členem typesetů immediate!, scalar! a default!.

2. Vytvoření

Hodnoty char! mohou být vytvořeny s použitím literálové syntaxe nebo při běhu programu s použitím konstruktoru 'make' či konverzí 'to' nebo jednou z mnoha funkcí, které z hodnoty string! extrahují hodnotu char!.

2.1. Literálová syntaxe

Skladba hodnoty typu char! je tato:

<char-lit>     :: = #"<single-char>"

<single-char>  :: = <viewable-char> | <escaped-char> | <hex-codepoint>
<vieable-char> :: = zobrazitelný znak, případně zadaný z klávesnice
<escaped-char> :: = ^(null) or ^@ | ^(back) or ^H | ^(tab) or ^_
                    ^(line) or ^/ | ^(page) or ^L | ^(esc) or ^[
                    ^(del)  or ^~ | ^A|^B| ... ^Z |
                    ^] | ^" | ^^
<hex-codepoint>:: = ^(hex-number)
hex-number     :: = platné hexadecimální číslo 00 až 10FFFF

Únikovým znakem (escape character) v Redu je caret ^. V důsledku toho musí být samotný znak ^ rovněž předsazen únikovým znakem. Stringový literál pro tento znak je #"^^", nikoliv #"^"; označení #"^" je neplatné.

Únikové znaky ^ signalizují alternativní interpretaci následujícího řídícího znaku; spolu s ním tvoří tzv. escape sekvenci. Nejpoužívanější řídící znaky mají kromě krátké formy ještě pojmenovanou formu, například znak pro delete má krátkou formu "^~" a dlouhou (mnemotechnickou) formu "^(del)".

Formát dlouhé formy je:

#"^(<codepoint>)"
<codepoint> : platné hexadecimální číslo 00 až 10FFFF |
              jméno symbolu pro kontrolní znak

Formátem dlouhé formy vyjádříme libovolný znak sady Unicode v kódování UTF-8, například #"^(2b)" pro znaménko +.

Formát krátké formy je:

#"^<cc>"

kde <cc> je jeden znak sady   A-Z, [(escape), \(line feed), ](group separator), _ (unit separator), atp - viz tabulka:

Často používané řídící znaky

name

symbol

character

codepoint

#"^(null)"

#"^@"

null

U+0000

#"^(back)"

#"^H"

backspace

U+0008

#"^(tab)"

#"^I" or #"^-"

horizontal tab

U+0009

#"^(line)"

#"^J" or #"^/"

new line

U+000A

#"^(page)"

#"^L"

new page

U+000C

#"^(del)"

#"^~"

delete

U+007F

#"^(esc)"

#"^["

escape

U+001B

#"^]"

group separator

U+005D

#"^""

double quote

U+0022

#"^^"

caret char.

U+005E

#"^A" - #"^Z"

control chars

U+0041-U+005A

#"^_"

control char.

U+001F

3. TBD

Sem patří popis argumentů pro funkce make char! a to-char včetně příkladů.

4. Komparace

Pro hodnoty typu 'char!' mohou být použity všechny komparátory : =, ==, <>, >, <, >=, <=, =?. Navíc jsou podporovány funkce min, max a sort. Porovnávání hodnot typu char! je 'case sensitive'.

Příklady

#"a" = #"A"
== false
#"a" =? #"a"
== true
max #"a" #"A"
== #"a"
sort [#"c" #"b" #"d" #"a"]
== [#"a" #"b" #"c" #"d"]

5. Aritmetika

Pro hodnoty typu char! lze použít celý rozsah matematických funkcí. Pokud se výsledek aritmetického výrazu dostane mimo rozsah 00 - 10FFFF, je vyvolána chyba Math Error.

Příklady

#"a" + 1
== #"b"
#"a" - 32
== #"A"
#"a" * 256
== #"愀"
#"a" - 98
*** Math Error: math or number overflow
*** Where: -
*** Stack:

6. Další souvisící funkce

Lowercase, Uppercase

results matching ""

    No results matching ""