質問

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 は一般的すぎます。

リスト内包表記にキーワードや関数を必要とする言語は他に見つかりません。これらは、どこに存在しても純粋な糖衣構文です。残念ながら私にはその選択肢がありません。では、関数が必要であると考えた場合、その関数に適した、簡潔で、論理的な名前は何でしょうか?

役に立ちましたか?

解決

select はどうですか?

1x100のaに4x10のbに[(a * b)を選択します。ここで(すべて[odd?a odd?b])]

他のヒント

リスト内包表記はマップに似ていると考えることができるため、それを「リストマップ」などと呼ぶことを考えるかもしれません。あるいは、リスト内包表記はセットビルダー表記法に基づいているため、「ビルド」または「ビルドリスト」のような名前で呼ぶこともできます。

(免責事項:私はREBOLについてほとんど知らないので、これらの名前がす​​でに使用されている場合はご容赦ください)

transmogrify

リスト内包表記はMonad内包表記の1つのインスタンスにすぎず、 do はHaskellでモナド計算の糖化に使用されるキーワードであるため、

do が適切である可能性がありますユーザーライブラリのあいまいさ。リスト内包表記関数を comp と呼びましたが、これはあなたが既に持っているものの略です。おそらく yielding ?例えば。 yielding [(a * b)a for 1x100 for b in 4x10 where(all [odd?a odd?b])] 。ちょっと目を細めて、[]がないように見せてください。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top