我有一个功能,有很多看起来像这样的警卫:
function
| p `elem` [0,1,2,3,4,5,6] = [0,1,2,3,4,5,6]
| p `elem` [7,8,9,10,11,12,13] = [7,8,9,10,11,12,13]
| p `elem` [14,15,16,17,18,19,20] = [14,15,16,17,18,19,20]
| otherwise = []
Run Code Online (Sandbox Code Playgroud)
我确信我可以用Haskell写得更短.如果没有,那就没关系.我是Haskell的新手,我希望通过学习不同的方法来改善它.
也许使用"地图"可能是一个好的开始?但是,我不确定如何传递这些特定的列表.
值并不总是连续的.
我试过谷歌搜索它,但我找不到一个简单的解释.谁能解释一下这个功能是如何工作的
import Data.Char
encode :: Int -> String -> String
encode offset msg = map (chr . (+ offset) . ord) msg
Run Code Online (Sandbox Code Playgroud)
我知道它正在映射(chr . (+ offset) . ord)函数msg,但内部发生了什么(chr . (+ offset) . ord).
haskell ×2