   def space(doc1, doc2), do: concat(doc1, concat(" ", doc2))
 
   @doc ~S"""
+  A mandatory linebreak.
+
+  A group with a linebreak never fits and is always broken
+  into its own line.
+
+  ## Examples
+
+    iex> doc = Inspect.Algebra.concat(
+    ...>   Inspect.Algebra.concat(
+    ...>     "Hughes",
+    ...>     Inspect.Algebra.line()
+    ...>   ), "Wadler"
+    ...> )
+    iex> Inspect.Algebra.format(doc, 80)
+    ["Hughes", "\n", "Wadler"]
+
+  """
+  @spec line() :: :doc_line
+  def line(), do: :doc_line
+
+  @doc ~S"""
   Inserts a mandatory linebreak between two documents.
 
+  A group with a linebreak never fits and is always broken
+  into its own line.
+
   ## Examples
 
       iex> doc = Inspect.Algebra.line("Hughes", "Wadler")


  """
  @spec line(t, t) :: t
  def line(doc1, doc2), do: concat(doc1, concat(:doc_line, doc2))

  @doc ~S"""
  Folds a list of documents into a document using the given folder function.

  @spec fits?(integer, [{integer, mode, t}]) :: boolean
  defp fits?(w, _) when w < 0,                      do: false
  defp fits?(_, []),                                do: true
  defp fits?(_, [{_, m, :doc_line} | _]),           do: m != :flat
  defp fits?(w, [{_, _, :doc_nil} | t]),            do: fits?(w, t)
  defp fits?(w, [{i, m, doc_cons(x, y)} | t]),      do: fits?(w, [{i, m, x} | [{i, m, y} | t]])
  defp fits?(w, [{i, m, doc_color(x, _)} | t]),     do: fits?(w, [{i, m, x} | t])
