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

Ghi*_*ani 1 haskell tuples pattern-matching

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

fst :: (a,b) -> a
Run Code Online (Sandbox Code Playgroud)

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

fst' tuple = let (first, second) = tuple
             in first
Run Code Online (Sandbox Code Playgroud)

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

Car*_*arl 5

提取数据构造函数参数的唯一方法是对其进行模式匹配.你可以手动进行模式匹配,或者调用一个函数(比如fst)为你做这个 - 但无论如何,模式匹配正在某处完成.