RosettaCodeData/Task/Call-a-function/Go/call-a-function-12.go

28 lines
467 B
Go

package main
import "fmt"
func mkAdd(a int) func(int) int {
return func(b int) int {
return a + b
}
}
func sum(x, y int) int {
return x + y
}
func partialSum(x int) func(int) int {
return func(y int) int {
return sum(x, y)
}
}
func main() {
// Is partial application possible and how
add2 := mkAdd(2)
add3 := mkAdd(3)
fmt.Println(add2(5), add3(6)) // prt 7 9
// Currying functions in go
partial := partialSum(13)
fmt.Println(partial(5)) //prt 18
}