Suche nach einer Verallgemeinerung des Konstrukts 'if p x then x else empty'

8

Ich habe ein paar Schnipsel, die sich anfühlen, als würden sie das Gleiche tun, aber ich bin nicht ganz davon überzeugt, dass es ein verallgemeinertes Konstrukt gibt, um mit beiden umzugehen. An einer Stelle habe ich

%Vor%

Dies könnte in etwa wie

aussehen %Vor%

in einem anderen, ich habe das sehr ähnlich

%Vor%

Dies würde stattdessen ungefähr wie

aussehen %Vor%

Beide prüfen, ob ein Wert gemäß einem Prädikat korrekt ist, und wenn nicht, geben sie einen Standardwert zurück, der "leer" ist. Es gibt jedoch einen kleinen Unterschied - was bedeutet, dass die zweite Funktion als

umgeschrieben werden könnte %Vor%

um sie ähnlicher zu machen, wobei die Verantwortung für das "Auspacken" des Maybe auf das Prädikat übertragen wird. Mit dieser neuen Definition würden beide Funktionen unter

fallen %Vor%

Also, meine Frage ist,

Ist diese bool x empty (p x) in irgendeiner Form vorhanden, also muss ich diese Funktion nicht selbst implementieren? Das Problem mit dem Einfügen von bool x empty (p x) ist, dass in meinem Fall sowohl p als auch x sind ziemlich lang.

    
kqr 04.12.2015, 13:30
quelle

1 Antwort

1

Es gab zwei Vorschläge. Eine mit Monoid:

%Vor%

Und ein anderer mit MonadPlus:

%Vor%     
Will Kunkel 28.06.2016 01:31
quelle