list: add functional list macro