Я пытаюсь провести некоторый анализ области видимости в исходном коде Python 3, и я застрял в том, как оператор нелокального оператора работает внутри определения класса.
Как Я понимаю, что определение класса выполняет свое тело внутри нового пространства имен (назовите его dict) и связывает имя класса с результатом типа (name, base, dict). имеет ссылку на себя и повторяется постоянно.
Мой список определен как type 'a m_list = Nil | Минусы '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 ;;
, но это не совсем правильно, и я не уверен, как действовать дальше ... спасибо за любые помогите!