       ...>   base = String.length(prefix)
       ...>   String.slice(full, base..-1)
       ...> end
-      ...> take_prefix.("Mr. John", "Mr. ")
+      iex> take_prefix.("Mr. John", "Mr. ")
       "John"
 
   While this is much better (we don't traverse `full` twice),

      ...>   base = byte_size(prefix)
      ...>   binary_part(full, base, byte_size(full) - base)
      ...> end
      ...> take_prefix.("Mr. John", "Mr. ")
      "John"

  Or simply used pattern matching:

      iex> take_prefix = fn full, prefix ->
      ...>   base = byte_size(prefix)
      ...>   <<_ :: binary-size(base), rest :: binary>> = full
      ...>   rest
      ...> end
      ...> take_prefix.("Mr. John", "Mr. ")
      "John"

  On the other hand, if you want to dynamically slice a string

  ## Codepoints and graphemes

  The functions in this module act according to the Unicode
  Standard, version 6.3.0. As per the standard, a codepoint is
  an Unicode Character, which may be represented by one or more
  bytes. For example, the character "é" is represented with two
  bytes:
