mirror of
https://github.com/ilyakooo0/urbit.git
synced 2024-12-24 07:26:51 +03:00
70 lines
1.3 KiB
Markdown
70 lines
1.3 KiB
Markdown
[colsig, `:~`, %clsg](#clsg)
|
|
============================
|
|
|
|
Null-terminated tuple
|
|
|
|
`:~`, `colsig`, `[%clsg p=tusk]` is a synthetic rune that produces a
|
|
null-terminated tuple.
|
|
|
|
Produces
|
|
--------
|
|
|
|
Twig: `[%clsg p=tusk]`
|
|
|
|
Sample
|
|
------
|
|
|
|
`p` is a [`++tusk`](), a list of twigs.
|
|
|
|
Tall form
|
|
---------
|
|
|
|
:~ i.p
|
|
i.t.p
|
|
i.t.t.p
|
|
==
|
|
|
|
Wide form
|
|
---------
|
|
|
|
:~(i.p i.t.p i.t.t.p)
|
|
|
|
Irregular form
|
|
--------------
|
|
|
|
~[i.p i.t.p i.t.t.p]
|
|
|
|
Examples
|
|
--------
|
|
|
|
/~zod/try=> :~(5 3 4 2 1)
|
|
[5 3 4 2 1 ~]
|
|
/~zod/try=> ~[5 3 4 2 1]
|
|
[5 3 4 2 1 ~]
|
|
/~zod/try=> :~ 5
|
|
3
|
|
4
|
|
2
|
|
1
|
|
==
|
|
[5 3 4 2 1 ~]
|
|
|
|
This is the most straightforward case of `:~`, producing a tuple of four
|
|
values in wide, irregular and tall form.
|
|
|
|
/~zod/try=> %- flop
|
|
%- limo
|
|
:~ 5
|
|
3
|
|
4
|
|
2
|
|
1
|
|
==
|
|
~[1 2 4 3 5]
|
|
|
|
In this example we use `%-` to pass the results of our previous example
|
|
to [`++limo`](), which creates a [`++list`](), and [`++flop`](), which
|
|
reverses its order. This example shows how `:~` is commonly useful.
|
|
Null-terminated tuples are easily converted to lists, which are
|
|
frequently encountered in hoon.
|