Dies ist eine interessante Frage. Ehrlich gesagt sind mir keine eingebauten Funktionen bekannt, die dies ermöglichen (obwohl der Bedarf an solchen Funktionen sicherlich gegeben ist).
In der Vergangenheit haben wir häufig Hilfsfunktionen mit den Namen "any" und "all" geschrieben, die wie folgt aussehen (ungetestet, aber Sie verstehen die Idee):
function any
input Boolean vals[:];
output Boolean result;
algorithm
result := max({if i==true then 1 else 0 for i in vals})==1;
end any;
function all
input Boolean vals[:];
output Boolean result;
algorithm
result := min({if i==true then 1 else 0 for i in vals})==1;
end all;
Dies ähnelt dem, was Sie getan haben, aber mit Array Comprehensions und dann kapseln, dass in Funktionen. Dies ermöglicht es Ihnen, Code zu schreiben wie:
if any(conditions) then ... else ...;
Idealerweise könnten diese Funktionen dem eingebauten Satz von "Reduktionsoperatoren" (wie min und max) hinzugefügt werden, aber die Sprachgruppe neigt dazu, bei der Einführung solcher Operatoren etwas konservativ zu sein, da sie den Namensraum verschmutzen und potenzielle Kollisionen mit bestehendem Code verursachen.
Beachten Sie, dass es bei der Verwendung von when-Klauseln etwas komplizierter wird. Bei when-Klauseln gibt es eine Vektorkonstruktion, z. B.
when {cond1, cond2, cond3} then
...
end when;
Das hat eine sehr nützliche Semantik, ist aber nicht 100%ig analog zu "any" oder "all", wie oben geschrieben. Wenn Sie also beabsichtigen, einen Vektor von Bedingungen in einer when-Klausel zu verwenden, dann lesen Sie nach, wie dies (in der Spezifikation) gehandhabt wird, oder stellen Sie eine Folgefrage dazu, und ich kann mehr dazu sagen (das würde den Rahmen dieser Frage etwas sprengen).