code: func interpolationFuncCidrHost() ast.Function {
  	return ast.Function{
  		ArgTypes: []ast.Type{
  			ast.TypeString, // starting CIDR mask
  			ast.TypeInt,    // host number to insert
  		},
  		ReturnType: ast.TypeString,
  		Variadic:   false,
  		Callback: func(args []interface{}) (interface{}, error) {
  			hostNum := args[1].(int)
  			_, network, err := net.ParseCIDR(args[0].(string))
  			if err != nil {
  				return nil, fmt.Errorf("invalid CIDR expression: %s", err)
  			}
  
  			ip, err := cidr.Host(network, hostNum)
  			if err != nil {
  				return nil, err
  			}
  
  			return ip.String(), nil
  		},
  	}
  }
docs: // interpolationFuncCidrHost implements the "cidrhost" function that
  // fills in the host part of a CIDR range address to create a single
  // host address