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