- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
目前有一个pull request由 Jonathan S. 替换 Data.IntMap
的实现一个在 this README 中解释基于来自 blog post 的想法爱德华·克米特。
Jonathan S. 开发的基本概念是 IntMap
是一棵看起来像这样的二叉树(为了保持一致性,我对他的开发做了一些细微的改动):
data IntMap0 a = Empty | NonEmpty (IntMapNE0 a)
data IntMapNE0 a =
Tip !Int a
| Bin { lo :: !Int
, hi :: !Int
, left :: !(IntMapNE0 a)
, right :: !(IntMapNE0 a) }
IntMapNE0
中包含的最小和最大键。 .只需稍微摆弄一下,就可以将其用作 PATRICIA trie。乔纳森指出,这种结构的范围信息几乎是它需要的两倍。跟随左或右脊椎将产生所有相同的
lo
或
hi
界限。因此,他通过仅包括祖先未确定的界限来消除这些:
data IntMap1 a = Empty | NonEmpty { topLo :: !Int, child :: !(IntMapNE1 a) }
data IntMapNE1 a =
Tip a
| IntMapNE1 { bound :: !Int
, left :: !(IntMapNE1 a)
, right :: !(IntMapNE1 a)
data L
data R
newtype IntMap a = IntMap (IntMap_ L a) deriving (Eq)
data IntMap_ t a = NonEmpty !Int a !(Node t a) | Empty deriving (Eq)
data Node t a = Bin !Int a !(Node L a) !(Node R a) | Tip deriving (Eq, Show)
最佳答案
Is there some abstraction that would allow this to be done automatically?
data IntMap1 a = Empty | NonEmpty { topLo :: !Int, child :: !(IntMapNE1 a) }
data IntMapNE1 a =
Tip a
| IntMapNE1 { bound :: !Int
, left :: !(IntMapNE1 a)
, right :: !(IntMapNE1 a)
Either
中将这样的值与父级的界限进行元组化。 (指示它是下限还是上限)。
viewLoHi (Left lo, IntMapNE1 hi left right)
= Just (lo, hi, (Left lo, left), (Right hi, right)
viewLoHi (Right hi, IntMapNE1 lo left right)
= Just (lo, hi, (Left lo, left), (Right hi, right)
viewLoHi _
= Nothing
pattern Bin' lo hi left right <- (viewLoHi -> Just (lo, hi, left, right))
viewLoHi' (NonEmpty lo child) = viewLoHi (Left lo, child)
viewLoHi' Empty = Nothing
pattern NonEmpty' lo hi left right <- (viewLoHi' -> Just (lo, hi, left, right)
NonEmpty'
和
Bin'
当您遍历树时,簿记现在应该完全隐藏。 (代码未测试,所以这里会有错别字)
关于haskell - 有什么方法可以减轻距离跟踪的痛苦吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39520359/
我有一个用于识别 Windows arch 的开关代码:ia32 和 x64,因此我的应用程序文件夹中有两个 pepflashplayer.dll,但这两个文件的重量为 45.8mb(应用程序的最终重
我从 Fortran 的角度写了这个问题,但这些问题并不仅限于 Fortran(因此有 c++ 标签)。 我有两个问题。我读到在 OpenMP 并行循环的开始和停止时存在延迟 here .我的问题是:
这个问题在这里已经有了答案: Programmatically Lighten or Darken a hex color (or rgb, and blend colors) (20 个答案) 关
什么是在网络服务器和应用服务器之间应用缓存层的好工具。 基本要求: 应用程序服务器需要一种方法来从缓存中删除项目并将项目放入缓存中并指定到期日期。 网络服务器需要一种方法以非常轻量级、快速的方式从缓存
我在一个项目上使用 git 已经有一段时间了,是时候清理一下了。 我有一些源代码文件已经变得很大,应该拆分成多个文件。我还想将一些功能从一个文件移动到一个更合适的文件。 由于 git 跟踪我的所有更改
我刚刚在读这篇文章 HERE ,作者是这样说的: Also try to keep your HTML structure as simple as possible. Remember that t
微软添加了一个方便的/Qspectre到他们的 MSVC 编译器(尽管目前似乎只是(试图)减轻 Spectre v1)他们将随着时间的推移进行更新。从用户的角度来看,这非常好,只需启用该标志,您就可以
我喜欢专家。我什至非常非常喜欢它。自从我从 Ant 切换到它以来,我节省了大量的工作时间、构建构建文件、管理依赖项等,并在我的源代码控制存储库中节省了大量空间。 问题是 maven 文件太冗长了。并不
我是一名优秀的程序员,十分优秀!