File 0952-Improve-list-comprehensions-quicksort-example.patch of Package erlang

From d9687b5546d8b01092baa66375c094ec28b26fd8 Mon Sep 17 00:00:00 2001
From: Maria Scott <maria-12648430@hnc-agency.org>
Date: Tue, 9 Jan 2024 15:22:09 +0100
Subject: [PATCH] Improve list comprehensions quicksort example
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Co-authored-by: Björn Gustavsson <bgustavsson@gmail.com>
---
 .../list_comprehensions.xml                   | 47 ++++++++++++++-----
 1 file changed, 34 insertions(+), 13 deletions(-)

diff --git a/system/doc/programming_examples/list_comprehensions.xml b/system/doc/programming_examples/list_comprehensions.xml
index 25df0a06bc..cf1b4aadd9 100644
--- a/system/doc/programming_examples/list_comprehensions.xml
+++ b/system/doc/programming_examples/list_comprehensions.xml
@@ -56,26 +56,47 @@
     <title>Quick Sort</title>
     <p>The well-known quick sort routine can be written as follows:</p>
     <code type="none"><![CDATA[
+sort([]) -> [];
+sort([_] = L) -> L;
 sort([Pivot|T]) ->
     sort([ X || X <- T, X < Pivot]) ++
     [Pivot] ++
-    sort([ X || X <- T, X >= Pivot]);
-sort([]) -> [].]]></code>
+    sort([ X || X <- T, X >= Pivot]).]]></code>
     <p>The expression <c><![CDATA[[X || X <- T, X < Pivot]]]></c> is the list of
       all elements in <c>T</c> that are less than <c>Pivot</c>.</p>
     <p><c><![CDATA[[X || X <- T, X >= Pivot]]]></c> is the list of all elements in
       <c>T</c> that are greater than or equal to <c>Pivot</c>.</p>
-      <p>A list sorted as follows:</p>
-      <list type="bulleted">
-       <item>The first element in the list is isolated
-       and the list is split into two sublists.</item>
-       <item>The first sublist contains
-      all elements that are smaller than the first element in
-      the list.</item>
-      <item>The second sublist contains all elements that are greater
-      than, or equal to, the first element in the list.</item>
-       <item>Then the sublists are sorted and the results are combined.</item>
-     </list>
+    <p>With the algorithm above, a list is sorted as follows:</p>
+    <list type="bulleted">
+      <item>A list with zero or one element is trivially sorted.</item>
+      <item>For lists with more than one element:
+        <list type="ordered">
+          <item>The first element in the list is isolated as the pivot element.</item>
+          <item>The remaining list is partitioned into two sublists, such that:
+            <list type="bulleted">
+              <item>The first sublist contains all elements that are smaller
+                than the pivot element.</item>
+              <item>The second sublist contains all elements that are greater
+                than or equal to the pivot element.</item>
+            </list>
+          </item>
+          <item>The sublists are recursively sorted by the same algorithm
+            and the results are combined, resulting in a list consisting of:
+            <list type="bulleted">
+              <item>All elements from the first sublist, that is all elements
+                smaller than the pivot element, in sorted order.</item>
+              <item>The pivot element.</item>
+              <item>All elements from the second sublist, that is all elements
+                greater than or equal to the pivot element, in sorted order.</item>
+            </list>
+          </item>
+        </list>
+      </item>
+    </list>
+    <note><p>While the sorting algorithm as shown above serves as a nice example to illustrate
+      list comprehensions with filters, for real world use cases the
+      <seeerl marker="stdlib:lists"><c>lists</c></seeerl> module contains sorting functions
+      that are implemented in a more efficient way.</p></note>
   </section>
 
   <section>
-- 
2.35.3

openSUSE Build Service is sponsored by