作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
假设我们有以下 Haskell:
data T = T0 | T1 | T2 | ... | TN
toInt :: T -> Int
toInt t = case t of
T0 -> 0
T1 -> 1
T2 -> 2
...
TN -> N
if (t.tag == T0) { ... }
else if (t.tag == T1) { ... }
else ...
t.tag
在集合中 {
TO
...
T1023
}。但是,如果模式匹配通常具有许多其他功能和概括,则可能不会使用它。
t
上的模式匹配在
toInt
?
最佳答案
使用跳转表,使模式匹配成为恒定时间操作。
不幸的是,我无法找到最新的引用,尽管 this page提到Cmm级别的实现switch
作为跳转表的语句和 this old tagging design document使用 case
在 Bool
例如,生成一个跳转表。
关于Haskell GHC : what is the time complexity of a pattern match with N constructors?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9027384/
我是一名优秀的程序员,十分优秀!