在 Arc 中有一个宏叫做in
> (let x 1
(in x 4 5 6))
nil
> (let x 1
(in x 1 5 6))
t
检查它的第一个参数是否等于任何其他参数。我想要一个带有参数和列表的版本(语义上与 Python 相同in
),所以我写道:
(assign weak-tens* '(11 12))
(mac in? (elt lst)
(cons 'in (cons elt lst)))
(def transform-deck (deck)
(map [if (in? _ weak-tens*) #\T _] deck))
输出:
arc> (load "main.arc")
*** redefining in?
map: contract violation
expected: list?
given: '(_ . weak-tens*)
argument position: 2nd
other arguments...:
#<procedure:ac-niltree>