问题标签 [repl-printed-representation]

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 投票
1 回答
1250 浏览

scheme - Scheme 和 Racket 中嵌套引号的行为

在 Racket 中编写函数时,我不小心在符号前面放了两个单引号,而不是一个。即我不小心写了''a 并发现了一些看起来很奇怪的嵌套引号行为。我正在使用 DrRacket 并使用 Racket lang 和 R5RS lang 对此进行了测试。

打印:#t。

印刷品:报价

两者都打印:'a

有人能告诉我为什么在 Scheme(和 Racket)中使用函数对吗?将 (quote (quote a))) 解释为一对两个元素 quote 和 a ,但函数 write 打印出 'a 而不是 (quote a) 。

0 投票
2 回答
532 浏览

scheme - 球拍中报价的行为

我习惯于(quote x)评估 to x(quote (x y z))评估 to(x y z)(car (quote (x y z))评估 to x。推理很简单:quote 是一种特殊形式,它不评估其参数,而只是按原样返回它。

我刚开始使用 Racket,它认为(quote x)评估为(quote x)(quote (x y z))评估为(quote (x y z))(car (quote (x y z))评估为(quote x)

好吧,实际上,它分别将这些打印为'x'(x y z)'x,但这是同一回事。

有人可以在这里解释原因吗?如果由于某种原因(quote (x y z))评估为(quote (x y z)),那么那辆车不应该是quote吗?从哪里来(quote x)

据我所知,在整个计算过程中,Racket 的内部行为与我习惯的一样,只是在打印最终结果时,它会将其包装在报价形式中。这在所有情况下都正确吗?如果是这样,它为什么要这样做?

0 投票
2 回答
2424 浏览

functional-programming - 什么是球拍中的'(撇号)?

我对'球拍标志的含义有点困惑。在我看来,同一个符号有不同的含义。看下面两个简单的例子:

list

返回一个新分配的列表,其中包含 vs 作为其元素。

quote

产生一个对应于数据(即程序片段的表示)的常量值,没有它的词法信息、源位置等。引用的对、向量和框是不可变的。

所以我的问题是:'符号是否有 2 个含义(符号列表)或者它们是相同的数据类型并且list实际上返回一个带引号的常量值?如果是第二种情况,为什么这样做:

(也(eval '(+ (- 2 13) 11)) 适用并正确评估为0

但这不会:

可能相关: Lisp / Scheme中的'(撇号)是什么?

0 投票
1 回答
106 浏览

racket - 为什么我的函数返回的列表结果看起来很有趣?

我正在使用此代码,但它不会按照我想要的方式创建列表。(evenList (list 1 2 3 4))在 REPL 中计算为(cons 2 (cons 4 '())),但我希望它像(list 2 4).

0 投票
1 回答
60 浏览

lisp - 在 lisp 中计算出现次数

我正在尝试在 lisp 中编写代码来计算 lisp 列表中原子的出现次数。问题是代码适用于除 atom 之外的所有原子(),它显示为NIL. 代码中的示例:

关于如何展示()而不是展示的任何想法NIL

0 投票
3 回答
80 浏览

scheme - 可以使用 cons 来做 ((a . b) . (c . d)) 吗?如果不是,任何其他方式或点对不能有这样的第二个元素?

;;; 如果没有任何其他方式或点对不能有这样的第二个元素?