Flat

Flat

是一个属性,它可以赋给一个符号 f ,指定涉及嵌套函数 f 的所有表达式应当被压平. 这个属性包括在模式匹配中.

更多信息

  • Flat 对应于数学上的结合律.
  • 对一个有属性 Flat 的符号 ff[f[a,b],f[c]]自动化简为 f[a,b,c].
  • 诸如 PlusTimesDot 的函数是 Flat.
  • 对一个 Flat 函数 f,在模式 f[x_,y_] 中变量 xy 对应于任何参数序列.
  • Flat 属性必须在对 Flat 函数定义任何值前被分配.

范例

打开所有单元关闭所有单元

基本范例  (3)

平坦函数的嵌套表达式被压平:

Flat 应用了结合律的概念:

Flat 允许模式匹配器使用结合律:

范围  (3)

关联函数的嵌套表达式被压平:

在模式匹配中,Flat 允许元素序列被替换:

对于平坦且无序的函数,参数的任意子集都可能匹配:

属性和关系  (5)

平坦函数的嵌套表达式被自动压平:

对于平坦函数,两元参数的定义一般是足够的:

当任意序列匹配出现时,一个带有 flat head 的表达式即被视为匹配:

与下式相比:

ReplaceRepeated 可能会帮助确保所有的情形都被替换:

BlankFlat 函数 f 中的序列匹配时,会保留 head f

序列模式,如 BlankSequenceBlankNullSequence 不受 Flat 的影响:

对于没有 OneIdentity 的压平函数 f,当 f[x_]f[expr] 相比较时,模式匹配器会尝试先绑定 x_f[expr](仅在与 expr 的匹配失败以后):

如果函数拥有属性 OneIdentity,则跳过第一次的尝试:

可能存在的问题  (4)

对于 flat 和无序的函数,模式匹配可能需要尝试很多情况:

Longest 可用来阻止与较短的子表达式进行匹配:

对于展平函数 f,模式 f[_] 匹配有一个或多个参数的 f

Repeated 可被用作只匹配单个参数的模式,包括在展平函数里面的情况:

限制条件可能和预想的效果不同,因为 x_ 还会与 flat 函数的标头进行匹配:

而这个限制条件起作用了,因为 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 语言. 1988. "Flat." Wolfram 语言与系统参考资料中心. Wolfram Research. https://reference.wolfram.com/language/ref/Flat.html.

APA

Wolfram 语言. (1988). Flat. Wolfram 语言与系统参考资料中心. 追溯自 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: 21-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: 21-November-2024 ]}