【发布时间】:2014-05-30 17:57:08
【问题描述】:
想知道在支持此功能的核心或第 3 方库中是否有任何已建立的模式或什至可用的函数?
我使用seq 表达式编写了一个复杂的序列,该表达式需要一个开始时间和一个规则列表,这些规则指示何时允许某些事件在未来的时间线上发生以创建一个无限序列。很容易提供任何起始DateTime 值,然后开始向前迈进。生成的序列是 seq <DateTime> 对应于时间戳事件。
我想做的是能够在这个理论上的事件时间表上倒退。我希望能够说“返回十步并给我那个 DateTime”,以便我知道如果我将结果应用到原始序列作为输入,我最终会回到我开始的地方。
我是否必须颠倒复杂的逻辑才能使其发挥作用?或者是否有一种方法可以有效地“蛮力”我的前向逻辑,以便我可以继续提供输入,直到我得到一个正确地给我 10 步直到指定日期时间的结果?
我意识到我在解释这一点方面做得很差,所以也许是一个简化的例子来帮助想象我所追求的。假设我使用某种逻辑模式生成了一个整数序列。为了简单起见,我们只说 2 的倍数:
let seq = [ 2; 4; 6; 8; 10; 12; 14; 16; 18; 20; ]
(虽然这是使用我预定义的逻辑延迟生成的序列)
我可以很容易地从其中的任何值开始生成这个序列,所以给定 12 我可以继续前进
let seqFrom12 = [ 12; 14; 16; 18; 20; ]
我希望能够为序列的任何可能值计算我需要提供的值,以便 X 步将我带到序列中的另一个值。
所以我想要序列的所有值,以便 X = 3 多步将带我到序列中的值 12。所以我需要倒数到 10,然后是 8,然后是 6。只有在真实场景中,应用反向逻辑要困难得多
【问题讨论】:
-
听起来您想要实现撤消功能。这或多或少是正确的吗?
-
@mydogisbox 是的,这肯定是另一种可视化方式
标签: f# ienumerable sequence