Я пытаюсь создать рекурсивную карту в F #.
type RecMap = Map<string, RecMap>
не будет работать из-за циклической ссылки на RecMap
.Но почему ни
type RecMap = Map<string, RecMap ref>
, ни
type RecMap = (Map<string, RecMap>) ref
не работает?Я думал, что преобразование типа значения карты в RecMap ref
должно было бы сработать.
Обход проблемы путем переписывания RecMap
в один тип записи работает,
type RecMap = { r : Map<string, RecMap> }
Записи являются ссылочными типами, как ref
, но почемуссылки работают в рекурсивных определениях, когда записи делают?