list is graph with only left children, unify lazy-cat graph traverse with list header recursion