risposta

7

La risposta è semplice: perché possono essere visualizzati nei tipi. Di conseguenza, devono vivere a livello di tipo (altrimenti avresti bisogno di tipi dipendenti). E poiché vivono a livello di tipo, sono classificati per natura.

+0

Questa risposta ha messo tutto a posto nella mia testa. Grazie! – Fixpoint

7

I sistemi di registrazione definiscono regole per valori, tipi e (forse) tipi. Le regole utilizzate dipendono dal tipo di sistema progettato e da ciò che il progettista desidera ottenere.

E.g. in Haskell, etichette discografiche sono:

  • valori (le funzioni di accesso)
  • quei valori sono tipi (ad esempio Record -> Int)
  • quei tipi hanno generi (*)

Altri sistemi di record può utilizzare il tipo o il sistema di tipo per scopi diversi.

Inserendo le etichette in un tipo separato, il controllo del tipo può trattarle in modo speciale, con regole speciali per es. lenti automatiche, o prove da fare con la costruzione dei record (forse la totalità) non è vero per le funzioni di scopo generale.

Un esempio di utilizzo del sistema gentile in Haskell è l'uso di "tipi non in scatola". Questi sono tipi che hanno:

  • diverse rappresentazioni runtime a valori normali
  • diverse forme di legame (ad esempio non possono essere allocati sul mucchio)

per mantenere tipi disimballati da miscelazione a regolare tipi, viene fornito un diverso tipo , che consente al compilatore di tracciare la separazione.

Quindi, non c'è nulla di magico nei nomi delle etichette discografiche che significa che devi usare un tipo diverso per rappresentarli: è solo una scelta che un progettista di linguaggi può fare - e in un linguaggio tipizzato come Ur o Twelf, questa può essere un'utile distinzione.

+0

Grazie, l'esempio dei tipi non condivisi è illuminante – Fixpoint

Problemi correlati