s-expression相关内容
假设我有一个列表,例如:(define a '(+ (* p p) (* x x)))。 如何使用a给出的表达式定义过程,例如: (define (H x p) (+ (* p p) (* x x))))? 我尝试这样做:(define (H x p) (eval a)),但它显示p和x是未定义的。我想,对于apply或类似的东西,有一个简单的解决方法,但我不能理解它。 我想我可以根据传
..
是否有任何 lisps 支持在它们的头上嵌套 s 表达式?例如 ((f 2) 3 4) 对于其中 (f 2) 大概评估为一个函数/宏以应用于 3 4. 是否有可能有一个 lisp 支持这样的事情?或者是否有技术限制禁止这样做/使其不切实际? 解决方案 在那些为变量和函数具有单一命名空间的 Lisps 中,您的表达式是有效的.这些被称为 Lisp-1.Scheme 和 Clojur
..
(def evil-code (str "(" (slurp "/mnt/src/git/clj/clojure/src/clj/clojure/core.clj") ")" ))(def r (读取字符串邪恶代码)) 有效,但不安全 (def r (clojure.edn/read-string evil-code))RuntimeException Map 文字必须包含偶数个形式 cloj
..
这是我先前的问题的后续内容:为什么我们需要零?显然,大多数时候都使用适当的列表.但是,列表不正确的目的是什么? 解决方案 没有充分的理由.不正确的列表真正有好处的唯一一件事就是作为关联列表的语法的一部分,即使在那儿,自定义键-值对的语法也会更好.记录类型可以更好地实现您可以想到的用于不正确列表的所有方法,毕竟,记录类型是包含列表的:您可以根据记录定义Lisp列表,但不能相反(因为列表不允许
..
(def evil-code(str“(”(slurp“ /mnt/src/git/clj/clojure/src/clj/clojure/core.clj”)“)” )) (def r(读取字符串邪恶代码)) 不安全 (def r(clojure.edn / read-string evil-code)) RuntimeException映射文字必须包含偶数形式cloj
..
我遇到了此问题今天早些时候: 示例输入: 和吉尔,然后我们去购物 示例输出: [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购物]]]]]]] 我只是
..
我喜欢普通口齿不清,但有时输入 这样的简单数学表达式确实很痛苦 a(8b^2+1)+4bc(4b^2+1) (当然,我可以转换它,但是有点慢,我先写(+()()),然后在每个方括号中加上(*()())...) 我想知道这里是否有人知道更好的输入方式.我当时正在考虑编写数学宏,其中 (math “a(8b^2+1)+4bc(4b^2+1)”) 扩展到 (+ (* a
..
Nokogiri很棒.我可以做类似#css('.bla')这样的操作,它将返回第一个匹配的元素. 现在,我们需要对Ruby源代码进行一些解析-查找类中的所有方法,等等.我们正在使用 解决方案 我唯一能想到的是亚当·桑德森(Adam Sanderson)的SExpPath库.
..
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
..
我正在一个自然语言处理(NLP)项目中,在该项目中,我使用语法分析器从给定的句子中创建语法分析树. 示例输入: 我遇到了Joe和Jill,然后我们去购物了 示例输出: [TOP [S [S [S [NP [PRP I]]] [VP [VBD ran] [PP [IN into]] [NP [NNP Joe] [CC和] [NNP吉尔]]]]] [CC和] [S [ADVP [RB然后]]
..
我正在编写一个程序,该程序打开一个lisp文件,在流上调用"read",直到流为空,并对其收集的列表进行处理. 这一直很好,直到我发现“读取"将执行程序包查找,例如,如果遇到some-package:foo,它将抱怨Package SOME-PACKAGE does not exist. 这是一个说明我的意思的例子: (read (make-string-input-stream
..
根据Unix的哲学,我有一个项目,其中包含一堆使用bash脚本捆绑在一起的小程序.他们的交换格式最初看起来像这样: meta1a:meta1b:meta1c AST1 meta2a:meta2b:meta2c AST2 其中:分隔的字段是元数据,而AST s是s表达式,脚本按原样传递.这很好用,因为我可以使用cut -d ' '从AST中拆分元数据,并使用cut -d ':'来挖掘元数据
..
您可以使用静态类型检查(例如Java)来命名语言,而代码是数据的地方(例如在LISP中)吗?我的意思是两种语言都用一种语言. 解决方案 Qi是静态类型的Lisp方言.此外,许多其他Lisp方言都具有(可选)静态类型. Java本身具有非常有限的这种功能. 有趣的问题不是您是否可以进行元编程和静态类型化,而是是否可以将 dynamic 元编程静态化为 type-safe .
..
大多数Lisps和Schemes是如何动态键入的? 静态类型是否不能与它们的某些常用功能混在一起? 解决方案 可以使键入和s表达式协同工作,请参见在某种程度上,动态地表达S表达式语言是历史的巧合.这些语言倾向于更加依赖 macros ,并且对s表达式进行解析和模式匹配的简便性使得宏处理变得更加容易.大多数有关复杂宏的研究都是在s表达式语言中进行的. 类型化的卫生宏很难.
..
我一直在研究自然语言解析树,并以各种方式对其进行操作.我一直在使用斯坦福(Stanford)的Tregex和Tsurgeon工具,但是代码很乱,无法很好地适应我的大多数Python环境(那些工具是Java,因此不太适合进行调整).我想要一个工具集,当我需要更多功能时,可以轻松地进行黑客入侵.还有其他工具非常适合在树上进行模式匹配,然后对那些匹配的分支进行操作吗? 例如,我想将以下树作为输入:
..
我不明白为什么要cons项目序列(所谓的正确列表)时需要nil [1].在我看来,我们可以通过单独使用所谓的不正确列表(cons -ed对而没有结尾nil)来实现相同的目标.由于Lisps [2]已经提供了区分pair?和原子的原始过程(某些实现甚至提供了atom?),因此在列表中定义过程(例如length)时,我可以执行相同的操作只是点对,如下所示: (define len (lamb
..
任何lisps都支持头上的嵌套s表达式吗?例如 ((f 2) 3 4) (对于 ,(f 2)可能评估为要应用于3 4的功能/宏). 有没有可能支持这种事情的口齿不清?还是有技术限制禁止这样做/使其不切实际? 解决方案 在那些具有单个变量和函数名称空间的Lisps中,您的表达式有效.这些被称为Lisp-1. Scheme和Clojure就是这种Lips的例子. 在那些
..
以下定义构成了来自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
..
我正在获得 up-list:扫描错误:“不平衡括号”从此位置: (foo“bar |”) up-list doc: 此命令假设点不在字符串或注释中。 / p> 所以这是预期的行为。 但我不在乎。我只想从列表中向上移动。 有人可以建议一个上面列表克隆,这样做正确吗? 我在看比这个天真的代码更好: (defun up-
..
如果我这样做 (read-string(slurp“somefile”)) 这将只给出文件中的第一个对象,意思是“somefile”如下: (a obj)(b obj) 然后我只得到(a obj)作为结果。 如何获得所有对象的列表, b $ b ((a obj)(b obj)) 感谢。 解决方案 (defn read
..