É 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?


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.


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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.