Hodnota typu paren! je řada elementů libovolného typu, obklopená kulatými závorkami ( … ). Obsah uvnitř závorek je (bez dalšího) okamžitě vyhodnocován.
Datový typ paren je subtypem typesetů any-block!, any-list! a series!.
Objekt typu paren! lze vytvořit literálovou syntaxí nebo při runtime použitím konstruktoru make, konverzí to nebo funkcí as.
Literálem hodnoty typu paren! je prostý zápis elementů, omezený kulatými závorkami.
Vyhodnocení obsahu mezi závorkami lze potlačit slovem quote před závorkou. Potlačené vyhodnocení také umožní deklarovat slovo bez přiřazené hodnoty:
>> (2 + 3)
== 5
>> quote (2 + 3)
== (2 + 3)
>> quote (one 2 "three")
== (one 2 "three")
>> (one 2 "three")
*** Script Error: `one` has no value
>> type? (1 2 "one")
== string!
>> type? quote (1 2 "one")
== paren!Hodnota typu paren! (případně i rozepsaná do více řádků) bez příkazu quote se redukuje na hodnotu posledního členu:.
>> pa: (1
( 2
( "three"
( )
>> pa
== "three"Automaticky nevyhodnocovaný objekt typu paren! můžeme vytvořit odkazem na počátek bloku:
>> par: first [(1 + 2 * 3 / 4)]
== (1 + 2 * 3 / 4)
>> par
== (1 + 2 * 3 / 4)
>> do par
== 2.25>> make paren! [2 5 "a"]
== (2 5 "a")
Prázdný paren pro 10 elementů vytvoříme příkazem:
```red
>> make paren! 10
== ()Paren s deseti elementy počáteční hodnoty none:
>> append/dup make paren! 10 none 10
== (none none none none none none none none none none)Lze použít všechny komparátory =, ==, <>, >, <, >=, <=, =?, včetně funkcí min a max.
|
Note
|
Protože jsou hodnoty objektu typu paren! ihned vyhodnocovány, je vratnou hodnotou funkcí min nebo max hodnota posledního výrazu v parenu. Komparátory porovnávají poslední elementy porovnávaných parenů, není-li jejich vyhodnocení potlačeno.
|
>> max (1 2 3) (4 5 6)
== 6
>> (1 2 3) < (4 5 6)
== true
>> (1 2 3) < (4 5 2)
== false
>> (quote (1 2 3)) < (quote (4 5 2))
== truePoužijte funkci paren? k ověření, zda je posuzovaná hodnota typu paren!.
>> paren? quote (42 print "foo")
== trueKe zjištění typu také použijeme funkci type?:
>> type? quote (42)
== paren!
[NOTE, caption=Poznámka]
Necitované (unquoted) hodnoty paren vrací typ poslední hodnoty
```red
>> paren? (42)
== false
>> any-list? (42)
== false
>> type? (42)
== integer!
>> type? ('a 2 + 2 "hello")
== string!
>> type? (42 print "foo")
foo
== unset!