# [luatex] Behavior of node lists.

Hans Hagen pragma at wxs.nl
Sat Nov 10 12:28:41 CET 2012

```On 11/10/2012 11:55 AM, Stephan Hennig wrote:

> Good point, too.  But let me ask again, the returned nodes are always
> the same as those given as arguments, with changed fields, but they
> never change identity?  That's not clear from the manual.

Sure, why should they change identity? Think of something like this (no

here.next = newnode
newnode.prev = here
if here.next then
here.next.prev = newnode
newnode.next = here.next
end

why should nodes become different nodes?

(maybe you think that a head node is something special, but it's not,
it's just a name for the first node in alist)

> The node 'list' terminology is a bit confusing.  These node 'lists' are
> actually trees.  The latter having sub-trees with their own root (head)
> nodes etc.  A list, in contrast, usually has one invariant head node
> (putting aside operations that explicitly change a list head).  Even
> though I guess, for someone with a strong TeX background it is a trivial
> fact, I think the manual should be a bit more explicit about what head
> exactly to use in insert_before/after.

it's not invariant

then mess with the list starting with head and in case of pushing

just linked lists (the concept in luatex is not different from other
programming langauges)

the manual is not a 'tutorial in programming' and 'linked lists'; in
fact: a programmer should recognize the concept but a tex macro writer
might be somewhat confused as tex itself because there is talk like "the
main vertical list" in manuals but on the other hand, once one starts
list at the tex end apart from some \last.. and \un.. operations and
maybe un*box and vsplit resemble some messing list)

concerning a tree: indeed it is a tree with some nodes (not only hlist
etc but also glyphs that are ligatures) being trees themselves

actually, the tex tracing primitives (showbox etc) will show you that
kind of nesting in the log

Hans

-----------------------------------------------------------------