define second(list); hd(tl(list)) enddefine; define updaterof second(value, list); value -> hd(tl(list)) enddefine; vars list; [a b c d] -> list; second(list) => ** b 42 -> second(list); second(list) => ** 42 list => ** [a 42 c d]