currying example
control abstractions examples