Haskell模式匹配 – 是什么?

什么是Haskell中的模式匹配,它如何与守卫等式相关?

我试着寻找一个简单的解释,但我还没有找到一个。

编辑:
有人标记为家庭作业。我不再去上学了,我只是在学习Haskell,我试图理解这个概念。纯的兴趣。

简而言之,模式就像在数学中定义分段函数一样。您可以使用模式为不同的参数指定不同的函数体。当调用函数时,通过将实际参数与各种参数模式进行比较来选择适当的体。有关详细信息,请阅读A Gentle Introduction to Haskell

比较:

用等效的Haskell:

fib 0 = 1
fib 1 = 1
fib n | n >= 2 
      = fib (n-1) + fib (n-2)

注意分段函数中的“n≥2”在Haskell版本中成为一个保护,但是其他两个条件只是模式。模式是测试值和结构的条件,例如x:xs,(x,y,z)或Just x。在分段定义中,基于=或∈关系的条件(基本上,说某些东西“是”的条件)成为模式。警卫允许更一般的条件。我们可以重写fib使用guard:

fib n | n == 0 = 1
      | n == 1 = 1
      | n >= 2 = fib (n-1) + fib (n-2)
http://stackoverflow.com/questions/2225774/haskell-pattern-matching-what-is-it

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:Haskell模式匹配 – 是什么?