   This module provides conveniences for manipulating or
   retrieving file system paths.
 
-  The functions in this module may receive a chardata as
-  argument (i.e. a string or a list of characters / string)
-  and will always return a string (encoded in UTF-8). If a binary
-  is given, in whatever encoding, its encoding will be kept.
+  The functions in this module may receive chardata as
+  arguments and will always return a string encoded in UTF-8. Chardata
+  is a string or a list of characters and strings, see `t:IO.chardata/0`.
+  If a binary is given, in whatever encoding, its encoding will be kept.
 
   The majority of the functions in this module do not
   interact with the file system, except for a few functions
   that require it (like `wildcard/2` and `expand/1`).
   """
 
+  @typedoc """
+  A path.
+  """
   @type t :: IO.chardata()
 
   @doc """
-  Converts the given path to an absolute one. Unlike
-  `expand/1`, no attempt is made to resolve `..`, `.` or `~`.
+  Converts the given path to an absolute one.
+
+  Unlike `expand/1`, no attempt is made to resolve `..`, `.`, or `~`.
 
   ## Examples
 


  """
  @spec split(t) :: [binary]

  def split(path) do
    :filename.split(IO.chardata_to_string(path))
  end


  The behaviour of this function changed in Erlang/OTP 24 for filenames
  starting with a dot and without an extension. For example, for a file
  named `.gitignore`, `extname/1` now returns an empty string, while it
  would return `".gitignore"` in previous Erlang/OTP versions. This was
  done to match the behaviour of `rootname/1`, which would return
  `".gitignore"` as its name (and therefore it cannot also be an extension).

  See `basename/1` and `rootname/1` for related functions to extract
  information from paths.
