有人问我部分功能应用和关闭之间有什么关系。 我会说没有任何东西,除非我错过了这一点。 比方说,我在python写,我有一个很简单的功能MySum定义如下:部分应用和关闭
MySum = lambda x, y : x + y;
现在我固定一个参数,以获得更小的元数函数返回相同的值MySum会返回,如果我用同样的参数被称为(部分应用程序):
MyPartialSum = lambda x : MySum(x, 0);
我可以做同样的事情,在C
int MySum(int x, int y) { return x + y; }
int MyPartialSum(int x) { return MySum(x, 0); }
所以,杜MB的问题是:有什么区别?为什么我需要关闭部分应用程序?这些代码是等价的,我不明白封闭和部分应用程序的界限。
我试图通过阅读关于此事的很多东西来澄清事情:在柯里化和部分应用程序之间存在很多混淆,它们通常互换,但是是不同的东西。 维基百科说:“部分应用程序(或部分功能应用程序)是指将一些参数固定到一个函数的过程,产生另一个较小的函数” – Cancer 2012-07-21 09:14:22
这正是上面发生的情况。据我所知,咖喱只是形式的一种特殊表现。 – Hamish 2012-07-21 09:16:32
是的,我明白了,您的代码可以实现这一点,而且非常清晰。但是......我不是也这么做吗?不同的是,很明显,我没有将函数作为参数传递,但是我也修正了一个参数,并创建了一个函数,它具有相同的功能,并返回相同的值,就像我使用所有参数调用原始函数一样。对不起,我觉得很蠢,我很困惑... – Cancer 2012-07-21 09:25:34