title: Python nested lambda expression still confused and couldn't understandable. please explain the following example
body: <pre><code>&gt;&gt;&gt; test = lambda f: f(lambda x: x + 1)(0)
  &gt;&gt;&gt; z = lambda f: lambda x: x
  &gt;&gt;&gt; test(z)
  0
  
  &gt;&gt;&gt; succ = lambda n: lambda f: lambda x: f(n(f)(x))
  &gt;&gt;&gt; _1 = succ(z)
  &gt;&gt;&gt; test(_1)
  1
  
  &gt;&gt;&gt; _2 = succ(_1)
  &gt;&gt;&gt; test(_2)
  2
  
  &gt;&gt;&gt; plus = lambda m: lambda n: lambda f: lambda x: m(f)(n(f)(x))
  &gt;&gt;&gt; _3 = plus(_1)(_2)
  &gt;&gt;&gt; test(_3)
  3
  
  &gt;&gt;&gt; mult = lambda m: lambda n: lambda f: lambda x: m(n(f))(x)
  &gt;&gt;&gt; _6 = mult(_2)(_3)
  &gt;&gt;&gt; test(_6)
  6
  
  &gt;&gt;&gt; _5 = plus(_2)(_3)
  &gt;&gt;&gt; _25 = mult(_5)(_5)
  &gt;&gt;&gt; _4 = plus(_2)(_2)
  &gt;&gt;&gt; _100 = mult(_25)(_4)
  &gt;&gt;&gt; test(_100)
  100
  </code></pre>