首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

这些LISP表达式如何评估所提供的答案?

LISP(LISt Processing)是一种基于列表数据结构的编程语言,它的表达式由括号括起来的列表组成。LISP表达式的评估是通过递归地应用一组定义好的操作规则来实现的。

LISP表达式的评估过程可以分为以下几个步骤:

  1. 读取(Read):将LISP表达式作为输入,解析成内部数据结构,通常是一个树形结构,称为S表达式(S-expression)。
  2. 展开(Expansion):对于包含宏(Macro)的表达式,需要进行宏展开,将宏调用替换为对应的代码片段。
  3. 求值(Evaluation):递归地对S表达式进行求值。如果S表达式是一个原子(如数字、字符串等),则直接返回其值。如果S表达式是一个列表,则根据列表的第一个元素(称为操作符)和剩余的元素(称为操作数)进行不同的求值操作。
  • 如果操作符是一个内置函数或特殊形式(如if语句、lambda函数定义等),则根据其定义进行求值。
  • 如果操作符是一个用户自定义的函数,则需要将函数体中的形参与传入的实参进行绑定,并递归地对函数体进行求值。
  • 如果操作符是一个特殊操作符(如quote、setq等),则根据其定义进行求值。
  1. 返回结果(Result):将最终的求值结果返回。
相关搜索:如何评估可能未提供的值?带有React的正则表达式未通过API调用提供正确答案如何评估前缀表示法中的表达式如何提供自己的数据并在TF文本分类中进行评估如何评估在F#中存储为字符串的表达式如何使用正则表达式删除这些标记之间的换行符?如何在github存储库中添加这些提供存储库或包信息的图像?如何正确评估包含特殊字符的JSON.parse表达式的Javascript字符串?在将用户提供的数据插入到DynamoDB GraphQL表之前,应该如何更改这些数据?我如何将这些ndarrray中的一个重塑为这些形式中的任何一个?如果可能,请提供示例代码如何将3个小整数中的字节连接起来,使Python中这些字节所表示的数字更大?当Google表单中的问题总数超过服务提供的最大数量时,我如何组合这些表单?如何为垂直对齐的视图提供尽可能大的高度,并使这些视图保持相同的高度?如何使用正则表达式替换/删除这些类型的日期,或者它们有可能是最好的方法吗?如何在执行copy into命令选择带有固定前缀的文件时提供正则表达式模式?如何区分本地用户和域用户,这些用户是来自我的凭据提供商的登录屏幕上的缓存切片我如何才能选择所有经常光顾的披萨店,这些披萨店至少提供一个使用SQL的披萨?如何在Common Lisp中使用正则表达式来获取字符串中的所有内容,直到最后一个"/“出现?
相关搜索:
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

如何评估香港主机托管提供可靠性和安全性?

如果您正在寻找一个香港主机托管提供商来托管您网站,那么您需要确保该提供可靠性和安全性。在选择一个主机托管提供商之前,您需要了解以下几个方面。  ...您需要认真阅读这些协议和条款,以了解其数据中心位置、数据安全、备份策略、退款政策、网络安全等方面的内容。  二、考虑其可用性  可用性是您网站在访问期间可靠性。...您需要确保您主机托管提供提供了良好数据保护措施,包括数据备份和数据加密。  四、查看安全措施  您需要确保您主机托管提供商采取了有效安全措施,以确保您网站不受黑客攻击和恶意软件影响。...七、评估服务级别协议  服务级别协议将告诉您该提供承诺可用性和性能水平。您需要仔细评估服务级别协议,并确保您主机托管提供商能够按照协议提供高质量服务。  ...您需要选择一个主机托管提供商,其采取环保措施,如使用可再生能源等,以减少对环境影响。  通过了解以上几个方面,您可以更好地评估香港主机托管提供可靠性和安全性。

1.9K30

如何让故事绘声绘影?这些惊艳数据可视化告诉你答案

