标签: quote

Common Lisp case和引用元素

我在CL写了一个地牢爬虫游戏,我遇到了案例表格的问题.

两件事情:

  • Common Lisp抱怨道 Duplicate keyform QUOTE in CASE statement
  • (make-instance 'cl-rogue:tile tile-type 'wall) 应打印为"#",但无论我使用哪种图块类型,对象都会打印为"".

代码:

(in-package :cl-user)

(defpackage :cl-rogue
  (:use :common-lisp)
  (:export
    :*rows*
    :*cols*
    :*levels*
    :tile
    :tile-type
    :tile-contents
    :tile-hidden
    :tile-locked
    :tile-closed
    :main))

(in-package :cl-rogue)

(defparameter *cols* 80)
(defparameter *rows* 24)
(defparameter *levels* 26)
Run Code Online (Sandbox Code Playgroud)

班级:

(defclass tile ()
  ((tile-type
    :initarg :tile-type
    :accessor tile-type
    :initform 'floor
    :documentation "Type of tile")
    (tile-contents
      :initarg :tile-contents
      :accessor tile-contents
      :initform '()
      :documentation "Any items the tile holds")
    (tile-hidden
      :initarg :tile-hidden
      :accessor tile-hidden
      :initform nil
      :documentation …
Run Code Online (Sandbox Code Playgroud)

case common-lisp quote

3
推荐指数
1
解决办法
1489
查看次数

删除标记'(单引号)

我正在尝试删除标记'(单引号),但我不知道如何.我在做,delm \'但它不起作用.我也试过了我能想到的每一个组合.

我意识到这更像是一个Vim脚本问题,但我无法在任何地方找到它.

vim quote

3
推荐指数
1
解决办法
1786
查看次数

Lisp:评价报价

以下哪个表达式具有正确的lisp语法?

(+ 1 (quote 1))
==> 1 (???)
(+ 1 (eval (quote 1))
==> 2
Run Code Online (Sandbox Code Playgroud)

我目前正在编写自己的lisp解释器,并不太确定如何正确处理引号.我看过的大多数lisp解释器都将表达式计算为"2".但是,根本不应该对报价进行评估,从而只有第二个是法律表达?那么为什么它仍然适用呢?这是某种语法糖吗?

lisp evaluation interpreter eval quote

3
推荐指数
1
解决办法
1031
查看次数

Lisp Quoting感到困惑

我有一个关于评估lisp中列表的问题.

为什么(a)(+ a 1)不评估,

(defun test (a) (+ a 1))
Run Code Online (Sandbox Code Playgroud)

就像(print 4)这里没有评估一样

(if (< 1 2) (print 3) (print 4))
Run Code Online (Sandbox Code Playgroud)

(print (+ 2 3))在这里评估

(test (print (+ 2 3)))
Run Code Online (Sandbox Code Playgroud)

它们与标准库函数有关吗?我可以在我的lisp程序中定义类似的函数吗?

lisp eval quote

3
推荐指数
2
解决办法
271
查看次数

如何在bash中学习如何引用?

在编写bash脚本时,我一直对引用和评估的规则感到困惑.我知道一些基础知识,比如''和'"与``之间的区别,但我似乎仍然经常出错,并且试图尝试各种不同的方式来说同样的事情.

我通常可以通过蛮力解决任何个别问题,但我认为我的工作原理的概念模型必须以一种未知的方式无可救药地打破.

我对lisp的引用,评估,阅读,打印,语法报价系统没有任何问题.事实上,我写了一个小卡塔,以帮助人们了解发生了什么:http://www.learningclojure.com/2010/11/syntax-quote-kata-for-confused.html

我想我正在为bash寻找类似的东西(这看起来要复杂得多).一个好的模型或一组练习将帮助我形成这样一个模型,这将使​​我能够看到一个复杂的shell脚本,其中变量被转换和评估,打印出来并读取,并找出将要发生的事情无需尝试.

如果做不到这一点,调试过程的好方法,以及在评估的每个阶段观察正在发生的事情都会非常有帮助.

bash eval quote

3
推荐指数
1
解决办法
214
查看次数

计划中的(引用引用)

我正在努力学习计划.谁能告诉我为什么'(quote quote)输出'quote,'(quote 'quote)并将输出''quote

非常感谢你!

scheme racket quote

3
推荐指数
1
解决办法
1031
查看次数

为什么在clojure(eval(list + 1 2))和(eval(list'+ 1 2))做同样的事情?

user=> (eval '(+ 1 2))
3
user=> (eval '('+ 1 2))
2
user=> (eval (list '+ '1 '2))
3
user=> (eval (list + '1 '2))
3
Run Code Online (Sandbox Code Playgroud)

这是否意味着'+有时与+相同?

是否有任何规则来确定应考虑哪种情况?

clojure quote

3
推荐指数
1
解决办法
781
查看次数

Linux上的Perl oneliner中的单引号行为

为什么第二个单行内容尽管有单引号?

perl -wE 'say('Hello')'

# Name "main::Hello" used only once: possible typo at -e line 1.
# say() on unopened filehandle Hello at -e line 1.

perl -wE 'say length('Hello')'

# 5
Run Code Online (Sandbox Code Playgroud)

linux perl command-line sh quote

3
推荐指数
1
解决办法
91
查看次数

R:来自值序列的取代表达式的序列

我想生产

list(quote(10^2), quote(10^3), quote(10^4),
     quote(10^5), quote(10^6), quote(10^7))
Run Code Online (Sandbox Code Playgroud)

seq(2,7)
Run Code Online (Sandbox Code Playgroud)

是否有一种不那么笨拙的方式来做到这一点

mapply(function(n) substitute(10^x, list(x=as.double(n))), seq(2,7))
Run Code Online (Sandbox Code Playgroud)

?我尝试过以下方法:

> substitute(10^x, list(x=seq(2,7)))
10^2:7

> mapply(substitute, 10^x, x=seq(2,7))
Error in mapply(substitute, 10^x, x = seq(2, 7)) : object 'x' not found

> mapply(function(n) substitute(10^n), seq(2,7))
list(10^dots[[1L]][[6L]], 10^dots[[1L]][[6L]], 10^dots[[1L]][[6L]], 
     10^dots[[1L]][[6L]], 10^dots[[1L]][[6L]], 10^dots[[1L]][[6L]])
Run Code Online (Sandbox Code Playgroud)

expression r quote

3
推荐指数
1
解决办法
53
查看次数

Elixir引用vs逃脱

在Elixir中,何时应该使用Macro.escape/1而不是quote/1?我看过初学者的指南并没有帮助.

macros escaping elixir quote

3
推荐指数
1
解决办法
279
查看次数

标签 统计

quote ×10

eval ×3

lisp ×2

bash ×1

case ×1

clojure ×1

command-line ×1

common-lisp ×1

elixir ×1

escaping ×1

evaluation ×1

expression ×1

interpreter ×1

linux ×1

macros ×1

perl ×1

r ×1

racket ×1

scheme ×1

sh ×1

vim ×1