首页
学习
活动
专区
工具
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.8K60

    可爱的 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?

    83420

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

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

    19810

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

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

    1.4K20

    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

    Clojure 开发那些事

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

    1.6K20

    日拱一卒,伯克利教你用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来实现稍稍有些麻烦

    67440

    Java 8的函数式编程学习

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

    99670

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

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

    27930

    又要头秃?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 进行绑定和重复使用。

    953100

    高薪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。

    38130

    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.4K21
    领券