2016-08-04 30 views
0

Ich habe eine Funktion findEntryByAddress, die eine Inline-Deklaration von filterEntry hat. Ich würde gerne einen weiteren booleschen Check hinzufügen, aber dann wären zu viele Zeichen in einer Zeile.multiline boolescher Ausdruck in Haskell

Wie kann ich den booleschen Ausdruck aufteilen, einer entspricht der Prüfung pro Zeile.

findEntryByAddress :: Address -> AddressBook -> Maybe Entry 
findEntryByAddress = head <<< filter filterEntry 
    where 
    filterEntry :: Entry -> Boolean 
    filterEntry entry = entry.firstName == firstName && entry.lastName == lastName 

Ich habe Haskell's Indentation Führer, nichts auf mehrzeilige Ausdrücke geprüft. Code von purescript-book.

+1

Ist das Haskell oder Purescript (es ist beides markiert, aber der Fragetitel sagt 'Haskell')? Wenn Haskell, einfach auf eine neue Zeile setzen und einrücken. – pdexter

Antwort

3

Ich bin mir nicht sicher, ob ich die Frage verstehe, wollen Sie so etwas tun?

findEntryByAddress :: Address -> AddressBook -> Maybe Entry 
findEntryByAddress = head <<< filter filterEntry 
    where 
    filterEntry :: Entry -> Boolean 
    filterEntry entry = entry.firstName == firstName && 
         entry.lastName == lastName && 
         entry.age == age 

In einem wo können Sie eine Linie springen, aber Sie haben den Rest des Ausdrucks ein Raum nach dem Beginn der Definition sonst Haskell Sie definieren, etwas Neues denken zu setzen. So ist das richtig:

where f = x && 
     y 

Aber das ist nicht:

where f = x && 
y 

By the way, in Haskell, gibt es keine Boolean Typ, die Art der True und False ist Bool.