/*------------------------------------------------------- * functions.go *------------------------------------------------------- * Demonstrates that Go functions are lambdas * Jim Fawcett, CSE775 - Distributed Objects, Spring 2016 *-------------------------------------------------------- */ package main import ( "fmt" ) /*---< creates and returns lambda >----------------------*/ /* * returns lambda to be executed later * */ func createLambda1(left int) (func(int) int) { return func(right int) int { return (left + right) } } /*---< creates and returns lambda with capture >---------*/ /* * returns lambda and the value of its capture * */ func createLambda2() (func(int) int, int) { var left = 7 // captured value return func(right int) int { return (left + right) }, left } func main() { x, y := 3, 5 sum := createLambda1(x)(y) fmt.Printf("\n sum of %v and %v is %v", x, y, sum) g, left := createLambda2() fmt.Printf("\n sum of %v and 5 is %v\n", left, g(5)) }