Mathematica:未评估、延迟、保留、HoldForm、HoldAllComplete、等等

2024-03-01

我对所有旨在以某种方式阻止评估的内置 Mathematica 函数感到困惑:Unevaluated, Defer, Hold,以及超过六种形式Hold*。 Mathematica 文档只是单独解释每个函数,而没有解释为什么选择其中一个函数。谁能对所有这些功能提供一个连贯的解释?整个事情对我来说似乎是一团混乱。将它与 Lisp 宏联系起来可能是一个很好的起点。

大多数 Mathematica 语言的设计都非常出色,但看起来 Wolfram 在这方面确实把自己逼到了墙角。或者我可能会遗漏一些东西。


这些都是相当棘手的结构,很难给出清晰的解释;它们不像 Lisp 宏那么简单(或者说,Lisp 宏之间的关系)QUOTE and EVAL)。然而,有一个很好的、冗长的讨论,其形式是Robby Villegas 1999 年演讲“未评估的表达”的笔记 http://library.wolfram.com/infocenter/Conferences/377/在沃尔夫勒姆的网站上。

Defer该演讲中省略了它,因为它是 Mathematica 6.0 中的新内容。这很像HoldForm,除了当它在前端(但不是裸内核)中输出时,它被剥离,留下一个可以用作输入的表达式。如果您想以编程方式构造用户可以编辑和计算的表达式(例如在调色板中),这非常有用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Mathematica:未评估、延迟、保留、HoldForm、HoldAllComplete、等等 的相关文章

  • 为什么向字符串添加 null 是合法的?

    MSDN 文章关于字符串基础知识 http msdn microsoft com en us library ms228362 aspx显示这个 string str hello string nullStr null string emp
  • 在Emacs中,这个错误是什么意思? “警告:运行时需要 cl 包”

    我正在字节编译一个模块 它给了我这个警告 Warning cl package required at runtime 为什么这是一个警告 我很清楚我正在使用cl包裹 事实上有一个 require cl 模块中的语句 使用有什么问题吗cl
  • Java 源文件中可以有宏吗

    在我的程序中 我多次从控制台读取整数 每次 我都需要输入这一行 new Scanner System in nextInt 我习惯了 C C 我想知道我是否可以定义类似的东西 define READINT Scanner System in
  • NDS 求解波动方程时的不稳定性

    我正在尝试使用NDSolve求解波动方程 以检查使用它是否比我的旧特征方程更容易和 或更快 方法实施 我得到了很多特征方法没有得到的不稳定性 并且由于这些是简单的方程 我想知道出了什么问题 希望不是问题的物理方面 ans Flatten N
  • 在 Mathematica 中使用图形进行渐变填充

    我如何使用以下内容创建Rectangle in Graphics Using Polygon 你可以 Graphics EdgeForm Black Polygon 0 0 3 0 3 1 0 1 VertexColors gt White
  • AIRFLOW:在 jinja 模板中为 {{ds}} 使用 .replace() 或relativedelta()

    我的目标是根据气流宏变量 ds 返回上个月的第一天并使用它 例如在 Hive 操作符中 例如 对于 ds 2020 05 09 我预计返回 2020 04 01 我找到并尝试的解决方案是 SET hivevar LAST MONTH ds
  • 无法在 C++ 中使用宏定义类

    我想生成许多几乎没有什么区别的子类 所以我想使用宏来简化我的工作 宏定义如下 define DECLARE SUB CLASS sub class name base class name value1 class sub class na
  • GCC/CLANG 与 MSVC 的预处理器之间有何差异?

    以下预处理器宏 通常的嫌疑人 测试空参数列表并计算参数数量 在 gcc clang 上运行时没有警告 但在 Microsoft VisualC 上失败 IS EMPTY returns nothing if the parameter li
  • Mathematica 的模式匹配优化不佳?

    我最近询问了为什么PatternTest引起了大量不必要的评估 PatternTest 未优化 https stackoverflow com questions 8484299 patterntest not optimized列昂尼德回
  • 将模块定义为 Manipulate 表达式的一部分与在初始化部分中定义有任何性能问题吗?

    我想问是否有人知道任何问题 性能或其他 如果要定义 放置 Manipulate 表达式使用的模块 就在 Manipulate 表达式本身内部 而不是在初始化部分 通常是在哪里完成的 两种方法都有效 但是当涉及到从模块直接访问 Manipul
  • 宏中 do { } while(0) 与 ({ }) 的优点?

    Stack Overflow 上有很多关于使用的问题do while 0 在宏中 但这有点不同 我明白为什么do while 0 用于将多行代码包装在宏扩展中 但我经常看到另一种形式 The form 的优点是它是一个表达式并且可以有 返回
  • 如何导出 ContourPlot3D 曲面并在 Excel、Originlab 或其他类似软件中重新生成

    我尝试过这个 但失败了 fig3D ContourPlot3D x 2 y 3 z 2 0 x 2 2 y 2 2 z 2 2 PlotPoints gt 100 pts InputForm fig3D 1 1 1 ListSurfaceP
  • Lisp 中的 (定义 (平均 ....))

    我只是在玩scheme lisp 并正在考虑如何纠正我自己的定义average 我不确定如何做一些我认为需要的事情 定义一个接受任意数量参数的过程 计算这些参数 将参数列表传递给 以将它们加在一起 有人有定义的例子吗average 我似乎对
  • gensym 在 Lisp 中做什么?

    我听到一些同学谈论他们如何使用该功能gensym为此 我问他们它做了什么 甚至在网上查了一下 但我真的无法理解这个函数的作用是什么两者都不为什么或何时最好使用它 特别是 我对它在 Lisp 中的作用更感兴趣 谢谢你们 独特且未被拘禁的符号
  • 为什么 Rust 在运行时检查数组边界,而(大多数)其他检查发生在编译时?

    正在阅读基本介绍 http doc rust lang org book arrays vectors and slices html 如果您尝试使用不在数组中的下标 您将收到错误 数组访问在运行时进行边界检查 为什么 Rust 在运行时检
  • F# 类型提供程序与 Lisp 宏

    我一直在阅读有关 F 3 0 类型提供程序的内容 例如here http msdn microsoft com en us library hh156509 aspx 并且它们似乎基于一种编译时代码生成 在这方面我想知道它们与 Lisp 宏
  • 如何驯服 Windows 标头(有用的定义)?

    在其中一个答案中this https stackoverflow com questions 1394132 macro and member function conflict问题jalf https stackoverflow com
  • 从 CCL 检索(加载)源代码?

    我打了电话 load code lisp 用CCL 然后不小心删除了code lisp 有什么办法可以找回源代码吗 CCL 在内存中是否有它 这是一个非常特殊的功能 这里只为克洛祖尔CL 该代码在其他地方不起作用 这在 CCL IDE 中对
  • 如何默认显示动画控件

    在mathematica中这个简单的控制对象中 如下所示 Control x 0 1 我们必须将鼠标指针移至对象的右上角才能获得名为 显示动画控件 的提示 然后单击它以查看播放 前进等动画控件 有没有办法通过设置一些选项来默认情况下打开所有
  • 学习 Lisp 的资源 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi

