Skip to content

Latest commit

 

History

History
227 lines (158 loc) · 3.92 KB

File metadata and controls

227 lines (158 loc) · 3.92 KB

Datový typ char!

1. Úvodem

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í.

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!.

  • 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, [, \, ], _
Table 1. Řídící únikové znaky

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
Table 2. 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ů.

3. 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"]

4. 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:
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.0

5. Předdefinovaná slova

null             #"^@"
newline          #"^/"
slash            #"/"
dbl-quote        #"^""
space            #" "
lf               #"^/"
tab              #"^-"
CR               #"^M"
dot              #"."
escape           #"^["
sp               #" "
comma            #","

6. Další souvisící funkce

Lowercase, Uppercase