Skip to content

Latest commit

 

History

History
92 lines (57 loc) · 1.72 KB

refinement.adoc

File metadata and controls

92 lines (57 loc) · 1.72 KB

Datový typ refinement!

1. Úvodem

Hodntoty typu refinement! (upřesnění) jsou symbolické hodnoty, používané jako modifikátory funkcí nebo jako extenze u objektů, souborů, URL nebo cest.

Funkce repend bez upřesnění:

>> repend ["foo"] [21 * 2]
== ["foo" 42]

S upřesněním /only:

>> repend/only ["foo"] [21 * 2]
== ["foo" [42]]

Datový typ refinement! je subtypem typesetů all-word! a immediate!.

2. Vytvoření

Hodnoty typu refinement! lze vytvořit použitím literálové skladby při načítání skriptu nebo při runtime konstruktorem make či konverzí to.

>> /foo
== /foo
>> make refinement! "bar"
== /bar
>> to refinement! 'baz
== /baz

3. Literálová skladba

Lomíko /, následované jedním či více znaky sady Unicode, včetně interpunkčních znaků ze sady ASCII: ! & ' * + - . < = > ? _ | ~`

Nepovolenými znaky jsou řídící znaky, znaky mezer a interpunkční znaky ze sady ASCII: / \ ^ , [ ] ( ) { } " # $ % @ : ;

Note
Použití znaku @ nevyvolá chybu, ale způsobí, že se hodnota refinement! vrátí jako email!.

4. Komparace

Na refinement! lze aplikovat všechny komparátory: =, ==, <>, >, <, >=, <=, =?.

5. Testování hodnot

Funkce refinement? slouží k ověření, zda je zadaná hodnota typu refinement!.

>> refinement? /foo
== true

>> refinement? third [42 "Foo" /bar]
== true

Funkce type? vrací datový typ zadané hodnoty.

>> type? /foo
== refinement!

>> type? third [42 "Foo" /bar]
== refinement!

6. Předdefinovaná slova

6.1. Funkce

parse-func-spec, refinement?, to-refinement

6.2. Natives

function