函数算术?

时间:2011-09-04 01:21:36

标签: function functional-programming

整个夏天我学到了一些PHP和javascript,所以我想我今年也会在数学上有一个良好的开端,对我来说,这将是微积分。我正在观看一些视频并发现了这个:

http://www.youtube.com/watch?v=K6hxKU1kWUs&feature=mfu_in_order&list=UL

他说{​​{1}}。我从来没有见过这样的函数,所以我想我会问这是否也是用编程语言实现的。

假设我有伪代码:

(f+g)(x)=f(x)+g(x)

是否有任何编程语言允许这样的内容:

function double(x){ return x*2; } function triple(x){ return x*3; }

...等于50?

此外,我是否可以从一个不是10000年的来源学习微积分?

另外,我知道没有编程语言可以使用这种确切的语法,但我的意思是类似的......

4 个答案:

答案 0 :(得分:8)

答案 1 :(得分:4)

大多数语言都允许你这样或那样做......

function add(a, b) {
    return function(x) {
        return a(x) + b(x);
    };
}

add(double, triple)(10);  // Gives 50

答案 2 :(得分:2)

你可以在Scala中轻松完成:

abstract class F { f =>
  def apply(x: Double): Double
  def +(g: F) = { new F { def apply(x: Double) = f(x) + g(x) } }
}
object F {
  implicit def funcToF(f: Double => Double) = new F { def apply(x: Double) = f(x) }
}

import F.funcToF

val f = (x: Double) => 2*x
val g = (x: Double) => 3*x

val h = f + g
println(f(1))        // 2
println(g(1))        // 3
println(h(1))        // 5
println((f + g)(1))  // 5

您可以在http://www.simplyscala.com

在线试用

答案 3 :(得分:1)