Syntax 方案语法:*在列表中?

Syntax 方案语法:*在列表中?,syntax,scheme,Syntax,Scheme,我不熟悉这个计划。有人能解释一下*在以下代码中的作用吗 (define pat2 '(or (list a g t a t a t g g a t a) (list g t a g g c c g t) (list c c c g a t a a a a a a g t g t c g t) (list c g a t c c c (junk 1) c g a t c t a))) (define pat3

我不熟悉这个计划。有人能解释一下
*
在以下代码中的作用吗

(define pat2 '(or
           (list a g t a t a t g g a t a)
           (list g t a g g c c g t)
           (list c c c g a t a a a a a a g t g t c g t)
           (list c g a t c c c (junk 1) c g a t c t a)))
(define pat3 (list 'list pat2 '(junk 2)))
(define pat4 (list '* pat3))  ; I'm confused about the * here.
我知道
pat4
的内容类似于

(*
  (list
  (or (list a g t a t a t g g a t a)
  (list g t a g g c c g t)
  (list c c c g a t a a a a a a g t g t c g t)
  (list c g a t c c c (junk 1) c g a t c t a))
  (junk 2)))
但我仍然不明白什么是
*
,它通常表示乘法,但它不可能是乘法,对吗

谢谢

它只是符号*(这就是它被引用的原因;引号阻止对符号进行求值)

如果执行代码,您将看到pat4只是前面带有*符号的pat3:

> pat2
'(or (list a g t a t a t g g a t a) (list g t a g g c c g t) (list c c c g a t a a a a a a g t g t c g t) (list c g a t c c c (junk 1) c g a t c t a))
> pat3
'(list (or (list a g t a t a t g g a t a) (list g t a g g c c g t) (list c c c g a t a a a a a a g t g t c g t) (list c g a t c c c (junk 1) c g a t c t a)) (junk 2))
> pat4
'(* (list (or (list a g t a t a t g g a t a) (list g t a g g c c g t) (list c c c g a t a a a a a a g t g t c g t) (list c g a t c c c (junk 1) c g a t c t a)) (junk 2)))

所以字面上只有符号
*
?是的,只有符号
*
;P