Mic*_*ael 7 functional-programming
使用在函数范围之外声明的函数是否违反了函数原则,如不变性?或者这是指数组,字符串等数据.
例如:
var data ["cat", "dog", "bird"];
function doThing (val) {
return val + ", go away!"
}
function alterData (data) {
return data.map(doThing);
}
alterData(data);
Run Code Online (Sandbox Code Playgroud)
以上代码是否可以接受?或者"doThing"函数是否需要作为参数传递给alterData函数?
我感到困惑的原因是因为在函数式编程示例中,我经常看到正在使用的语言的本机函数,而不是首先传递给函数.但是,这些示例从未足够复杂,无法显示如何使用函数库.
问候
在这方面,函数式编程与过程式编程没有什么不同\xe2\x80\x94你编写的定义可以在范围内的任何地方重用。您可以通过多种机制控制范围内的内容,例如使用模块定义、模块导出列表和模块导入。例如(在 Haskell 中):
\n\nmodule My.Module\n -- List of definitions exported from this module \n ( doThing\n , alterData\n ) where\n\n-- Any definitions exported from `My.Other.Module` will be in scope \n-- in this one\nimport My.Other.Module\n\n-- Can\'t name this `data` because it\'s a reserved word in Haskell\nyourData :: [String]\nyourData = ["cat", "dog", "bird"]\n\ndoThing :: String -> String\ndoThing val = val ++ ", go away!" \n\nalterData :: [String] -> [String]\nalterData strings = map doThings strings\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
568 次 |
| 最近记录: |