Flat

Flat

シンボルの属性で,このシンボル f がネストしている場合に自動的にフラットにする(ネストをほどく)ことを指定する.この属性はパターンマッチの際に考慮される.

詳細

  • Flatは数学的な特性である結合律に対応する.
  • 属性Flatを与えられているシンボル f では,f[f[a,b],f[c]]が自動的に f[a,b,c]へと還元される.
  • PlusTimesそしてDotのような関数はFlatである.
  • Flatである関数 f では,パターン f[x_,y_]における変数 xy は,引数の任意の列に対応することができる.
  • 属性Flatは,Flat関数に値を割り当てる前に,設定されなければならない.

例題

すべて開くすべて閉じる

  (3)

平坦な関数を持つネストした式は平坦化される:

Flatは結合律の概念を実装する:

Flatはパターンマッチに結合性を使うことができる:

スコープ  (3)

結合性の関数を持つネストした式は平坦化される:

パターンマッチングで,Flatは要素列の置換を許容する:

平坦で順序を問わない関数の場合,引数の部分集合が一致することがある:

特性と関係  (5)

平坦な関数を持つネストした式は自動的に平坦化される:

平坦な関数の場合,2引数の場合の定義で通常は十分である:

平らな頭部を持つ式は,任意の列とマッチする場合はその全体がマッチされるとみなされる:

以下と比較する:

ReplaceRepeatedは出現するすべてを確実に置換するのに役立つかもしれない:

BlankFlat関数 f 内の列をマッチするとき,頭部 f はそのまま保持される:

BlankSequenceBlankNullSequenceのような連続パターンはFlatの影響は受けない:

OneIdentityではない関数 f については,f[x_]f[expr]と比較される際に,パターンマッチはまず x_f[expr]にバインドしようとし,それが失敗したときに限って expr にバインドしようとする:

関数がOneIdentity属性も持つ場合は,最初の試みは省かれる:

考えられる問題  (4)

平坦で順序を問わない関数の場合,パターンマッチにはたくさんの場合を試さなければならないことがある:

Longestを使うと,短い部分式についての追加的なマッチを防ぐことができる:

平坦な関n f については,パターン f[_]f と1つあるいは複数の引数をマッチする:

Repeatedを,たとえ平坦な関数の中でも1つの引数のみをマッチするパターンとして使うことができる:

x_は平坦な関数の頭部とともにマッチされるので,制約は思いがけない動作をするかもしれない:

x_PlusPlus[b,c]とマッチするので次の制約はうまくいく:

x_PlusSymbolの両方の頭部を持つことはできないので,次は失敗する:

BlankSequenceを左辺に使うとより一貫した結果が与えられる:

Wolfram Research (1988), Flat, Wolfram言語関数, https://reference.wolfram.com/language/ref/Flat.html.

テキスト

Wolfram Research (1988), Flat, Wolfram言語関数, https://reference.wolfram.com/language/ref/Flat.html.

CMS

Wolfram Language. 1988. "Flat." Wolfram Language & System Documentation Center. Wolfram Research. https://reference.wolfram.com/language/ref/Flat.html.

APA

Wolfram Language. (1988). Flat. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/Flat.html

BibTeX

@misc{reference.wolfram_2024_flat, author="Wolfram Research", title="{Flat}", year="1988", howpublished="\url{https://reference.wolfram.com/language/ref/Flat.html}", note=[Accessed: 22-November-2024 ]}

BibLaTeX

@online{reference.wolfram_2024_flat, organization={Wolfram Research}, title={Flat}, year={1988}, url={https://reference.wolfram.com/language/ref/Flat.html}, note=[Accessed: 22-November-2024 ]}