github.com/packtpublishing/learning-functional-programming-in-go@v0.0.0-20230130084745-8b849f6d58c4/Chapter09/misc/ex2/lambda.go (about)

     1  package main
     2  
     3  type lambda func(int) int
     4  
     5  func add(a int) lambda {
     6  	return func(free int) int {
     7  		return func(b int) int {
     8  			return a + b
     9  		}(free)
    10  	}
    11  }
    12  
    13  func main() {
    14  	add2 := add(2)
    15  	three := add2(1)
    16  	println("Pass 1 to to add2 expression to get:", three)
    17  	four := add2(2)
    18  	println("Pass 2 to to add2 expression to get:", four)
    19  }
    20  
    21  
    22  /*
    23  
    24  	var n = 10
    25  	fmt.Println(n == func(z int) int { return n }(123))
    26  	fmt.Println(add(1)(10))
    27  
    28  
    29   */