【问题标题】:What is this symbolic code transformation called?这种符号代码转换叫什么?
【发布时间】:2010-05-28 14:01:11
【问题描述】:

我经常跨越这种代码转换(甚至是数学转换)。 (Python 示例,但适用于任何语言。)

我有一个功能

def f(x):
  return x

我将它用于另一个。

def g(x):
  return f(x)*f(x)

print g(2)

导致 4

但是我想去掉函数依赖,我把函数g改成

def g(f):
  return f*f

print g( f(2) )

也导致4个

你如何称呼这种转换,将一个函数本地化为一个标量?

【问题讨论】:

    标签: terminology program-transformation


    【解决方案1】:

    我不确定它是否有特定的术语。

    在函数式编程的一般术语中,传递标量参数和传递函数作为参数之间通常没有区别。

    在第一个示例中,我仍然可以调用g(f(2)),它应该计算f(f(2))*f(f(2)),其中(因为f(x) 是恒等转换)也将得到4 作为答案。

    【讨论】:

    • 是的,但如果 f(x) 很耗时(这里不是这种情况)g ( f(2) ) 在第二种情况下是 g(2) 在第一种情况下的两倍.我正在寻找这种代码优化的命名。
    • 啊,我明白你的意思了。在这种情况下,也许 Memoization (en.wikipedia.org/wiki/Memoization) 是您所追求的术语?我希望/希望编译器和/或运行时会照顾这种类型的优化。
    • 感谢它回答模式的“优化”部分的链接,但我正在寻找一个更“数学”的术语:另一个例子可能是 ODE 定义:在:y'( t) = y(t)^2 ; y 是一个函数。方程可以改写为: f(t) = y(t)^2 ;为了解决它,你构建了一个新函数: f2(y,t) -> y^2 ;在这种情况下,y 是一个实数。你已经通过与 g(x) 相同的过程将 f 转换为 f2 不幸的是,它没有意义。
    猜你喜欢
    • 1970-01-01
    • 2012-07-24
    • 2013-03-25
    • 2011-04-07
    • 2012-09-11
    • 2011-04-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多