2016-08-04 53 views
0

我有一個函數findEntryByAddress,它有一個嵌入式聲明filterEntry。我想添加另一個布爾檢查,但是在一行中會有太多的字符。haskell中的多行布爾表達式

如何拆分佈爾表達式,其中一個等於每行檢查。

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

我檢查了Haskell's Indentation指南,多行表達式上沒有任何內容。 代碼來自purescript-book

+1

這是Haskell或Purescript(它被標記爲兩個,但問題標題說'haskell')?如果Haskell,只是把它放在一個新的行,並縮進它。 – pdexter

回答

3

我不確定我是否理解這個問題,你想做這樣的事情?

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

在這裏,你可以跳一個行,但你必須把表達一個空間的其餘部分另有定義的哈斯克爾開始後會以爲你在定義新的東西。因此,這是正確的:

where f = x && 
     y 

但是,這並不:

where f = x && 
y 

順便說一句,在Haskell,沒有Boolean類型,True類型和FalseBool