Something
public text v1 · immutablevoid insert_list (list_ref list, list_item item) {
listnode_ref newnode = malloc (sizeof (struct listnode));
assert (is_list (list));
newnode->tag = listnode_tag;
newnode->item = item;
newnode->next = list->curr->next;
newnode->prev = list->curr;
list->curr->next = newnode;
if (newnode->next != NULL)
newnode->next->prev = newnode;
else
list->last = newnode;
list->curr = newnode;
}