递归列表时闭包函数出错

Error in closure function when recursing over the list

我已经实现了一个函数,但似乎还不够深入,因为它没有返回所有可能的选项。

这是我的功能和帮手:

let closure n lst =
  iterate ( (a, x) -> a into (closure_helper n x)) lst)

我得到6个。 我错过了什么?

给定一个转换 (a, b, c) 和其他转换列表 t:

,这是确定从 q 可以达到哪些状态的代码
if a = q && b = None then 
   (c::(closure_helper delta c)) @ (closure_helper t q)
else
    closure_helper t q

请注意,通常 delta 仅代表 closure_helper 尚未检查的转换,而不是完整的转换列表。因此,当您找到新的可达状态 c 时,您只能通过查看转换的子集来寻找更多状态。

在我看来是这样。