关于一个符号的所有定义都是存储在下值规则表里的吗?
mathematica吧
全部回复
仅看楼主
level 6
twototoo222 楼主
比如有如下定义
f=a
然后再DownValues[f]里找不到这条定义,也就是说没有把这条定义储存在f的下值规则表中,那么这条定义被怎么样存储起来的?
2013年04月02日 08点04分 1
level 6
twototoo222 楼主
这样的定义好像确实不是f的下值,那么它被存储到哪里了呢?
2013年04月02日 08点04分 2
level 10
嗯,下值存储的定义和传统意义上的【函数】类似,类似于f[x_]:=x^2
f=a这条定义存储在OwnValues里,OwnValues从字面上就可以知道存储的是符号本身的值。
详情:
http://zh.wikibooks.org/wiki/Mathematica/%E5%88%9D%E7%BA%A7%E6%93%8D%E4%BD%9C#.E7.9B.B4.E6.8E.A5.E5.8F.98.E9.87.8F.E5.92.8COwnValues
2013年04月02日 08点04分 3
哦,明白了 是不是OwnValues里的规则一定排在DownValues里的规则前面呢? 能把这两个库里的规则放到一起操作吗?比如排序 还有我们能访问全局规则库并对其进行操作吗?
2013年04月02日 08点04分
回复 twototoo222 :OwnValues和DownValues没关系吧。比如f单独出现的时候系统肯定不会找它的DownValues,当f[x]出现的时候系统也不会找它的OwnValues,因为两类规则的模式【左值】根本不会一样。所以把这两类规则放在一起排序是根本没意义的。Leonid的书好像讲过,全局规则库是对用户屏蔽的。。。
2013年04月02日 09点04分
回复 mm_酱 :规则的顺序对计算有影响的情况只存在于:对同一个表达式,有多于一条规则【或者说这条规则左边的模式】能与之匹配。OwnValues是不会出现这种情况的,只有DownValues等(UpValues,SubValues....)才会。
2013年04月02日 09点04分
回复 mm_酱 :哦,谢谢了 不过左值这个概念我还没看到,是mathematica里的吗?虚拟全书里哪个章节讲左值吗?我正在看核心语言
2013年04月02日 09点04分
1