Hodnoty typu char! reprezentují kódové body (code points) znakové sady Unicode, jimiž jsou celá čísla v rozsahu od hexadecimální nuly (00) do hexadecimální hodnoty 10FFFF (0 až 1,114,111 v decimálním vyjádření).
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.
Hodnoty typu char! jsou přímé, atomické a pasivní.
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!.
-
Literálová skladba
Základní forma hodnoty typu char! je tato:
#"<character>" <character> : kódový bod Unicode (obvykle zadán z klávesnice)
Literálová skladba rovněž podporuje únikové symboly pro kontrolní znaky i pro znaky, které se nesnadno zapisují.
Únikovým znakem v Redu je caret ^ s kódovým bodem U+005E. Řetězcovým literálem pro tento kódový bod je #"^^" nikoliv #"^". Posledně uvedený znak je vlastně neplatný.
Únikové znaky v Redu mají trojí formát:
Formát kódového bodu
#"^(<codepoint>)"
<codepoint> : platné hexadecimální číslo, např. 00, ABCD, 10FFFF
(== #"^@", #"ꯍ", #"��", )
Formát kontrolního znaku
#"^<cc>" <cc> : A single character from the set - A-Z, [, \, ], _
Escaped Character |
Codepoint |
#"^A" - #"^Z" |
U+0001 - U+001A. |
#"^[" |
U+001B |
#"^\" |
U+001C |
#"^]" |
U+001D |
#"^_" |
U+001F |
Formát pojmenovaného znaku
Schema skladby zápisu:
#"^(<name>)" or #"^<symbol>" <name> : jméno z tabulky Pojmenované únikové znaky <symbol> : symbol z tabulky Pojmenované únikové znaky
name |
symbol |
character |
codepoint |
#"^(null) |
#"^@" |
null |
U+0000 |
#"^(back)" |
backspace |
U+0008 |
|
#"^(tab)" |
#"^-" |
horizontal tab |
U+0009 |
#"^(line)" |
#"^/" |
line feed |
U+000A |
#"^(page)" |
form feed |
U+000C |
|
#"^(esc)" |
escape |
U+001B |
|
#"^(del)" |
#"^~" |
delete |
U+007F |
#"^"" |
" - double quote |
U+0022 |
|
#"^^" |
^ - caret |
U+005E |
-
make, to
Sem patří popis argumentů pro funkce make char! a to-char včetně příkladů.
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"]
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:|
Note
|
Výsledkům aritmetických operací je přiřazen typ prvního argumentu. |
>> #"a" + 1
== #"b"
>> 1 + #"a"
== 98
>> #"a" - 32
== #"A"
>> 32 - #"a"
== -65
>> 256.00 * #"a"
== 24832.0null #"^@" newline #"^/" slash #"/" dbl-quote #"^"" space #" " lf #"^/" tab #"^-" CR #"^M" dot #"." escape #"^[" sp #" " comma #","