Каков пример жителя Type 1
, который не является ни Type
, ни жителем Type
? Я не мог ничего придумать, исследуя Idris REPL.
Чтобы быть более точным, я ищу некоторые x
, отличные от Type
, которые дают следующее:
Idris> :t x
x : Type 1
Каков пример жителя Type 1
, который не является ни Type
, ни жителем Type
? Я не мог ничего придумать, исследуя Idris REPL.
Чтобы быть более точным, я ищу некоторые x
, отличные от Type
, которые дают следующее:
Idris> :t x
x : Type 1
Я не специалист по теории типов, но вот мое понимание. В руководстве по Idris есть раздел 12.8 Кумулятивность< /сильный>. В нем говорится, что существует внутренняя иерархия вселенных типов:
Type : Type 1 : Type 2 : Type 3 : ...
И для любого x : Type n
подразумевается x : Type m
для любого m > n
. Также есть пример, демонстрирующий, как это предотвращает возможные циклы в выводе типа.
Но я думаю, что эта иерархия только для внутреннего пользования и нет возможности создать значение Type (n+1)
которого нет в Type n
.
См. также статьи в nLab об юниверсах в теории типов и о тип типов.
Возможно, эта ошибка в репозитории idris-dev тоже может оказаться полезной. Эдвин Брейди ссылается на документ по проектированию и реализации (см. раздел 3.2.2). ).
Я не эксперт по Идрису, но я ожидаю, что
Type -> Type
также находится в Type 1
.
я бы тоже ожидал
Nat -> Type
и если очень повезет (в этом не уверен)
List Type
быть таким большим.
Идея состоит в том, что вы можете выполнять все операции по построению шрифтов на каждом уровне. Каждый раз, когда вы используете типы с одного уровня в качестве значений, типы структур этих живут на один уровень выше.
Type
уровнях. Type : Type 1
, вероятно, только потому, что Type : Type
является противоречием.
- person Ramon Snir; 12.11.2014
Type -> Type
действительно находится в Type 1
, но также и в Type
(как заметил Рамон). То же самое верно для Nat -> Type
и List Type
.
- person Snowball; 12.11.2014