支持 Elm 中的功能模式匹配

Support for functional pattern matching in Elm

在 Elm 中,是否有一种方法可以将函数的参数与多个定义进行模式匹配,例如 Haskell?

示例来自 Haskell:

factorial :: Int ->
factorial 0 = 1
factorial n = n * factorial (n - 1)

Elm 中没有与该语法等效的语法。

实现类似行为的最简单方法是使用带有 case 语句的模式匹配。

请考虑以下示例:

factorial : Int -> Int
factorial n =
  case n of
    0 ->
      1
    _ ->
      n * factorial (n - 1)

上面示例中的 _ 作为通配符来匹配任何模式,在这种情况下,它是不同于 0

的任何整数