☆fix↑
package main import "fmt" type unaryFunc func (int) int; func fibMaker(f unaryFunc) unaryFunc { return func (x int) int { if x <= 1 { return 1 } return f(x-1) + f(x-2); }; } func fix(g func (unaryFunc) unaryFunc) unaryFunc { return g(func(x int) int { return fix(g)(x) }); } func main() { fib := fix(fibMaker); for i := 1; i < 6; i++ { fmt.Println(fib(i)); } }