随机推荐

  • 使用 Kafka Connect 将架构和数据更改从 MySQL 流式传输到 MySQL

    我们如何使用 Kafka 连接源连接器将架构和数据更改以及某种转换传输到另一个 MySQL 实例 如果我使用 Kafka 的 Python 库 confluence kafka 在加载到目标数据库之前消费和转换消息 是否有办法传播模式更改
  • ChipGroup单选

    我怎样才能强制ChipGroup表现得像RadioGroup就像总是至少有一个选定的项目一样 环境setSingleSelection true 如果您单击两次 还可以增加不选择任何内容的可能性Chip 为了防止所有芯片被取消选择 您可以使
  • numpy python:从一列中查找另一列中每个唯一值的最高值

    有人可以建议一种有效的方法来为另一列中的每个唯一值获取一列中的最高值吗 np array 看起来像这样 column0 column1 column2 column3 37367 421 231385 93 37368 428 235156
  • iOS 中可以使用 RFCOMM 吗?

    我在 iOS 开发方面相对较新 我想做一个跨平台的蓝牙应用程序 在Android中 我使用RFCOMM发送custom数据 如字符串 当我用谷歌搜索 iOS蓝牙 时 我找到了Core Bluetooth结果中的框架似乎是为低能耗连接而设计的
  • 根据条件清理数据框

    我有一个看起来像这样的数据框 虚拟数据 df1 lt structure list Date c 24 06 2002 24 06 2002 25 06 2002 02 07 2002 24 07 2002 08 07 2002 08 07
  • 熊猫:增加日期时间

    我需要采取一些行动date在 df 列中 buys date min buys date MonthDelta 1 buys date min buys date timedelta days 5 但它返回 类型错误 日期时间 时间增量操作
  • Shell 脚本参数[重复]

    这个问题在这里已经有答案了 解析 shell 脚本命令中的参数然后验证它的最佳方法是什么 例如bash someScript sh p
  • 以 2 为底的对数刻度

    我想使用对数刻度绘制以下几对点 import matplotlib pyplot as plt f ax plt subplots 1 xdata 256 512 1024 2048 ydata 1 2 30 150 ax scatter
  • “可能会损失精度”是 Java 发疯了还是我遗漏了一些东西?

    AFAIK 当我不应该出现 精度损失 错误时 我却收到了 精度损失 错误 这是一个实例变量 byte move 0 这发生在此类的方法中 this move this move lt lt 4 byte Guy moven indexOf
  • 将 Unicode Emoji 正确读入 R

    我有一组来自 Facebook 的评论 通过 Sprinkr 等系统拉取 其中包含文本和表情符号 我尝试在 R 中对它们进行各种分析 但在正确提取表情符号字符方面遇到了困难 例如 我有一个 csv 以 UTF 8 编码 其消息行包含如下内容
  • 如何使用asp.net core blazor web assembly显示google adsense广告

    我有一个在 blazor 上运行的项目 我想在 blazor 上添加 google adsense 广告 但我找不到任何在 blazor 上运行 google 广告的解决方案 请帮我设置广告 看看这个视频 https www youtube
  • mkdir() 说没有这样的目录并失败?

    我可能做了一些非常简单的错误 但是当我尝试创建一个目录 使用刚刚执行的插入变量作为最后一个文件夹名称 时 我收到错误 警告 mkdir function mkdir home blah blah 中没有这样的文件或目录 与代码 if is
  • gdb:无法找到新线程:系统更新后出现一般错误

    我正在 ARM 板上运行基于 OpenEmbedded 的 Linux 我的应用程序正在其中运行 我曾经运行内核 2 6 35 gdb 6 8 和 gcc 4 3 最近我将系统更新到内核2 6 37 gdb 7 4 也尝试过7 3 和gcc
  • 如何在 Visual Studio Code 中创建多个光标

    在 VS Code 中创建多个光标的键盘快捷键是什么 Press Alt and click This works on Windows and Linux and it should work on Mac too Visual Stud
  • lambda 和成员函数指针的区别

    在我的回答中here https stackoverflow com a 74078452 11998382 巴里指出最好打电话views transform Planter getPlants 因为views transform Plan
  • 派生 Serde 的 Serialize 或 Deserialize 强制泛型类型可序列化,尽管它不需要

    My type A 它可以包含任何实现trait Trait 是可序列化的 尽管实现该特征的类型Trait也许不是 就我而言 它不可能 它是一个私有非对称密钥 extern crate serde macro use extern crat
  • 梯度下降和牛顿梯度下降有什么区别?

    我明白梯度下降的作用 基本上 它试图通过缓慢地沿着曲线移动来走向局部最优解 我想了解普通梯度下降法和牛顿法之间的实际区别是什么 我从维基百科上读到了这样一句话 牛顿方法使用曲率信息来采取更直接的路线 这直观上意味着什么 在局部最小值 或最大
  • 如何在 Java 中将 long 变量更改为时间戳?

    如何将长整型变量更改为时间戳变量 我可以将其转换为字符串 但我需要将其转换为时间戳才能在数据库中使用它 Timestamp 扩展了 java util Date 并且它有一个接受 long 的构造函数 像这样 import java sql
  • 如何在android中注册低电量广播接收器?

    我想注册低电量广播 如果电池状态达到某种程度 我想收到警报 如果您有任何想法请帮助我 您需要注册一个BroadcastReceiver for ACTION BATTERY LOW http developer android com re
  • Mathematica:未评估、延迟、保留、HoldForm、HoldAllComplete、等等

    我对所有旨在以某种方式阻止评估的内置 Mathematica 函数感到困惑 Unevaluated Defer Hold 以及超过六种形式Hold Mathematica 文档只是单独解释每个函数 而没有解释为什么选择其中一个函数 谁能对所