Maple 第三章 变量管理(3.3-1)

一般情况下,maple遇到一个变量是,它总是搜索这个变量所指向的对象。我们把这个过程称为maple对变量求值。如果给变量x指定的值为y,给y指定的值为z,给z指定的值为5,那么求得的x的值为5,大概就是这样一个逻辑。
PS:这节内容比较多,我准备分两小节来写
3.3.1求值的层次
大多数情况下,Maple对名字做完全的求值,也就是说,当使用一个名字或者符号时,Maple就检查这个名字或符号是否被指定了什么值并返回
> x := y;
                             x := y
> y := z;
                             y := z
> z := 5;
                             z := 5
> x;
                               5
我们可以使用eval这个命令来控制一个表达式的求值层次。如果调入eval时只有一个参数,那么对那个参数进行完全的求值,eval的第二个参数指明对第一个参数作多少层的求值
> eval(x, 1);
                               y
> eval(x, 2);
                               z
> eval(x, 3);
                               5
完全求值规则的主要例外是诸如表,列阵和过程之类的特殊数据结构以及在一个过程内的局部变量的求值
> unassign('x', 'y', 'z');
3.3.2最后名字的求值
数据结构array,table和proc有一个称作最后名字求值的特殊求值方式

Maple把x代换成y和把y代换成z,这是因为最后的名称z将产生一种特殊的结构:array(列阵)
> x;
                               z
Maple之前对列阵(array),表(table),过程(proc)使用最后名字求值是因为这些结构常常是非常大的,而按照缺省的方式进行完全求值会在maple中产生多余的输出结果。不过你也可以通过明确调用eval命令来进行强迫的完全求值

在缺省状态下,对maple的内部程序进行完全求值是受到抑止的。为说明这一点,从软件包finance中装入effectiverate命令。
此时我们只能看到对这个程序的简单的描述,得不到更多的信息,但是当我们把interface变量verboseproc设置为2后,再试一下刚才的命令,就会得到有趣的结果

现在我们看到的是effectiverate这个命令的Maple语言的源程序
verboseproc的省缺值为1时:
> interface(verboseproc = 1);
                               2
?interface的帮助页提供了verboseproc的可能设置和其他interface变量的解释。在下一节maple的内部变量中,我们将讨论interface变量的作用

下面这个是maple帮助页面所给的实例,与我们所给出的基本一致

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值