【问题标题】:Is it possible to redefine fst without using pattern matching?是否可以在不使用模式匹配的情况下重新定义 fst?
【发布时间】:2016-08-28 15:44:00
【问题描述】:

我已经使用 Haskell 大约一年了,因为我正在写一篇关于它的论文。在前几章中我谈到了模式匹配,并参考了函数

fst :: (a,b) -> a

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

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

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

【问题讨论】:

  • 仅当您将对定义为type Tuple a b = forall r . (a -> b -> r) -> r。

标签: haskell pattern-matching tuples


【解决方案1】:

提取数据构造函数的参数的唯一方法是对其进行模式匹配。您可以手动进行模式匹配,或者调用一个函数(如fst)为您完成 - 但无论哪种方式,模式匹配都在某处完成。

【讨论】:

  • 哦,是的,我完全忘记将问题推广到所有数据构造函数,在这种情况下,它非常明显!非常感谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-05-18
  • 1970-01-01
  • 1970-01-01
  • 2012-01-28
  • 2022-01-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多