是否可以在不使用模式匹配的情况下重新定义fst?

时间:2016-08-28 15:44:00

标签: haskell pattern-matching tuples

我已经使用Haskell大约一年了,因为我正在写一篇论文。在第一章的其中一章中,我将讨论模式匹配,并参考函数

fst :: (a,b) -> a

证明它的用处。在文中我说它会更复杂"在不使用模式匹配的情况下实现fst。出于兴趣,我开始考虑如何做到这一点,但似乎没有想到任何方式不会以某种方式使用模式匹配,我能想到的最好的事情是

fst' tuple = let (first, second) = tuple
             in first

但基本上仍然使用模式匹配!有没有办法在没有模式匹配的情况下访问元组的内部值?

1 个答案:

答案 0 :(得分:5)

提取数据构造函数参数的唯一方法是对其进行模式匹配。你可以手动进行模式匹配,或者调用一个函数(如fst)来为你做这个 - 但不管怎样,模式匹配都在某处完成。