with De Bruijn notation, a more combinatory approach, to eliminate variable naming problems