homoiconicity相关内容

Elixir 和 Julia 之类的语言在什么意义上是谐音的?

Lisp 中的同音性很容易看出: (+ 1 2) 既是对+的函数调用,以1、2为参数,又是一个包含+、1 和 2.它同时是代码和数据. 不过,在像 Julia 这样的语言中: 1 + 2 我知道我们可以在 Julia 中将其解析为 Expr: :(1 + 2) 然后我们可以获取 AST 并对其进行操作: 朱莉娅>Meta.show_sexpr(:(1 ..
发布时间:2022-01-23 19:23:05 其他开发

是什么让 Lisp 宏如此特别?

阅读 Paul Graham 的关于编程语言的论文,您会认为 Lisp 宏 是唯一的方法.作为一个忙碌的开发人员,在其他平台上工作,我没有使用 Lisp 宏的特权.作为一个想了解嗡嗡声的人,请解释一下是什么让这个功能如此强大. 还请将此与我从 Python、Java、C# 或 C 开发领域理解的内容联系起来. 解决方案 简而言之,宏用于定义 Common Lisp 或领域特定语言 ( ..
发布时间:2022-01-11 19:20:10 其他开发

同音性究竟是什么意思?

我试图理解维基百科关于同质性的文章,但它太冗长,并没有解释背后的主要理论这个词简明扼要.我应该补充一点,我的母语不是英语,所以我更喜欢简单的英语而不是学术白皮书引用. 那么,如果一种语言是同音异义的,这究竟意味着什么?是什么让 C#、Java 或 JavaScript 变得非同形异象? 解决方案 意为“代码即数据",这是 Lisp 家族的一个普遍特征. (加2 3) 就像上面的字 ..

存在性构造函数的模式绑定

在以以前接触过Lisp的程序员的身份编写Haskell的过程中,有些奇怪的事情引起了我的注意,但我不明白. 这可以很好地编译: {-#语言NamedFieldPuns#-}{-#语言的ExistentialQuantification#-}数据Foo =全部a.显示一个=>Foo {getFoo :: a}showfoo :: Foo->细绳showfoo Foo {getFoo} =做 ..
发布时间:2021-05-13 20:42:53 其他开发

XML元架构

由于XML模式(XSD)本身就是XML文件,因此应该可以构建 模式(元模式)的模式,对吧? 我正在努力实现这一壮举. 我想创建一个描述模式的模式 一个根complexType包含一个simpleTypes序列. 解决方案 Akoma-Ntoso是这种元模式的一个示例: “我们可以说Akoma Ntoso是一个元模式,它允许您构建自己的模式:它为不同组织提供了构建基块,供他 ..
发布时间:2020-05-09 02:28:40 其他开发

谐音水平

这是我的的后续操作上一个问题.我不认为Lisp代码与Von Neumann架构上的机器代码具有同质性.在我看来,在两种情况下,代码都表示为数据,但显然,与Lisp相比,您可以在机器代码中更自由地利用此属性. 当随意修改机器代码时,自我修改代码是如此容易,它总是在无时无刻不在发生,而且(以我的经验)常常会产生搞笑的结果.在编写一个简单的“打印数字0-15"程序时,我的一个指针可能会出现"off ..
发布时间:2020-05-02 04:25:39 其他开发

Lisp灵活性的实际例子?

有人试图将Lisp卖给我,这是一种超级强大的语言,可以完成所有工作,然后再做一些. 是否有一个Lisp功能的实用代码示例? (最好与使用常规语言编码的等效逻辑一起使用) 解决方案 我喜欢宏. 这里的代码可以填充LDAP中人们的属性.我只是碰巧发现该代码四处走动而变了,对其他人有用. 某些人对宏的假定运行时惩罚感到困惑,因此我在末尾进行了一些尝试以弄清事情. 一开始 ..
发布时间:2020-05-02 04:21:33 其他开发

是什么使Lisp宏如此特别?

阅读关于编程语言的Paul Graham的论文,人们会认为也请将此与我从Python,Java,C#或C开发的世界中了解的东西联系起来. 解决方案 要给出简短的答案,宏用于定义Common Lisp或领域特定语言(DSL)的语言语法扩展.这些语言直接嵌入到现有的Lisp代码中.现在,DSL可以具有类似于Lisp的语法(例如,针对Common Lisp的Peter Norvig的 Prolo ..
发布时间:2020-05-02 04:11:38 其他开发

像Elixir和Julia Julianiconic这类语言在什么意义上是?

在Lisp中的同渗性很容易看到: (+ 1 2) 既是使用1,2作为参数对+的函数调用,又是包含+,1和2的列表.同时是代码和数据. 不过,使用朱莉亚这样的语言: 1 + 2 我知道我们可以将其解析为Julia中的Expr: :(1 + 2) 然后我们可以获取AST并对其进行操作: julia> Meta.show_sexpr(:(1+2)) (:c ..
发布时间:2020-04-25 04:31:57 其他开发

Homoiconic和"无限制的"自修改code +是真的口齿不清自我修改?

我会向前admiting我Lisp的知识是非常微乎其微。但是我在语言非常感兴趣,并打算开始认真学习它在不久的将来。我对这些问题的理解是毫无疑问的缺陷,所以如果我说什么这是blatently错误,请评论和指正,而不是downvoting。 真正Homoiconic和自我修改的语言 我在寻找它同时支持同像性编程语言的例子(code具有相同的重presentation数据)和不受限制自修改(无限制的 ..