level 3
我看这两个'闭包'的概念,定义上怎么看起来差的很远呢?
多谢指点。
2012年12月24日 07点12分
1
level 12
不一样,程序语言中流行的这个闭包都源自lisp,特指函数和其所捕获的自由变量的值所组合成的数据结构。这个概念在SICP中有说,但是感觉没说清楚,你首先要明白什么是自由变量,然后要明白什么是捕获,最后还要明白数据结构,这三个概念。
2014年09月06日 16点09分
7
upvalue
2014年09月06日 17点09分
也可以的,定义表达式和变量自由的关系,就可以符合数学的闭包定义
2014年09月13日 07点09分
回复 mhsy2003 : 这里写不下,见 8 楼。
2014年09月14日 13点09分
level 12
A set has closure under an operation if performance of that operation on members of the set always produces a member of the same set; in this case we also say that the set is closed under the operation. 你怎么定义函数让它映射回 the same set?这里的问题在于 closed,在 lambda 表达式中如果没有自由变量,则称这个表达式是 closed。如果这里混淆这两个概念的话,就会发现两种闭包的定义是差不多的。但是毕竟是混淆概念了……
2014年09月14日 13点09分
8
闭包之后,原来的自由变量对于闭包来说就是closed的
2014年09月14日 16点09分
原来的自由是相对于函数来说的,闭包之后,那个自由变量对于闭包来说就是确定的,而不再是自由变量
2014年09月14日 16点09分
回复 mhsy2003 :所以我说两种闭包对 closed 的定义不同……
2014年09月15日 01点09分
回复 satan_1st :数学上只考虑某种定义的集合的操作是否符合闭包的定义,这没什么问题。
2014年09月15日 02点09分