我正在关注Haskell的在线教程.我们定义了一个函数来添加二维向量,由元组对数字表示.以下是显式类型声明,它确保两个输入都是二维向量.
addVectors :: (Num a) => (a, a) -> (a, a) -> (a, a)
Run Code Online (Sandbox Code Playgroud)
我理解为什么以下函数定义使用模式匹配:它描述了输入数据应符合的模式.
addVectors (x1, y1) (x2, y2) = (x1 + x2, y1 + y2)
Run Code Online (Sandbox Code Playgroud)
为什么以下替代函数定义不使用模式匹配?(fst)和(snd)保证可以工作,因为输入被显式声明为长度为2的元组.
两个函数定义有什么区别?
addVectors a b = (fst a + fst b, snd a + snd b)
Run Code Online (Sandbox Code Playgroud)