mirror of
https://github.com/ilyakooo0/urbit.git
synced 2024-12-19 12:51:51 +03:00
78 lines
1.5 KiB
Markdown
78 lines
1.5 KiB
Markdown
[dottis, `.=`, %dtts](#dtts)
|
|
============================
|
|
|
|
Equality
|
|
|
|
`.=` is a natural rune that applies Nock 5 (equality) to determine if
|
|
the products of p and q are equivalent, and produces a loobean.
|
|
|
|
See also
|
|
--------
|
|
|
|
[Nock tutorial]()
|
|
|
|
Produces
|
|
--------
|
|
|
|
Twig: `[%dtts p=twig q=twig]`
|
|
|
|
Sample
|
|
------
|
|
|
|
`p` is a [twig](). `q` is a [twig]().
|
|
|
|
Tall form
|
|
---------
|
|
|
|
.= p
|
|
q
|
|
|
|
Wide form
|
|
---------
|
|
|
|
.=(p q)
|
|
|
|
Irregular form
|
|
--------------
|
|
|
|
=(p q)
|
|
|
|
Examples
|
|
--------
|
|
|
|
~zod/try=> =(0 0)
|
|
%.y
|
|
~zod/try=> =(1 2)
|
|
%.n
|
|
|
|
Comparing two atoms is the most straightforward case of `.=`.
|
|
|
|
~zod/try=> =("a" [97 ~])
|
|
%.y
|
|
~zod/try=> =(~nec 1)
|
|
%.y
|
|
~zod/try=> =([%a 2] a/(dec 3))
|
|
%.y
|
|
~zod/try=> =([%b 2] a/(dec 3))
|
|
%.n
|
|
|
|
It's important to keep in mind that `.=` compares the atomic equivalent
|
|
of each `p` and `q`. In the first case of this example the tape `"a"` is
|
|
actually the list `[97 0]` since the ASCII code for `'a'` is 97. The
|
|
following cases serve to show similar implicit down-casts.
|
|
|
|
/~zod/try=> =isa |= a=@t
|
|
?: =(a 'a')
|
|
'yes a'
|
|
'not a'
|
|
new var %isa
|
|
/~zod/try=> (isa 'b')
|
|
'not a'
|
|
/~zod/try=> (isa 'a')
|
|
'yes a'
|
|
|
|
In common practice `.=` is often used inside of [`?`]() runes, where
|
|
switching on equality is needed. Here we construct a simple gate to test
|
|
if our sample is equal to `'a'` and produce either `'yes a'` or
|
|
`'not a'` accordingly.
|