我正在尝试编写一个函数来测试Ocaml中的可变列表是否包含一个循环(即,具有对自身的引用并连续重复).
我的清单定义为type 'a m_list = Nil | Cons of 'a * (('a m_list) ref).
到目前为止,我有:
let is_cyclic list =
let rec check xs =
match (!xs) with
|Nil -> false
|Cons(_,v) -> ((!v)==list)||check v in
match list with
|Nil -> false
|Cons(_, x) -> check x ;;
Run Code Online (Sandbox Code Playgroud)
但它不太正确,我不确定如何从这里开始...感谢您的帮助!