code: func NewFunction(args []Type, result Type) *Function {
  	return &Function{
  		args:   args,
  		result: result,
  	}
  }
docs: // NewFunction returns a new Function object where xs[:len(xs)-1] are arguments
  // and xs[len(xs)-1] is the result type.