Domanda

REBOL non ha un modo integrato per eseguire la comprensione dell'elenco. Tuttavia, REBOL ha una potente funzione (nota come parse ) che può essere utilizzata per creare linguaggi specifici di dominio (DSL). Ho usato parse per creare un mini-DSL per la comprensione dell'elenco. Per interpretare l'espressione, il blocco contenente la comprensione viene passato a una funzione, che per mancanza di un termine migliore ho chiamato comprendere .

Esempio:

comprehend [(a * b) for a in 1x100 for b in 4x10 where (all [odd? a odd? b])]

Per qualche ragione, comprendere non mi sembra giusto, ma qualcosa come eval è troppo generico.

Non ho trovato nessun'altra lingua che richieda una parola chiave o una funzione per la comprensione dell'elenco. Sono puro zucchero sintattico ovunque esistano. Sfortunatamente non ho questa opzione. Quindi, visto che devo avere una funzione, qual è un nome logico, succinto e logico per questo?

È stato utile?

Soluzione

Che ne dici di selezionare ?

seleziona [(a * b) per a in 1x100 per b in 4x10 dove (tutto [dispari? a dispari? b])]

Altri suggerimenti

Poiché la comprensione dell'elenco può essere considerata analoga alla mappa, potresti pensare di chiamarla in qualche modo simile a "listmap". In alternativa, poiché le comprensioni degli elenchi si basano sulla notazione di set-builder, è possibile chiamarlo in modo simile a "build" o " buildlist " ;.

(Dichiarazione di non responsabilità: so molto poco di REBOL, quindi perdonami se questi nomi sono già stati presi)

Transmogrify

do potrebbe essere appropriato, poiché le comprensioni dell'elenco sono solo un'istanza delle comprensioni di Monad e do è la parola chiave utilizzata in Haskell per i calcoli monadici zuccherati, ma sospetto che sia troppo vago per una libreria utente. Ho chiamato la mia funzione di comprensione dell'elenco comp , ma è solo un'abbreviazione di ciò che già possiedi. Forse cedendo ? Per esempio. cedendo [(a * b) per a in 1x100 per b in 4x10 dove (tutto [dispari? a dispari? b])] . Basta una specie di strabismo e fingere che [] non ci sia.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top