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、等等 的相关文章

随机推荐

  • 使用 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 文档只是单独解释每个函数 而没有解释为什么选择其中一个函数 谁能对所