anchor.diff:  
   [source,erlang]
   ----
  -PositiveFun = fun(V) when V > 0 -> true; (_) -> false end,
  +PositiveFun = fun
  +    (_, V) when V > 0 ->
  +        {ok, V};
  +    (_, _) ->
  +        {error, not_positive}
  +end,
   {my_value, [int, PositiveFun]}.
   ----
  +
  +We ignore the first fun argument in this snippet. We shouldn't.
  +We will simply learn what it is later in this chapter.
   
   When there's only one constraint, it can be provided directly
   without wrapping it into a list:
  
positive.code: to user input.
  
  They are used in various places in Cowboy, including the
  router and the request match functions.
  
  === Syntax
  
  
negative.code: === Custom constraints
  
  Custom constraints are specified as a fun. This fun takes
  two arguments. The first argument indicates the operation
  to be performed, and the second is the value. What the
  value is and what must be returned depends on the operation.
  
  Cowboy currently defines three operations. The operation
  used for validating and converting user input is the `forward`
  operation.
  
  [source,erlang]
  ----
  int(forward, Value) ->
      try
          {ok, binary_to_integer(Value)}
      catch _:_ ->
          {error, not_an_integer}
      end;
  ----
  
  The value must be returned even if it is not converted
  by the constraint.
  
  The `reverse` operation does the opposite: it
  takes a converted value and changes it back to what the
  user input would have been.
  
  [source,erlang]
  ----
  int(reverse, Value) ->
  	try
  		{ok, integer_to_binary(Value)}
  	catch _:_ ->
  		{error, not_an_integer}
  	end;
  ----
  
  Finally, the `format_error` operation takes an error
  returned by any other operation and returns a formatted
  human-readable error message.
  
  [source,erlang]
  ----
  int(format_error, {not_an_integer, Value}) ->
  	io_lib:format("The value ~p is not an integer.", [Value]).
  ----
  
  Notice that for this case you get both the error and
  the value that was given to the constraint that produced
  this error.
  
  Cowboy will not catch exceptions coming from constraint
  functions. They should be written to not emit any exceptions.
  