functional-programming - 详尽的模式

标签 functional-programming pattern-matching sml smlnj

我正在学习 ML,有人可以解释一下穷举模式是什么意思吗?

最佳答案

如果模式匹配不会失败,则它是详尽的。 IE。所有可能发生的情况都包含在一个模式中。

例如,以下模式匹配并不详尽,因为它没有涵盖列表为空的情况:

fun sum (x::xs) = x + sum xs

以下内容是详尽的,因为这两种情况都涵盖了:

fun sum (x::xs) = x + sum xs
  | sum [] = 0

通常,当且仅当存在默认情况或所有构造函数都有情况并且每个子模式的匹配都是详尽的时,代数数据类型上的模式匹配才是详尽的。

关于functional-programming - 详尽的模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4292744/

相关文章:

Scala - 复杂条件模式匹配

list - 如何使用 sml 编写函数将 2 元组列表转换为扁平列表?

types - 有没有办法约束仿函数的参数签名,以便参数可以为结构提供未指定的相等类型?

javascript - 如何实现 f(g) == g(f)

rust - 在采用 &self 或 &mut self 的函数中进行模式匹配时,如何避免 ref 关键字?

enums - 是否可以在模式匹配时使用变量的值而不是绑定(bind)到它?

sml - 如何禁用 SML/NJ 中的非标准功能

functional-programming - 在 Erlang 中作为参数的函数

haskell - Applicative Functors 映射的类别到底是什么?

haskell - 在 Haskell 中,守卫或匹配器更可取吗?