Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vue.js/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scheme 是否可以生成(quote(quote var))或'';动态var?_Scheme_Quote - Fatal编程技术网

Scheme 是否可以生成(quote(quote var))或'';动态var?

Scheme 是否可以生成(quote(quote var))或'';动态var?,scheme,quote,Scheme,Quote,在这个问题上,我提出了一个解决方案,在PLT方案372中将“and”应用于原子列表(即s-exp,它既不是空的,也不是成对的) Welcome to DrScheme, version 372 [3m]. Language: Textual (MzScheme, includes R5RS). > (eval (cons 'and (list ''#f ''#f ''#t))) #f > (eval (cons 'and (list ''a ''b ''c))) c 但就在那之后,

在这个问题上,我提出了一个解决方案,在PLT方案372中将“and”应用于原子列表(即s-exp,它既不是空的,也不是成对的)

Welcome to DrScheme, version 372 [3m].
Language: Textual (MzScheme, includes R5RS).
> (eval (cons 'and (list ''#f ''#f ''#t)))
#f
> (eval (cons 'and (list ''a ''b ''c)))
c
但就在那之后,我意识到:动态生成
(quote(quote-var))
“var
并不容易。具体而言,以下代码不起作用:

(define (my-quote lst)
  (cond
    ((null? lst) '())
    (else
     (cons (quote (car lst))
           (my-quote (cdr lst)))
     )))

Welcome to DrScheme, version 372 [3m].
Language: Textual (MzScheme, includes R5RS).
> (my-quote (list 'a 'b 'c))
((car lst) (car lst) (car lst))
由于
(车辆lst)
将不会首先进行评估;即使我
(let((var(car list)))(quote-var))
,它也不会工作,因为var不会被评估

我的问题是,在我尝试这样做的过程中是否存在某种思维陷阱?

这就是你想要的吗

(define (my-quote lst)
  (map (lambda (x) `',x) lst))
然后

如果需要更多引号,只需在以下过程中添加它们:

(define (my-quote lst)
  (map (lambda (x) `'',x) lst))

(cons 'and (my-quote (list 'a 'b 'c)))
=> '(and ''a ''b ''c)

这其实很简单:

(list 'quote (list 'quote var))

这正是我想要的。。。我承认我没有仔细阅读任何scheme手册来学习各种“quote”语法,但是您的示例代码让我现在重点关注“`”的用法!非常感谢,var与(list'quote(list'quote-var))是一样的。。。简短一点。我真的很喜欢你的答案,它帮助我发现新的“被忽视的知识资产”,但对于这个问题,我想切换较长的答案,因为它看起来更直观,让同行开发人员更容易阅读代码没有任何问题;-)我访问了你的个人信息页面,太棒了,很高兴认识你!:)直觉上,它确实更吸引我。我应该等几分钟,看看现在是否有更简单的答案。。。但是让我等到明天再决定切换哪个答案。抱歉,使用
eval
以这种方式运行程序生成的代码不是一个好主意。动态生成代码(在编译时)的标准方法是使用宏,在可行的情况下,编写宏肯定比使用
eval
更可取。
(list 'quote (list 'quote var))