Это на самом деле ошибка в компиляторе F #, поданная здесь: https://github.com/fsharp/fsharp/issues/847
Не было никаких указаний о том, когда (или если) это будет исправлено.
Для вашего конкретногоНапример, я бы рекомендовал просто удалить модификатор rec
: он не нужен, так как значения на самом деле не являются рекурсивными.Это устранит ошибку.
В более общем случае вы можете создать систему взаимно рекурсивных функций для инициализации или просто вложенный блок let
.Например, это должно работать:
let a, b =
let rec a = N(2, b)
and b = N(3, E)
a, b