当前位置:  开发笔记 > 编程语言 > 正文

Mathematica:Unevaluated vs Defer vs Hold vs HoldForm vs HoldAllComplete vs etc等

如何解决《Mathematica:UnevaluatedvsDefervsHoldvsHoldFormvsHoldAllCompletevsetc等》经验,为你挑选了1个好方法。

我被搞糊涂了所有内置在声称为防止评价在某种程度上数学函数:Unevaluated,Defer,Hold,以及超过一半的形式的打Hold*.Mathematica文档只是单独解释了每个函数,但没有解释为什么要选择其中一个函数.任何人都可以对所有这些功能提供一致的解释吗?整件事对我来说似乎是一个令人费解的混乱.将它全部与Lisp宏相关可能是一个很好的起点.

大多数Mathematica语言都设计得非常好,但看起来Wolfram真的把自己描绘成了这方面的一个角落.或者我可能会遗漏一些东西.



1> Pillsy..:

这些都是非常棘手的结构,很难给出明确的解释; 它们并不像Lisp的宏(或者,对于这个问题,Lisp的关系那么简单QUOTEEVAL).然而,在Wolfram网站上的Robby Villegas 1999年的演讲"未评估的表达"中,有一个很好的,冗长的讨论形式.

Defer从那次谈话中省略,因为它是Mathematica 6.0的新版本.这很像HoldForm,除了当它在前端输出(但不是裸内核)时,它被剥离,留下一个可以用作输入的表达式.如果您想以编程方式构造用户可以编辑和评估的表达式,比如在调色板中,这非常有用.

推荐阅读
乐韵答题
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有