递归列表时闭包函数出错
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
时,您只能通过查看转换的子集来寻找更多状态。
在我看来是这样。
我已经实现了一个函数,但似乎还不够深入,因为它没有返回所有可能的选项。
这是我的功能和帮手:
let closure n lst =
iterate ( (a, x) -> a into (closure_helper n x)) lst)
我得到6个。 我错过了什么?
给定一个转换 (a, b, c)
和其他转换列表 t
:
if a = q && b = None then
(c::(closure_helper delta c)) @ (closure_helper t q)
else
closure_helper t q
请注意,通常 delta
仅代表 closure_helper
尚未检查的转换,而不是完整的转换列表。因此,当您找到新的可达状态 c
时,您只能通过查看转换的子集来寻找更多状态。
在我看来是这样。