2015-10-27 40 views
3

我無法寫這個代碼,我的教授給我:更改函數定義爲指向,自由的風格

編寫一個叫做digit7函數,它接受一個Int並返回一個Bool說與否7是數字之一。 (提示:使用show至 將數字轉換爲字符列表。)使用digit7創建一個不帶參數的函數,該參數返回最小的 數字,其數字的正方形包含7作爲數字。

,我有代碼:

digit7 l = elem '7' (show l) 

這工作,但我需要寫在一個自由點式的代碼。我也很難計算出square7函數。

回答

5

對於digit7功能,您可以將您的高清使用功能組合點,自由的風格:

digit7 = (elem '7') . (show) 

這是因爲:

digit7 l 
-> ((elem '7') . (show)) l  By substitution 
-> (elem '7') ((show) l)  By definition of (.) 
-> elem '7' (show l)   By operator precedence 

對於square7功能,我推薦使用dropWhilehead

+3

當然,這裏的括號是不必要的,在慣用的Haskell中可能會被省略,所以定義只是'elem'7'。 show'。 –

+0

我同意。我想讓初學者100%清楚'.'運算符正在採用哪些參數。 – Nayuki

+0

有效,但如果僅僅解釋了最基本的規則,它會更好:_infix運算符的優先級低於函數application_的優先級。 – leftaroundabout