Skip to content

Latest commit

 

History

History
145 lines (85 loc) · 2.41 KB

pair.adoc

File metadata and controls

145 lines (85 loc) · 2.41 KB

Datový typ pair!

1. Úvodem

Datový typ pair! (pár) se používá k prezentaci dvourozměrových souřadnic.

2. Literálová skladba

Pár se zapisuje jako součin dvou celých čísel (bez mezer).

1024×768

-42x42

3. Vytvoření

Hodnoty typu pair! lze vytvořit s použitím literálové skladby nebo při běhu programu konstruktorem make, konverzí to nebo funkcí as-pair.

>> make pair! [20 30]
== 20x30

>> make pair! 42
== 42x42
>> to pair! [20 30]
== 20x30

>> to pair! 42
== 42x42

>> to pair! "42x42"
== 42x42

Funkce as-pair přijímá argumenty x a y typu integer! nebo float!. Hodnoty float budou okleštěny.

>> as-pair 20 30
== 20x30

>> as-pair 1.23 42
== 1x42

4. Komparace

Pro hodnotu typu pair! lze použít všechny komparátory: =, ==, <>, >, <, >=, <=, =?. Navíc jsou podporovány funkce min a max.

Porovnávání dvou hodnot typu pair! začíná jejich druhou částí /y. Jsou-li stejné, porovnávají se první části /x. Jsou-li i tyto části stejné, jsou oba páry stejné. Na příklad:

>> 5x3 = 5x3
== true

>> 0x0 < 1x1
== true

>> 999x999 < 1x1
== false

>> 999x0 < 1x1
== true

>> sort [0x1 1x0 0x2 2x0 1x1 2x2]
== [1x0 2x0 0x1 1x1 0x2 2x2]

5. Aritmetika

Funkce +, -, *, /, %, //, add, subtract, multiply, divide, remainder a mod, lze použít s hodnotami typu pair!.

6. Upřesnění

Typ pairs! podporuje upřesnění (refinements) /x a /y pro zobrazení nebo úpravu souřadnic.

>> my-pair: 1024x768
== 1024x768

>> my-pair/x
== 1024

>> my-pair/y
== 768

>> my-pair/y: 42
== 42

>> my-pair
== 1024x42

7. Testování hodnot

K ověření, zda hodnota je typu pair! použijeme funkci pair?.

>> pair? 42x42
== true

>> pair? 42
== false

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

>> type? 42x42
== pair!

8. Předdefinovaná slova

8.1. Akce

absolute, add, and~, at, copy, divide, multiply, negate, or~, pick, remainder, reverse, round, skip, subtract, xor~

8.2. Funkce

caret-to-offset, draw, first, make-face, metrics?, mod, modulo, offset-to-caret, offset-to-char, pair?, second, size-text, to-pair, within?

8.3. Nativní funkce (native!)

as-pair, case, extend, zero?

8.4. Operátory

%, *, +, -, /, //, and, or, xor