来自腾讯云设计中心数据侠米随随就用这些成功可视化案例,让我们在快速理解信息同时,惊叹于数据可视化美丽。 如何才能让数据可视化在面向普罗大众时更容易接受和理解,甚至产生WOW感觉呢?...“网络演变”是谷歌推出,为了说明网络技术与浏览器相互作用,并让我们理解网络是如何发展交互页面。...在这个网站中,横向时间轴滚动,技术彩带上下飞动,几大浏览器版本线通贯全场,这都是一般图表不能表现出来。如果不用这种方式,可能我们并不能知道浏览器发展对网络技术重要性。...“The Network Behind the Cosmic Web”使用来自24000多个星系数据来构建宇宙网络多个模型,为星系融合提供了复杂蓝图。...通过上面这些案例分析,我们可以看出,这些案例首先都会有一个主题,围绕着这个主题对会对数据进行一些提纯,而不是把所有相关数据都罗列让用户自己去找答案。最后就是怎么让数据展示得更加生活和更有交互性了。

39600
  • 如何用Python编写一个Lisp解释器

    ,二是演示如何使用 Python 3 构造 Lisp 一种方言 Schema,作者把自己这个语言解释器称作 Lispy。...几年前,作者曾展示过如何用 Java 和 Common Lisp 写 Schema 解释器。而本次目的很纯粹,作者会尽可能简明扼要为大家进行介绍。 了解这些有多重要呢?...Lisp 一个伟大之处就在于交互式 read-eval-print 循环:为编程者提供了输入表达式,并立即读取,计算,然后输出途径,而非冗长构建/编译/运行过程。...方法 find 可用来为变量寻找合适环境:内部环境或外部环境。 来看看如何这些东西整合在一起,下面是对 eval 新定义。...Tony 认为最难部分是表达式解释器;需要Lisp,他知道如何编写 C 程序来处理非 Lisp 字符,并将其链接到 Lisp 程序。

    1.4K40

    Lisp本质(The Nature of Lisp)学习思考

    这么长赞美词虽然看起来相当动人, 不过对我毫无意义。没人能给我演示这些东西是如何应用, 因为这些东西一般来说只有在大型系统才会用到。我争辩说, 这些东西传统语言一样办得到。...到目前为之, 我还没有说Ant在解析XML时遇到困难。你也不用麻烦去它网站上去找答案了, 不会找到有价值东西。至少对我们这个论题来说是如此。我们还是继续下一步讨论吧。我们答案就在那里。...我们完全可以采用其他格式。其中一种(刚好就是Lisp采用)格式, 叫做s表达式。s表达式要做和XML一样, 但它好处是写法更简单, 简单写法更适合代码输入。后面我会详细讲s表达式。...学会Lisp意味着你能找到更好工作, 因为聪明雇主会被你与众不同洞察力打动。...学会Lisp也可能意味着明天你可能会被解雇, 因为你总是强调, 如果公司所有软件都用Lisp写, 公司将会如何卓越, 而这些话你同事会听烦Lisp值得努力学习吗?

    1.7K60

    可爱 Python:Python 中函数编程

    一个答案可能会说 FP 就是您在使用例如 Lisp、Scheme、Haskell、ML、OCAML、Clean、Mercury、Erlang(或其它一些)语言进行编程时所做。...在很纯粹情况下,一个程序就是一个表达式(加上支持定义)。 FP 关心是计算什么而不是如何计算。...虽然实际上消除程序中所有流控制命令可能只对加入“混乱 Python”竞争(与看上去非常象 Lisp 代码)有用,但是理解 FP 是如何使用函数和递归来表示流控制是值得。 ...这样就提供表达式版本 if/ elif/ else 块(假设每块都调用一个函数,通常总有可能这样安排)。下面是具体方法:  清单 1....但他重点与我这一专栏观点有些相反,它提供了 Python 和 Lisp 之间非常好常规比较。 comp.lang.functional 常见问题是了解函数编程一个良好开始。

    91120

    《SICP》读书笔记之一:构造过程抽象(上)

    而人们则会创造程序(programs)来指导这些过程。在正常工作计算机里,一个计算过程将精密而准确地执行相应程序。 为了描述计算过程,我们需要一种合适语言,本书中将使用 Lisp。...,一般 Lisp 系统都会提供换行自动美观缩进功能。...1.4 复合过程 到目前为止,我们已经了解了 Lisp一些重要元素: 数字和算术运算作为基本数据和过程 组合式嵌套提供了一种组合多个操作方法 命名定义提供了一种简单抽象手段 现在我们将来学习过程定义...此时解释器返回该谓词对应结果表达式 值,作为整个条件表达式值。如果没有 值为 true,则 cond 值为未定义。...一个约束定义名称对应表达式集合称为该名称作用域(scope),在过程定义中,被声明为该过程形式参数那些约束变量,以该过程体作为其作用域。 在 good-enough?

    81820

    NUS CS1101S:SICP JavaScript 描述:前言、序言和致谢

    因此,解析技术在 Lisp 程序中几乎不起作用,语言处理器构建很少成为大型 Lisp 系统增长和变化速度障碍。最后,正是这种语法和语义简单性造成了所有 Lisp 程序员承担负担和自由。...这种变化本质是最好称为“程序式认识论”出现——从命令角度研究知识结构,而不是古典数学学科采用更为陈述性观点。数学提供了处理“是什么”概念精确框架。...计算提供了处理“如何概念精确框架。 在教授我们材料时,我们使用Lisp 编程语言一个方言。我们从不正式教授这种语言,因为我们不必这样做。我们只是使用它,学生们几天就能掌握。...过了一段时间,我们就会忘记语言语法细节(因为几乎没有),并着手处理真正问题——弄清楚我们想要计算什么,如何将问题分解为可管理部分,以及如何处理这些部分。...Joel Moses 教会了我们如何构建大型系统。他在符号计算系统 Macsyma 方面的经验提供了一个洞察,即应该避免控制复杂性,而是集中于组织数据以反映被建模世界真实结构。

    18310

    不管是嵌套 XML,还是 Lisp 嵌套括号,还是 XXX Map 数据结构,一切都是树形结构——映射。Lisp本质(The Natur

    这么长赞美词虽然看起来相当动人, 不过对我毫无意义。没人能给我演示这些东西是如何应用, 因为这些东西一般来说只有在大型系统才会用到。我争辩说, 这些东西传统语言一样办得到。...到目前为之, 我还没有说Ant在解析XML时遇到困难。你也不用麻烦去它网站上去找答 案了, 不会找到有价值东西。至少对我们这个论题来说是如此。我们还是继续下一步讨 论吧。我们答案就在那里。...我们并不是一定要使用尖括号才能得到树序列化结果。我们完全可以采用其他格式。 其中一种(刚好就是Lisp采用)格式, 叫做s表达式。...用s表达式写代码, 不 单是实用, 而且也很让人愉快。s表达式具有XML一切好处, 这些好处是我们刚刚探讨过 。...学会Lisp也可能意味着明天你可能会被解雇, 因为你总是 强调, 如果公司所有软件都用Lisp写, 公司将会如何卓越, 而这些话你同事会听烦Lisp值得努力学习吗?

    1.4K20

    Clojure 开发那些事

    作为万里长城第一步,这篇文章首先如何入门 Clojure 语法,紧接着介绍 Clojure 开发环境搭建,然后介绍使用第三方库时一些注意点,最后介绍一下常见测试方法。...本篇文章介绍内容都是我自己实践得出,不足之处请各位 Clojurians 指出。...语法入门 括号 Lisp 语法最显著特点是“括号多”,不过这只是其外在表现,内在表现是阅读代码方式,需要从最里面的表达式开始,比如: ;; Clojure > (split (upper-case...这也就意味我们或多或少需要了解这些宿主语言,比如 Clojure 里面没有提供直接操作文件系统、网络类库,而是采用间接方法去调用其宿主语言相应类库。...答案是肯定,clojure.tools.trace,Github 上 README 比较详细,大家可以可以去了解,我目前在自己项目里面还没有采用过这个方法。

    1.6K20

    Clojure与LispClojure与Lisp

    对于 大多数人来说,它语法过于诡异了. Clojure 修正上面的大多数这些问题. 它保留了 lisp 思想和哲学,并同时清除了过去很多限制....及Portable Standard Lisp、专属于Lisp机器上运行ZetaLisp、源自法国国家信息与自动化研究LeLisp、以及MIT人工智能实验室Gerald Sussman与Guy...Steele开发Scheme等。...复制变量就相当于复制指针,而不是复制它们指向数据。 5 垃圾回收机制 6 程序由表达式(expression)组成 Lisp程序是一些表达式区块集合,每个表达式都返回一个值。...(2)专注:前缀运算符不需要去考虑优先级,也没有什么菱形继承问题,动态类型系统(有利有弊),REPL提供探索式编程方法(告别修改/编译/运行死循环,所见即所得)。

    1.9K30

    Java 8函数式编程学习

    2)这个特定程序如何使用语言提供函数式特性?它是否避免了非函数式特性,例如可变状态?...Multi-catch提供了一些“代数数据类型”小跟踪信息,但这些完全是javac内部,对最终用户程序员没有任何影响。 Java 8类型系统 纵观其历史,Java基本上已经由其类型系统定义。...默认Collection类库不会为这些代码提供任何方便,可变性魔咒也始终存在。 Java 8Lambda表达式没有神奇地转变成函数式语言。...这些新增功能使Java 8能够“稍微函数式编程”,但Java需要用类型来表示它们(并且它们位于工具类包,而不是语言核心),这说明标明类型仍然束缚着Java语言,它离纯粹Lisp方言或者其它函数式语言是多么遥远...除了以上这些,这个函数式语言能量小集合很可能是所有大多数开发者日常开发真正需要。对于高级用户,还有(JVM或其它平台)其它语言,并且毫无疑问,将继续蓬勃发展。

    98570

    日拱一卒,伯克利教你用Lisp写递归,写完后我感觉代码更溜了

    Scheme是Lisp语言一个分支,老师在课上没有解释为什么要引入Scheme相关内容。...scheme是老师提供一个编译好scheme解释器,我们可以在当中测试我们Scheme代码。...Expressions Primitives 和Python一样,primitive和atomic表达式在Scheme中也可以直接运行。这些包括数字、bool、变量名和symbol。...这些当中symbol类型是Python当中我们没有遇到过。符号行为很像是Python中字符串,但不完全一致。现在,你可以把一串有效Scheme字符表示成一个symbol。...使用ok命令来进行解锁和测试: python3 ok -q substitute -u python3 ok -q substitute 答案 题意本身不难,递归逻辑比较直观,只不过使用lisp来实现稍稍有些麻烦

    65540

    《代码英雄》第三季(7):与机器对话

    实际上,LISP 有一堆重大编程突破,条件表达式、垃圾回收、递归等等。LISP 在代码和数据中都使用了列表。这是一个简单但具有深远影响更改。...这些早期的人工智能研究人员面临着一件事,那就是他们还在使用打孔卡进行编程。也许这些早期编程人员,知道如何进行机器码级别的编程,这是非常困难且耗时工作。...人们是如何定义它?因为 LISP 最初为 IBM 704 开发,它每次做其实只是一件事。看起来并不是很“智能”。当时的人们是如何看待“智能”呢?...LISP 不是那样设计。它被设计为仅在人工干预基础上发展。然而,对于现在机器学习算法而言,其中学习部分意味着它们会根据接触数据进行自我调整。...00:24:52 - Saron Yitbarek: Rachel Thomas 是 Fast AI 联合创始人,也是旧金山大学数据研究教授。我喜欢她为我们提供信息。

    27330

    又要头秃?2020年七大AI编程语言大盘点

    使用Python编程乐趣应该是看到简洁、可读性强类,这些类使用简洁而清晰代码(而不是一堆无聊至死琐碎代码)完成了大量操作。...MXNet,作为Apache另一个库,用于简化深度学习工作流。 Theano,作为定义、优化和评估数学表达式库。 Pybrain,用于强大机器学习算法。...Goals(目标)定义了根据知识库确定报表提交位置。 Queries(查询)定义如何使你声明真实,以及如何对事实和规则进行最终分析。...Lisp ? 用来创建一个有着N维输入和M个输出单元单层感知器Lisp代码 Lisp是List Processing简称,它是仅次于Fortran第二古老编程语言。...Haskell提供一些功能包括: 强大抽象能力 内置内存管理 代码可重用性 易于理解 SQL、Lisp和Haskell是我见过仅有的编程语言,在这些语言中,人们花在思考上时间比写代码时间要多

    1.7K20

    来来来,咱们元编程入个门

    quote / quasiquote / unquote 当我们明白 AST 在 metaprogramming 地位后,紧接着,我们需要知道两件事情: 如何获取某段程序语法树 如何改变已有的语法树...这里,我们会遇到两个重要概念:syntax quote / unquote。syntax quote 为程序员提供了 AST,而 unquote 则给程序员访问 AST 时,可以获取子表达式值。... quote 不是 syntax quote,它作用是不执行表达式,直接返回原始表达式,我们对比一下: ?...,所以返回结果是一个 if 语句相关 AST。 注意这里当我们要获取原始表达式值时,我们需要使用 unquote 来获取表达式值,而非表达式 AST。...lisp 没有提供类似于 bind_quoted 方法,但是,我们可以使用 let-binding 对 unquoted AST 进行绑定和重复使用。

    946100

    高薪AI工程师都在用什么编程语言?2020 年七大 AI 编程语言大盘点

    使用Python编程乐趣应该是看到简洁、可读性强类,这些类使用简洁而清晰代码(而不是一堆无聊至死琐碎代码)完成了大量操作。...MXNet,作为Apache另一个库,用于简化深度学习工作流。 Theano,作为定义、优化和评估数学表达式库。 Pybrain,用于强大机器学习算法。...Goals(目标)定义了根据知识库确定报表提交位置。 Queries(查询)定义如何使你声明真实,以及如何对事实和规则进行最终分析。...Lisp 用来创建一个有着N维输入和M个输出单元单层感知器Lisp代码 Lisp是List Processing简称,它是仅次于Fortran第二古老编程语言。...Haskell提供一些功能包括: 强大抽象能力 内置内存管理 代码可重用性 易于理解 SQL、Lisp和Haskell是我见过仅有的编程语言,在这些语言中,人们花在思考上时间比写代码时间要多

    1.8K20

    30岁文转码:我用了三年时间从哲学家变成知名软件项目核心开发

    毕竟目前大多数现代编辑器都具备插件系统,可以为用户提供几乎一切必要临时功能,那 Emacs 特别之处究竟在哪? 答案在于,Emacs 并不是真正文本编辑器。...在评估 Elisp 时,Emacs 环境可以轻松使用与之对应返回值。无需重新启动程序,这些扩展就能实时生效,帮助用户以交互方式即刻观察效果。...Dired 可以逐个标记条目,也可以使用正则表达式和其他高级命令。 记录一组以 Dired 为起点操作(「键盘宏」),跳转至特定文件,执行某些变更、返回文件管理器,再在下一个文件中重复这个过程。...而推进这项事业第一步,就是打通软件壁垒、让一切程序都能协同工作。最终,用户将学会如何掌管自己整台计算机,这样每个人才能真正成为自由软件新时代一分子。...Emacs 则可以实时评估代码,而且开放完整源代码及相关说明文档。正是有了这样开放性,我才能了解如何定义函数,再通过反复试验编写出人生中第一条自定义 Elisp。

    38030

    Lisp语言简介_c++是什么语言

    LISP有很多种方言,各个实现中语言不完全一样。1980年代Guy L. Steele编写了Common Lisp试图进行标准化,这个标准被大多数解释器和编译器接受。...Lisp表达式是一个原子(atom)或表(list),原子(atom)又包含符號(symbol)與數值(number);表是由零个或多个表达式组成序列,表达式之间用空格分隔开,放入一对括号中,如:...正如算数表达式 1+1 有值 2 一样,Lisp表达式也有值,如果表达式 e 得出值 v,我们说 e 返回 v。...t),而这个表达式结果是t。...如果能找到这样p表达式,相应“结果表达式e”值作为整个cond表达式返回值. > (cond ((eq ‘a ‘b) ‘first) ((atom ‘a) ‘second)) second 函数

    2.3K20
    领券