@@ -534,6 +534,8 @@ If you need to get the size
534534 u3r_met(3, a);
535535```
536536
537+Cells have their own set of characteristic functions for accessing interior nouns: `u3r_cell`, `u3r_trel`, `u3r_qual`, `u3h`, `u3t`, and the like.
538+
537539The actual meat of the function is up to you. What is it supposed to do?
538540
539541Now we move on to return semantics.
@@ -600,7 +602,7 @@ ending your C code with
600602 return(123);
601603```
602604
603−is wrong and will result in a dojo error because you are returning a single atom, instead of a list of three atoms.
605+is wrong and will result in a dojo error because you are returning a single atom, instead of a tuple containing three atoms.
604606
605607Instead do one of these:
606608
@@ -610,7 +612,7 @@ Instead do one of these:
610612 return(u3nq(a, b, c, d)); // for four atoms
611613```
612614
613−If you need to return a longer list, you can compose your own. Look
615+If you need to return a longer tuple, you can compose your own. Look
614616at the definitions of these three functions and you will see that they
615617are just recursive calls to the cell constructor `u3i_cell()` e.g.
616618
@@ -618,6 +620,13 @@ are just recursive calls to the cell constructor `u3i_cell()` e.g.
618620 u3i_cell(a, u3i_cell(b, u3i_cell(c, d));
619621```
620622
623+This implies that, to create a list instead of a cell, you will need to append
624+`u3_nul` to the appropriately-sized tuple constructor:
625+
626+```c
627+ return(u3nt(a, b, u3_nul)); // for two atoms as a list
628+```
629+
621630Understanding the memory model, allocation, freeing, and ownership ('transfer' vs 'retain' semantics) is important. Some info is available at [Nouns](@/docs/tutorials/vere/nouns.md).
622631
623632## Compile the C code