В Haskell «типы» типов называются «Виды», обозначаемые как *
. Такие как:
Неправильное использование. *
- вид типов, то есть таких объектов уровня, которые представляют собой набор & кинжал; возможных значений времени выполнения.
Термин вид - это немного оттенок. Это необходимо только потому, что Haskell (по уважительным причинам, не меньше!) Имеет четкое различие между временем компиляции и временем выполнения. Значения существуют только во время выполнения, все остальное существует только во время компиляции. В частности, тип таких значений существует только во время компиляции.
Теперь желательно также классифицировать типы, так же, как желательно классифицировать значения в типах. В принципе, нет причин не рассматривать типы, как и любые другие значения, и, следовательно, имеют типы типов. Это в значительной степени основополагающая идея языков с надписью типа Idris или Agda ¶.
В Haskell это не совсем работает: из-за вышеупомянутого различия времени выполнения/компиляции вы не можете бросать типы и значения в один закрытый & ddagger; горшок. Таким образом, понятие видов: это также типы, но типы вещей, которые, в отличие от значений, также существуют во время компиляции, как сами виды, а не во время выполнения, как значения.
Это означает, что нет необходимости идти еще на один уровень от видов, потому что нет более раннего уровня, чем время компиляции. (Если вы не принести Template Haskell в игре,. Не знают, если кто-нибудь рассмотрели такие вопросы, пока)
& кинжал; Они на самом деле не наборы, но вид (каламбур не предназначен).
& ddagger;Закрыто в смысле: вы можете говорить о типах типов типов ... и никогда не нужно придумывать что-либо новое.
¶ Я понимаю, что Agda до сих пор делает различие между типами, тип-типы и т.д. (Set_2
и так далее).Но я считаю, что это больше связано с тем фактом, что Agda является всего языка. Но я могу ошибаться.
Я думаю, что они называют "сортирует". – melpomene
, если я получу вас правильно, это то, что называется [Вселенные] (http://wiki.portal.chalmers.se/agda/pmwiki.php?n=ReferenceManual.UniversePolymorphism) в agda (ну это 'Set_2', но зачем останавливаться там ?) – Carsten