3
addMod26 a b = (a + b) `mod` 26
char2Int c = ord c - (ord 'a')
int2Char i = chr (i + (ord 'a'))
addChar a b = int2Char ((addMod26 `on` char2Int) a b)
此代碼嘗試在char
上執行add
操作。它運作良好。但功能addChar
太冗餘。如何簡化它?如何在haskell中封裝函數?
嘗試寫這樣
addChar = int2Char . (addMod26 `on` char2Int)
這是錯誤的。 (.) :: (b -> c) -> (a -> b) -> a -> c
不能接受(b -> b -> c)
,因爲它是第一個參數。
任何好主意,或建議?
謝謝!我通過這種風格'(。:) f g a b = f(g a b)'添加了一個像'。:'這樣的函數,但是你的解決方案更好,'。:'很生動。 – liuyang1