将未评估的表达式列表折叠为单个表达式

collapse a list of unevaluated expressions to single expression

具有以下未计算表达式列表。

l = list(quote(f()),quote(g()),quote(h()))
str(l)
#List of 3
# $ : language f()
# $ : language g()
# $ : language h()

我想使用 & 函数折叠列表,以便得到以下 r 结果。

r = quote(f() & g() & h())
str(r)
# language f() & g() & h()

当然重点是处理任意长度的列表。

您可以为此使用 Reduce

Reduce(function(a,b) bquote(.(a) & .(b)), l)