Leonid Shifrin 的书

自我毁灭的函数

来自 Michael Trott 的小技巧,能让一个函数在运行中毁灭自己,即清除自己的定义:

Clear[f, x, y, z];
z = 5;
f[x_] := (Clear[f]; Print[x]);

暂时不知道有什么用处。

MapAll是深度优先的
Thread和MapThread

二者的区别在于:

1. 如果被Thread的函数本来就能运行了,那么就会出乱子。MapThread没有这个问题。

2. MapThread可以指定层次,Thread不行。

Outer

Outer是可以用层次指定的。默认是作用到最深层。

规则的排序

如果一个函数有多个定义。系统会在其DownValues中自动对其排序,排序的定义是特殊的定义在前,一般的定义在后。这里所说的“定义”的特殊或一般指的是规则的模式的特殊和一般。其判断方式是完全基于语法的,跟语义没有关系。

原文地址:https://www.cnblogs.com/mymma/p/2991080.html