我真的很难理解程序和函数编程范例之间的区别.
以下是维基百科关于函数式编程的前两段:
在计算机科学中,函数式编程是一种编程范式,它将计算视为数学函数的评估,并避免状态和可变数据.它强调功能的应用,与强调状态变化的命令式编程风格形成对比.函数式编程的根源在于lambda演算,这是一种在20世纪30年代开发的用于研究函数定义,函数应用和递归的正式系统.许多函数式编程语言可以被视为lambda演算的详细说明.
在实践中,数学函数与命令式编程中使用的"函数"概念之间的区别在于命令式函数可能具有副作用,从而改变程序状态的值.因此,它们缺乏参照透明度,即相同的语言表达式可能在不同的时间导致不同的值,这取决于执行程序的状态.相反,在函数代码中,函数的输出值仅取决于输入到函数的参数,因此
f使用相同的参数值调用函数 两次x将产生相同的结果f(x).消除副作用可以更容易理解和预测程序的行为,这是开发函数式编程的关键动机之一.
在第2段中,它说
相反,在函数代码中,函数的输出值仅取决于输入到函数的参数,因此
f使用相同的参数值调用函数两次x将产生相同的结果f(x).
程序编程的情况不一样吗?
什么应该在程序性和功能性中脱颖而出?
procedural-programming programming-languages functional-programming
我为一家技术公司工作,该公司比产品发货做更多的原型设计.我刚才被问到C#和F#有什么区别,为什么MS创建F#以及它会比C#更好.
我一直在使用这种语言,我喜欢它,所以我可以很容易地继续讨论F#的强大功能,但是我缺乏C#的经验来说明为什么我们应该使用它而不是另一种.
使用C#vs F#或F#vs C#有什么好处?
我最近在一次采访中被问到这个问题。我无法得到正确的答案。
当您使用相同的参数重复调用过程语言(如 C)和函数语言(如 haskell)中的函数时,您可能会得到不同的结果?我在[this](过程式编程和函数式编程之间有什么区别?)帖子中读到,纯函数式语言总是会产生相同的答案。为什么函数式语言会出现这种情况,而过程式语言则不然?
作为 js 的新手,当我遇到以下代码的一些特殊行为时,我正在玩循环:
var i = 5;
while(i!=0){
console.log(i);
i--;
}Run Code Online (Sandbox Code Playgroud)
OUTPUT: 543211
Run Code Online (Sandbox Code Playgroud)
我在 c++ 中复制了相同的代码:
OUTPUT: 543211
Run Code Online (Sandbox Code Playgroud)
OUTPUT: 54321
Run Code Online (Sandbox Code Playgroud)
知道我是否遗漏了两种语言之间的一些重要差异会有所帮助。
当我使用会更改数组或列表的东西时,通常会发生这种情况。例如这里:nums.drop(i)。我尝试调试,但它甚至看不到该行,如果您向我解释这种行为,我将不胜感激
def findDuplicates(nums: Array[Int]): List[Int] = {
nums.foldLeft(0)((accumValue, nextEl) => {
if (nums.tail.contains(nextEl)) {
accumValue
} else {
nums.drop(accumValue)
accumValue
}
})
nums.toList
}
Run Code Online (Sandbox Code Playgroud) paradigms ×2
.net ×1
arrays ×1
c ×1
c# ×1
f# ×1
haskell ×1
immutability ×1
javascript ×1
procedural ×1
r ×1
sas ×1
scala ×1
syntax ×1
terminology ×1
while-loop ×1