2017-09-19 2 views
3

Ich habe mehrere Filterfunktionen mit Signatur 'a -> bool. Ich möchte einen kombinierten Filter erstellen, der die verschiedenen Filter verknüpft. Ich weiß, dass ich tun kann, es wie folgt aus:Wie Bool-Return-Funktionen zu komponieren

let fCombined x = 
    f1 x 
    && f2 x 
    && f3 x 

Gibt es eine prägnanter Möglichkeit, direkt die Funktionen zusammenstellen, ohne sie vollständig anwenden (zum Beispiel durch x aus der Definition von fCombined entfernen)?

(Ich weiß, dass es andere Möglichkeiten gibt, die bool nicht durch die Verwendung 'a -> 'a option Funktionen zB verwenden, und komponieren sie Option.bind verwenden, aber das ist kaum prägnanter.)

Antwort

7

Wenn Sie das Argument x verlieren wollen, Sie machen Sie sich einen speziellen Operator kann:

let (&&.) f g x = f x && g x 

let fCombined = f1 &&. f2 &&. f3 

Aber ich glaube nicht, das die Art der Sache ist zu befürchten. Das Argument ist völlig in Ordnung.

+0

Danke, ich war nicht sicher, wie man den Operator definiert. – cmeeren