REBOL hat keine eingebaute Möglichkeit, Listenkompressen durchzuführen. REBOL verfügt jedoch über eine leistungsfähige Einrichtung (parse
), mit der domänenspezifische Sprachen (DSLs) erstellt werden können. Ich habe parse
verwendet, um ein solches Mini-DSL für List Comprehensions zu erstellen. Um den Ausdruck zu interpretieren, wird der Block, der das Verständnis enthält, an eine Funktion übergeben, die ich mangels eines besseren Ausdrucks comprehend
genannt habe.Was soll ich eine REBOL-Funktion nennen, die Aufzählungen auflistet?
Beispiel:
comprehend [(a * b) for a in 1x100 for b in 4x10 where (all [odd? a odd? b])]
Aus irgendeinem Grund comprehend
klingt nicht richtig zu mir, aber so etwas wie eval
ist zu allgemein.
Ich habe keine andere Sprache gefunden, die ein Schlüsselwort oder eine Funktion für Listenergänzungen benötigt. Sie sind reiner syntaktischer Zucker, wo immer sie existieren. Leider habe ich diese Option nicht. Also, da ich eine Funktion haben muss, was ist ein guter, prägnanter, logischer Name dafür?
Hier ist der Quellcode für die Liste Verständnis: http://blog.revolucent.net/2009/04/dirt-simple-dsl-in-rebol.html –