É possível fazer tipos dependentes na raquete digitada?

9

É possível usar tipos dependentes na implementação existente do Typed Racket ? (ou seja, eles existem nele?)

É razoavelmente possível implementar um sistema de tipos dependentes usando raquete digitada?

Hawkeye
fonte
3
Eu acho que você precisa esclarecer um pouco essa pergunta: você está perguntando se existem tipos dependentes no Racket ou no tempo, é possível adicioná- los? Se for o primeiro, então não (pelas definições mais razoáveis ​​dos tipos dependentes) e, se for o último, então sim.
Cody
1
Como observa Cody, essa pergunta não é clara e, dependendo do que você quis dizer, a resposta é um não não muito interessante ou um sim não muito interessante. Por favor, elabore esta pergunta para que saibamos o que você está realmente perguntando.
Gilles 'SO- stop being evil' em

Respostas:

-1

Eu acho que "fazer tipos dependentes" usando contratos já é possível. Verifique https://docs.racket-lang.org/guide/contracts-struct.html e procure "Verificando Propriedades das Estruturas de Dados".

Você poderia argumentar que isso simula o efeito, em vez de tê-lo como parte do idioma. No entanto, em algum lugar você precisará escrever o código, que informa ao intérprete / compilador quais são essas dependências e no Racket você pode fazer isso com contratos.

Zelphir Kaltstahl
fonte
Estou feliz com a idéia de que as macros em raquete são 'estender o compilador'
hawkeye
@hawkeye Você poderia responder a esta pergunta implementando tipos dependentes com macros? (Eu não duvido que é possível.)
Zelphir Kaltstahl
O argumento sobre se as macros estendem o compilador está aqui: stackoverflow.com/a/268091/15441 e você pode colocar qualquer parte do código em uma macro - para que o código usado para tipos dependentes possa ser colocado em uma macro. Esse era o ponto que eu estava fazendo.
hawkeye