问题标签 [homoiconicity]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
18 回答
14133 浏览

lisp - Lisp 灵活性的实际例子?

有人试图向我推销 Lisp,作为一种超级强大的语言,它可以做任何事情,然后是一些。

是否有Lisp 强大功能的实际代码示例?
(最好与以常规语言编码的等效逻辑一起使用。)

0 投票
15 回答
70804 浏览

macros - 是什么让 Lisp 宏如此特别?

阅读Paul Graham关于编程语言的文章会认为Lisp 宏是唯一的出路。作为一个忙碌的开发人员,在其他平台上工作,我没有使用 Lisp 宏的特权。作为一个想了解嗡嗡声的人,请解释一下是什么让这个功能如此强大。

还请将此与我从 Python、Java、C# 或 C 开发领域理解的内容联系起来。

0 投票
4 回答
358 浏览

functional-programming - 我在哪里可以获得更多关于同音性的信息?

我一直在尝试函数式编程,但我仍然不理解这个概念。你们知道任何讨论这个概念的好书、教程或例子吗?或者,如果您可以展示有关其用法的小片段,那就太好了。

0 投票
10 回答
3999 浏览

compiler-construction - 编译语言可以是谐音的吗?

根据定义,同音字的意思是:

代码和数据的相同表示

在 LISP 中,这意味着您可以有一个带引号的列表并对其进行评估,(car list)函数和(cdr list)参数也是如此。这可以在编译时或运行时发生,但是它需要一个解释器。

没有编译时解释器的编译语言是否也可以是同音的?还是同音性的概念仅限于口译员?

0 投票
7 回答
1044 浏览

reflection - 遍历 Scheme 函数作为列表

是否可以将 Scheme 中的函数视为任何其他列表?

基本上,我想做的是这样的:

我发现了一个类似的讨论,如果这在 Scheme 中是不可能的,我会感到有点失望。如果是这样,为什么这是不可能的?其他lisps有可能吗?

编辑:将 (cdr 'foo) 更改为 (cdr foo) - 它具有误导性。我在问,为什么我不能以列表的形式访问函数?

0 投票
3 回答
934 浏览

xml - XML 元模式

由于 XML 模式(XSD)本身就是 XML 文件,所以应该可以构建模式的模式(元模式),对吧?

我正在努力实现这一壮举。

我想创建一个模式来描述一个模式,其中一个根complexType包含一系列simpleTypes.

0 投票
2 回答
141 浏览

sql - 同音性和 SQL

我目前正在使用 emacs sql-mode 作为我的 sql shell,一个(简化的)查询响应如下:

如果我想根据该数据制定另一个查询,例如

您会看到我必须在visit_keyand之间添加逗号created,并用引号将到期值括起来。

是否有一个 SQL DB shell 可以更一致地显示其内容,以便我可以最大限度地减少这种编辑?例如

或者

我正在使用 postgresql 顺便说一句。

0 投票
6 回答
196 浏览

functional-programming - 是否有任何将函数视为可以操作的数据结构的编程语言?

我编写了以下函数作为我正在开发的 jQuery 插件的一部分:

在测试了一个高度依赖的高度递归函数后.append2,我优化.append2为:

虽然这段代码在速度方面效率更高,但它仍然让我不满意。本质上,我已经两次定义了相同的函数:

我想知道是否有任何语言可以让我只定义一次函数:

然后通过将参数替换为$this.appendfrom valueto 对其进行操作callback(key, value)。(而且,不,不是通过操纵字符串。通过操纵函数本身。)

有没有这样的编程语言?

0 投票
3 回答
3309 浏览

programming-languages - 同音性究竟是什么意思?

我试图理解Wikipedia 关于 homoiconity 的文章,但它太冗长,并没有简明地解释这个词背后的主要理论。我应该补充一点,我不是以英语为母语的人,所以我更喜欢简单的英语而不是学术白皮书的引用。

那么,如果一种语言是谐音的,这到底意味着什么?是什么让 C#、Java 或 JavaScript 非谐音?

0 投票
5 回答
1694 浏览

types - 同音型理论

Lisp 具有同义性的特性也就是说,语言实现(列表)使用的代码表示也可用于想要为自己的目的表示代码的程序,并且惯用地使用它们。

另一个主要的函数式编程语言家族,ML,是基于类型论的,这意味着语言实现需要更复杂的代码表示,而且你可以做的事情也不太随意,所以通常内部表示是不适用于程序。例如,高阶逻辑的证明检查器通常在 ML 家族语言中实现,但通常实现自己的类型理论系统,有效地忽略了 ML 编译器已经拥有一个这一事实。

有没有例外?任何基于类型理论的编程语言都公开其代码表示以供编程使用?