Question

REBOL n’a pas de méthode intégrée pour effectuer des compréhensions de liste. Cependant, REBOL dispose d'une fonctionnalité puissante (appelée parse ) qui peut être utilisée pour créer des langues spécifiques à un domaine (DSL). J'ai utilisé parse pour créer un tel mini-DSL pour la compréhension de liste. Pour interpréter l’expression, le bloc contenant la compréhension est passé à une fonction qui, faute d’un meilleur terme, j’ai appelé comprendre .

Exemple:

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

Pour une raison quelconque, comprendre ne me semble pas correct, mais quelque chose comme eval est trop générale.

Je n'ai trouvé aucune autre langue nécessitant un mot clé ou une fonction pour la compréhension de la liste. Ce sont des sucres syntaxiques purs, où qu’ils existent. Malheureusement, je n'ai pas cette option. Alors, voyant que je dois avoir une fonction, quel est son nom correct, succinct et logique?

Était-ce utile?

La solution

Qu'en est-il de select ?

sélectionnez [(a * b) pour a sur 1x100 pour b sur 4x10 où (tout [impair? un impair? b])]

Autres conseils

Étant donné que la compréhension de liste peut être considérée comme analogue à map, vous pouvez l’appeler comme "listmap". Alternativement, comme les interprétations de liste sont basées sur la notation set-builder, vous pouvez l'appeler comme suit: "build". ou "buildlist".

(Avertissement: je connais très peu de choses sur REBOL, alors pardonnez-moi si ces noms sont déjà pris)

transmogrifier

do pourrait être approprié, car la compréhension de liste n'est qu'un exemple de compréhension de Monad, et do est le mot clé utilisé dans Haskell pour les calculs monadiques sucrés, mais je suppose que c'est aussi le cas. vague pour une bibliothèque utilisateur. J'ai appelé ma fonction de compréhension de liste comp , mais ce n'est qu'une abréviation de ce que vous avez déjà. Peut-être que cédant ? Par exemple. donnant [(a * b) pour a sur 1x100 pour b sur 4x10 où (tout [impair? a étrange? b])]] . Juste une sorte de strabisme et prétendre que le [] ne sont pas là.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top