code: func interpolationFuncCompact() ast.Function {
  	return ast.Function{
  		ArgTypes:   []ast.Type{ast.TypeList},
  		ReturnType: ast.TypeList,
  		Variadic:   false,
  		Callback: func(args []interface{}) (interface{}, error) {
  			inputList := args[0].([]ast.Variable)
  
  			var outputList []string
  			for _, val := range inputList {
  				strVal, ok := val.Value.(string)
  				if !ok {
  					return nil, fmt.Errorf(
  						"compact() may only be used with flat lists, this list contains elements of %s",
  						val.Type.Printable())
  				}
  				if strVal == "" {
  					continue
  				}
  
  				outputList = append(outputList, strVal)
  			}
  			return stringSliceToVariableValue(outputList), nil
  		},
  	}
  }
docs: // interpolationFuncCompact strips a list of multi-variable values
  // (e.g. as returned by "split") of any empty strings.