!!
custom types
=/ x [%cat 3] ?=([%cat *] x)

?= can match a tagged shape, not only ^ or a unit.

glossary

=/ pins a named value (a face) into the subject for the lines below it.

name=value optionally declares the type.

=/(a 3 (add a a)) is 6.

:* makes a tuple of many elements, nesting to the right.

:*(1 2 3) is [1 2 3].

irregular forms:

[a b c d] is :*(a b c d)

?= tests whether a value matches a shape, giving a loobean.

?=(^ [1 2]) is %.y.

$: makes a tuple mold, naming each face in a cell.

$:(x=@ y=@) is the mold [x=@ y=@].