È possibile eseguire tipi dipendenti nella racchetta tipizzata?


9

È possibile utilizzare i tipi dipendenti nell'implementazione della racchetta tipizzata esistente ? (cioè esistono in esso?)

È ragionevolmente possibile implementare un sistema di tipi dipendenti usando la racchetta tipizzata?


3
Penso che sia necessario chiarire un po 'questa domanda: stai chiedendo se esistono tipi dipendenti in Racket o Weather è possibile aggiungerli ? Se è il primo, allora no (secondo le definizioni più ragionevoli di tipi dipendenti), e se è il secondo, allora sì.
cody

1
Come note cody, questa domanda non è chiara e, a seconda di cosa intendevi, la risposta è un no non molto interessante o un sì non molto interessante. Per favore, approfondisci questa domanda in modo che sappiamo cosa stai effettivamente chiedendo.
Gilles 'SO- smetti di essere malvagio'

Risposte:



-1

Penso che "fare tipi dipendenti" usando i contratti sia già possibile. Controllare https://docs.racket-lang.org/guide/contracts-struct.html e cercare "Verifica delle proprietà delle strutture dati".

Si potrebbe sostenere che si tratta piuttosto di simulare l'effetto, piuttosto che averlo come parte del linguaggio. Tuttavia, da qualche parte dovrai scrivere il codice, che dice all'interprete / compilatore quali sono queste dipendenze e in Racket puoi farlo con i contratti.


Sono contento dell'idea che le macro nella racchetta stiano "estendendo il compilatore"
hawkeye,

@hawkeye Potresti fornire una risposta a questa domanda implementando tipi dipendenti con macro? (Non dubito che sia possibile.)
Zelphir Kaltstahl l'

L'argomento se le macro estendono il compilatore sono qui: stackoverflow.com/a/268091/15441 e puoi inserire qualsiasi parte di codice in una macro, in modo che il codice utilizzato per i tipi dipendenti possa essere inserito in una macro. Quello era il punto che stavo sollevando.
falco
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.