我应该将REBOL函数称为列表推导?
-
03-07-2019 - |
题
REBOL没有内置的方法来执行列表推导。但是,REBOL具有强大的功能(称为 parse
),可用于创建特定于域的语言(DSL)。我已经使用 parse
为列表推导创建了这样的迷你DSL。为了解释表达式,包含理解的块被传递给一个函数,由于缺少一个更好的术语,我称之为 comprehend
。
示例:强>
comprehend [(a * b) for a in 1x100 for b in 4x10 where (all [odd? a odd? b])]
出于某种原因, comprehend
对我来说听起来不对,但是像 eval
这样的东西太笼统了。
我还没有找到任何其他语言需要关键字或函数来进行列表推导。无论它们存在,它们都是纯粹的语法糖。不幸的是我没有这个选择。那么,看到我必须有一个函数,它的优秀,简洁,合乎逻辑的名称是什么?
解决方案
选择
怎么样?
为4x10中的b选择[(a * b)为1x100,其中(所有[奇数?奇数?b])]
其他提示
因为列表推导可以被认为类似于地图,所以您可能会考虑将其称为“listmap”。或者,因为列表推导基于集合构建器表示法,所以您可以将其称为“构建”符号。或“buildlist”。
(免责声明:我对REBOL知之甚少,所以请原谅我这些名字已经被拿走了)
transmogrify
do
可能是合适的,因为列表推导只是Monad理解的一个实例,而 do
是Haskell中用于加糖Monadic计算的关键字,但我怀疑它也是模糊的用户库。我打电话给我的列表理解函数 comp
,但这只是你已经拥有的缩写。也许让步
?例如。 产生[(a * b)for 1x100 for b in 4x10 where(all [odd?a odd?b])]
。只是眯着眼睛,假装[]不在那里。
不隶属于 StackOverflow