следующее определение отвергается Lean:Почему Lean применяет аргументы рекурсивного типа для отображения после нерекурсивных?
inductive natlist
| nil : natlist
| cons: natlist → ℕ → natlist
с сообщением об ошибке "ARG # 2 из 'natlist.cons' не является рекурсивной, но это происходит после того, как рекурсивные аргументы"
И следующее определение принимается, как и ожидалось:
inductive natlist
| nil : natlist
| cons: ℕ → natlist → natlist
В чем причина, по которой Lean применяет этот заказ? Реализация
Я вижу вашу точку зрения. Однако некоторым людям нравится определять узловую часть двоичных деревьев следующим образом: '| узел: bintree A -> A -> bintree A -> bintree A' :) –