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
является слишком общим.
Я не нашел ни одного другого языка, для которого требуется ключевое слово или функция для понимания списка. Они чистый синтаксический сахар везде, где они существуют. К сожалению, у меня нет такой возможности. Итак, видя, что у меня должна быть функция, какое у нее хорошее, краткое, логичное имя?