F# 不可变的可变大小窗口数据结构
下面是我需要的数据结构的描述,我想使用不可变的数据结构来实现它。我试图确定......是否有一个现有的数据结构可以支持我在这里尝试做的事情,或者我是否需要创建一个数据结构 - 如果我需要创建它,什么会是一个好的从哪里开始(构建块)?
我有稳定的某种类型的传入值流。我想将它们添加到持久/不可变的数据结构中以保存它们的历史记录,并且在每次添加时,它将查看历史记录并确定是否将删除一个或多个最旧的项目(例如,如果历史记录> >)。一定的长度或值具有一定的属性)。
I have below a description of a data structure I need and I want to implement it using immutable data structures. I'm trying to determine... is there an existing data structure out there that will support what I'm trying to do here or do I need to create one--and if I need to create it, what would be a good place to start (building blocks)?
I have a steady stream of incoming values of a certain type. I want to add them to a persistent/immutable data structure to hold a history of them, and on each add, it will review the history and determine if one or more oldest items will be removed (for example, if the history is > a certain length or a value has a certain property).
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
在不了解更多关于您的要求的情况下,我只想说普通
Set<'a>
的工作绰绰有余。我更喜欢“集合”而不是“列表”,这样您始终可以 O(lg n) 访问最大和最小的项目,从而允许您通过插入日期/时间来订购集合,以便有效地访问最新和最旧的项目。似乎很容易包装一个集合,以便其添加/删除方法调用您的回调:
Without knowing more about your requirements, I'd just say a vanilla
Set<'a>
does a more than adequate job. I'd prefer a 'Set' over a 'List' so you always have O(lg n) access to the largest and smallest items, allowing you to ordered your set by insert date/time for efficient access to the newest and oldest items.Seems very easy to wrap up a set so that its Add/Remove methods invoke your callbacks:
感谢朱丽叶的善意信息,我已经实现了我需要的内容,并将其放在这里,以防其他人发现它有用。
Thanks to Juliet's kind information, I have implemented what I need and I put it here in case anyone else might find it useful.