why defining a defchain macro ? ``` def check_equals(value_to_check, value) do value_to_check |> tap(assert & &1 == value) end ``` It removes the need to define a macro and makes a more readable code, also it makes it easier to extend for other types of behaviours