我刚刚开始学习函数式编程(Scheme)。但是我仍然有“功能性”思考的问题。
类似于:
func1(int a){
if(a==100)
a=0;
return func2(a);
}那里有一个状态变化,所以这是命令式编程。
如果我把" If“部分放到另一个函数中,这会使它变得有趣吗?
func1(int a){
return func2(func3(a));
}这就是所有的一切吗?
谢谢!
发布于 2012-03-03 10:38:40
不怎么有意思。首先,对函数式编程的含义有几种不同的定义,而且它随社区的不同而不同。通常情况下,Haskellers对此的看法与阴谋者略有不同。
严格地说,函数式编程使用函数作为原语,因此可以将它们放入变量中并作为参数传递,而不会在过程中计算它们。
Haskellers通常会在纯度要求上进行调整。函数纯洁性是指函数不能有副作用(包括状态的变化);即每次调用具有相同参数的函数时都必须返回相同的值。
您的第二个函数在第一个条件下失败,这是必要的条件。你没有以一等公民的身份使用函数。
如果你这样写,
func1(int a) {
return (
if (a==100)
then func(0);
else func2(a);
)
}这现在是纯粹的,但它既不是特别有效,也不是特别迫切。
我真的不能把你的例子翻译成特定的功能,因为上下文太少了。函数代码通常的"hello world“是这样的:
square(x) = x * x
twice(f, x) = f(f(x))
twice(square, 4)
=> 256在这里,我们定义了一个函数square,它将数字乘以自身。我们定义另一个函数twice,该函数接受一个函数和一个参数,并将该函数应用于该参数两次。然后,我们为函数twice提供参数square和4。请注意,这不是twice(square(4)) -只有在函数twice的定义中才会对函数square求值。
https://stackoverflow.com/questions/9542863
复制相似问题