package main import "fmt" type x_f func (a x_f) (func (a int) int) func Y(f (func (a (func (a int) int)) (func (a int) int))) (func (a int) int) { return ( func(proc x_f) (func (a int) int) { return f( func (arg int) int { return (proc(proc))(arg) } ) }( func (proc x_f) (func (a int) int) { return f( func (arg int) int { return (proc(proc))(arg) } ) } ) ) } func fact0 (f (func (a int) int)) (func