Hoo*_*ked 8 wolfram-mathematica lazy-evaluation
假设我有一个保存在变量中的矩阵列表G
并应用以下操作:
top[g_] = Minors[g]
Diagonal[top /@ G]
Run Code Online (Sandbox Code Playgroud)
Minors
返回一个矩阵,其中每个元素是删除了(i,j)row/col的行列式,并Diagonal
返回矩阵的对角元素列表.
我的问题是关于这些命令的评估 - 显然我不希望评估所有条目.Mathematica是否懒惰,首先解析Diagonal,只提取Minors所需的元素,或者是构造的次要矩阵,然后拉出对角元素?
这是懒惰评估的一般问题,但对于Mathematica来说是新手我会很感激有关如何改进特定问题的语法的任何提示.
已经很晚了,所以只有一个简短的答案:调查Hold[]
及其亲属。使用它们,您可以实现惰性求值函数。大多数 Mathematica 固有函数都不是惰性函数,只有少数函数是惰性函数。一般来说,作为初学者,您应该避免修改 Mathematica 内部函数的行为,尽管这样做非常有趣,并且很容易使整个系统无法使用。