code: func interpolationFuncDistinct() ast.Function {
  	return ast.Function{
  		ArgTypes:     []ast.Type{ast.TypeList},
  		ReturnType:   ast.TypeList,
  		Variadic:     true,
  		VariadicType: ast.TypeList,
  		Callback: func(args []interface{}) (interface{}, error) {
  			var list []string
  
  			if len(args) != 1 {
  				return nil, fmt.Errorf("accepts only one argument.")
  			}
  
  			if argument, ok := args[0].([]ast.Variable); ok {
  				for _, element := range argument {
  					if element.Type != ast.TypeString {
  						return nil, fmt.Errorf(
  							"only works for flat lists, this list contains elements of %s",
  							element.Type.Printable())
  					}
  					list = appendIfMissing(list, element.Value.(string))
  				}
  			}
  
  			return stringSliceToVariableValue(list), nil
  		},
  	}
  }
docs: // interpolationFuncDistinct implements the "distinct" function that
  // removes duplicate elements from a list.