Elements of combinatory logic