s-expression相关内容

如何将列表转换为方案中的code/lambda?

假设我有一个列表,例如:(define a '(+ (* p p) (* x x)))。 如何使用a给出的表达式定义过程,例如: (define (H x p) (+ (* p p) (* x x))))? 我尝试这样做:(define (H x p) (eval a)),但它显示p和x是未定义的。我想,对于apply或类似的东西,有一个简单的解决方法,但我不能理解它。 我想我可以根据传 ..
发布时间:2022-06-27 21:05:01 其他开发

是否有任何 lisps 的头部都有 s 表达式,例如((f 2) 3 4)?如果不是,为什么?

是否有任何 lisps 支持在它们的头上嵌套 s 表达式?例如 ((f 2) 3 4) 对于其中 (f 2) 大概评估为一个函数/宏以应用于 3 4. 是否有可能有一个 lisp 支持这样的事情?或者是否有技术限制禁止这样做/使其不切实际? 解决方案 在那些为变量和函数具有单一命名空间的 Lisps 中,您的表达式是有效的.这些被称为 Lisp-1.Scheme 和 Clojur ..
发布时间:2022-01-07 13:47:14 其他开发

什么是不正确的清单?

这是我先前的问题的后续内容:为什么我们需要零?显然,大多数时候都使用适当的列表.但是,列表不正确的目的是什么? 解决方案 没有充分的理由.不正确的列表真正有好处的唯一一件事就是作为关联列表的语法的一部分,即使在那儿,自定义键-值对的语法也会更好.记录类型可以更好地实现您可以想到的用于不正确列表的所有方法,毕竟,记录类型是包含列表的:您可以根据记录定义Lisp列表,但不能相反(因为列表不允许 ..
发布时间:2021-05-30 18:43:58 其他开发

S表达式解析

我遇到了此问题今天早些时候: 示例输入: 和吉尔,然后我们去购物 示例输出: [TOP [S [S [NP [PRP I]]] [VP [VBD ran] [PP [IN成] [NP [NNP Joe] [CC和] [NNP Jill]]]]] [CC和] [S [ADVP [RB 然后]] [NP [PRP我们]] [VP [VBD去了[NP [NN购物]]]]]]] 我只是 ..
发布时间:2020-10-02 21:23:27 C#/.NET

常见的口齿不清:输入数学表达式有没有那么痛苦的方法?

我喜欢普通口齿不清,但有时输入 这样的简单数学表达式确实很痛苦 a(8b^2+1)+4bc(4b^2+1) (当然,我可以转换它,但是有点慢,我先写(+()()),然后在每个方括号中加上(*()())...) 我想知道这里是否有人知道更好的输入方式.我当时正在考虑编写数学宏,其中 (math “a(8b^2+1)+4bc(4b^2+1)”) 扩展到 (+ (* a ..

解析Sexp的一种优雅方法

sexp 类似于:type sexp = Atom of string | List of sexp list,例如"((a b) ((c d) e) f)". 我已经编写了一个解析器来将sexp字符串解析为以下类型: let of_string s = let len = String.length s in let empty_buf () = Buffer.create ..
发布时间:2020-05-19 19:19:03 其他开发

用"read"解析字符串.并忽略包名称空间

我正在编写一个程序,该程序打开一个lisp文件,在流上调用"read",直到流为空,并对其收集的列表进行处理. 这一直很好,直到我发现“读取"将执行程序包查找,例如,如果遇到some-package:foo,它将抱怨Package SOME-PACKAGE does not exist. 这是一个说明我的意思的例子: (read (make-string-input-stream ..
发布时间:2020-05-02 04:39:28 其他开发

jq或xsltproc替代s表达式?

根据Unix的哲学,我有一个项目,其中包含一堆使用bash脚本捆绑在一起的小程序.他们的交换格式最初看起来像这样: meta1a:meta1b:meta1c AST1 meta2a:meta2b:meta2c AST2 其中:分隔的字段是元数据,而AST s是s表达式,脚本按原样传递.这很好用,因为我可以使用cut -d ' '从AST中拆分元数据,并使用cut -d ':'来挖掘元数据 ..
发布时间:2020-05-02 04:26:32 其他开发

您是否知道通过“静态类型"检查“代码是数据"的语言?

您可以使用静态类型检查(例如Java)来命名语言,而代码是数据的地方(例如在LISP中)吗?我的意思是两种语言都用一种语言. 解决方案 Qi是静态类型的Lisp方言.此外,许多其他Lisp方言都具有(可选)静态类型. Java本身具有非常有限的这种功能. 有趣的问题不是您是否可以进行元编程和静态类型化,而是是否可以将 dynamic 元编程静态化为 type-safe . ..

为什么大多数S-Expression语言是动态键入的?

大多数Lisps和Schemes是如何动态键入的? 静态类型是否不能与它们的某些常用功能混在一起? 解决方案 可以使键入和s表达式协同工作,请参见在某种程度上,动态地表达S表达式语言是历史的巧合.这些语言倾向于更加依赖 macros ,并且对s表达式进行解析和模式匹配的简便性使得宏处理变得更加容易.大多数有关复杂宏的研究都是在s表达式语言中进行的. 类型化的卫生宏很难. ..
发布时间:2020-05-02 04:22:16 其他开发

如何操作解析树?

我一直在研究自然语言解析树,并以各种方式对其进行操作.我一直在使用斯坦福(Stanford)的Tregex和Tsurgeon工具,但是代码很乱,无法很好地适应我的大多数Python环境(那些工具是Java,因此不太适合进行调整).我想要一个工具集,当我需要更多功能时,可以轻松地进行黑客入侵.还有其他工具非常适合在树上进行模式匹配,然后对那些匹配的分支进行操作吗? 例如,我想将以下树作为输入: ..
发布时间:2020-05-02 04:22:02 其他开发

为什么我们需要`nil'?

我不明白为什么要cons项目序列(所谓的正确列表)时需要nil [1].在我看来,我们可以通过单独使用所谓的不正确列表(cons -ed对而没有结尾nil)来实现相同的目标.由于Lisps [2]已经提供了区分pair?和原子的原始过程(某些实现甚至提供了atom?),因此在列表中定义过程(例如length)时,我可以执行相同的操作只是点对,如下所示: (define len (lamb ..
发布时间:2020-05-02 04:19:30 其他开发

例如,任何口罩的头部都带有s表达式吗? ((f 2)3 4)?如果没有,为什么?

任何lisps都支持头上的嵌套s表达式吗?例如 ((f 2) 3 4) (对于 ,(f 2)可能评估为要应用于3 4的功能/宏). 有没有可能支持这种事情的口齿不清?还是有技术限制禁止这样做/使其不切实际? 解决方案 在那些具有单个变量和函数名称空间的Lisps中,您的表达式有效.这些被称为Lisp-1. Scheme和Clojure就是这种Lips的例子. 在那些 ..
发布时间:2020-05-02 04:17:51 其他开发

解析S表达式

以下定义构成了来自Yorgey教授的 S表达式 course : data Atom = N Integer | I Ident派生Show 和 数据SExpr =一个Atom | Comb [SExpr] 派生Show 完整的数据类型应该在Haskell中用于以下内容? (bar(foo)3 5 874) 我相信它会是这样的: Comb [A(I“b ..
发布时间:2018-06-05 10:54:03 其他开发

Emacs:防弹列表?

我正在获得 up-list:扫描错误:“不平衡括号”从此位置: (foo“bar |”) up-list doc: 此命令假设点不在字符串或注释中。 / p> 所以这是预期的行为。 但我不在乎。我只想从列表中向上移动。 有人可以建议一个上面列表克隆,这样做正确吗? 我在看比这个天真的代码更好: (defun up- ..
发布时间:2017-08-08 00:18:11 开发方法