alire-project / semantic_versioning

Semantic versioning in Ada
GNU General Public License v3.0
10 stars 3 forks source link

Use Quantified Expressions #15

Open pjljvandelaar opened 2 years ago

pjljvandelaar commented 2 years ago

Dear Developers,

Why don't you use Quantified Expressions at the following locations?

-      for R of VS loop
-         if not Satisfies (V, R) then
-            return False;
-         end if;
-      end loop;
-
-      return True;
+      return (for all R of VS => Satisfies (V, R));
             when Anded =>
                return OK : Boolean := True do
                   Trace ("AND children count:" & Trees.Child_Count (Pos)'Img);
-                  for Child in VS.Set.Iterate_Children (Pos) loop
-                     OK := OK and then Is_In (Child);
-                  end loop;
+                  OK :=
+                    OK
+                    and then
+                    (for all Child in VS.Set.Iterate_Children (Pos) =>
+                       Is_In (Child));
                end return;

Note that further simplifications are still possible ;-)

             when Ored =>
                return OK : Boolean := False do
                   Trace ("OR children count:" & Trees.Child_Count (Pos)'Img);
-                  for Child in VS.Set.Iterate_Children (Pos) loop
-                     OK := OK or else Is_In (Child);
-                  end loop;
+                  OK :=
+                    OK
+                    or else
+                    (for some Child in VS.Set.Iterate_Children (Pos) =>
+                       Is_In (Child));
                end return;

Note that also in this case further simplifications are still possible ;-)

Greetings, Pierre

mosteo commented 2 years ago

Because that code will likely be older than qualified expressions being generally available, or before they entered my mind as a valid possibility :-)