#!/usr/bin/env python3

print("*************************")
print("simple lambda expressions")
print("*************************")
x = lambda a : a + 10
print("lambda    a : a + 10     :",x(5)) 

y = lambda a, b : a * b
print("lambda a, b : a * b      :",y(5, 6)) 

# line continuation
# no empty space after  '\'
z = lambda x: \
    'odd' if x%2 else 'even'   # inline 'if then else" 
#   x % 2 and 'odd' or 'even'   # identical

print("\'odd\' if x%2 else \'even\' :",z(5)) 

print()
print("**************************************")
print("function returning a lambda expression")
print("**************************************")

def myfunc(n):
  return lambda a : a * n

mytripler = myfunc(3)
# equivalent to
# mytripler = lambda a : a*3

print("return lambda a : a * n  :",mytripler(11))
   
print()
print("**************")
print("direct calling")
print("**************")
print("(lambda x: x + 1)(2)     :",(lambda x: x + 1)(2))
