Refinement kinds: type-safe programming with practical type-level computation
Autor(a) principal: | |
---|---|
Data de Publicação: | 2019 |
Outros Autores: | |
Tipo de documento: | Artigo |
Idioma: | eng |
Título da fonte: | Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos) |
Texto Completo: | http://hdl.handle.net/10362/107255 |
Resumo: | UID/CEC/04516/2019 PTDC/EEICTP/4293/2014 |
id |
RCAP_b8cbd244fa9ed0dbd6e989005ca73acf |
---|---|
oai_identifier_str |
oai:run.unl.pt:10362/107255 |
network_acronym_str |
RCAP |
network_name_str |
Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos) |
repository_id_str |
7160 |
spelling |
Refinement kinds: type-safe programming with practical type-level computationUID/CEC/04516/2019 PTDC/EEICTP/4293/2014This work introduces the novel concept of kind refinement, which we develop in the context of an explicitly polymorphic ML-like language with type-level computation. Just as type refinements embed rich specifications by means of comprehension principles expressed by predicates over values in the type domain, kind refinements provide rich kind specifications by means of predicates over types in the kind domain. By leveraging our powerful refinement kind discipline, types in our language are not just used to statically classify program expressions and values, but also conveniently manipulated as tree-like data structures, with their kinds refined by logical constraints on such structures. Remarkably, the resulting typing and kinding disciplines allow for powerful forms of type reflection, ad-hoc polymorphism and type-directed meta-programming, which are often found in modern software development, but not typically expressible in a type-safe manner in general purpose languages. We validate our approach both formally and pragmatically by establishing the standard meta-theoretical results of type safety and via a prototype implementation of a kind checker, type checker and interpreter for our language.NOVALincsRUNCaires, Luís Manuel Marques da CostaToninho, Bernardo Parente Coutinho Fernandes2020-11-16T23:58:58Z2019-10-102019-10-10T00:00:00Zinfo:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/article30application/pdfhttp://hdl.handle.net/10362/107255eng2475-1421PURE: 20071720https://doi.org/10.1145/3360557info:eu-repo/semantics/openAccessreponame:Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos)instname:Agência para a Sociedade do Conhecimento (UMIC) - FCT - Sociedade da Informaçãoinstacron:RCAAP2024-03-11T04:51:56Zoai:run.unl.pt:10362/107255Portal AgregadorONGhttps://www.rcaap.pt/oai/openaireopendoar:71602024-03-20T03:40:54.075281Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos) - Agência para a Sociedade do Conhecimento (UMIC) - FCT - Sociedade da Informaçãofalse |
dc.title.none.fl_str_mv |
Refinement kinds: type-safe programming with practical type-level computation |
title |
Refinement kinds: type-safe programming with practical type-level computation |
spellingShingle |
Refinement kinds: type-safe programming with practical type-level computation Caires, Luís Manuel Marques da Costa |
title_short |
Refinement kinds: type-safe programming with practical type-level computation |
title_full |
Refinement kinds: type-safe programming with practical type-level computation |
title_fullStr |
Refinement kinds: type-safe programming with practical type-level computation |
title_full_unstemmed |
Refinement kinds: type-safe programming with practical type-level computation |
title_sort |
Refinement kinds: type-safe programming with practical type-level computation |
author |
Caires, Luís Manuel Marques da Costa |
author_facet |
Caires, Luís Manuel Marques da Costa Toninho, Bernardo Parente Coutinho Fernandes |
author_role |
author |
author2 |
Toninho, Bernardo Parente Coutinho Fernandes |
author2_role |
author |
dc.contributor.none.fl_str_mv |
NOVALincs RUN |
dc.contributor.author.fl_str_mv |
Caires, Luís Manuel Marques da Costa Toninho, Bernardo Parente Coutinho Fernandes |
description |
UID/CEC/04516/2019 PTDC/EEICTP/4293/2014 |
publishDate |
2019 |
dc.date.none.fl_str_mv |
2019-10-10 2019-10-10T00:00:00Z 2020-11-16T23:58:58Z |
dc.type.status.fl_str_mv |
info:eu-repo/semantics/publishedVersion |
dc.type.driver.fl_str_mv |
info:eu-repo/semantics/article |
format |
article |
status_str |
publishedVersion |
dc.identifier.uri.fl_str_mv |
http://hdl.handle.net/10362/107255 |
url |
http://hdl.handle.net/10362/107255 |
dc.language.iso.fl_str_mv |
eng |
language |
eng |
dc.relation.none.fl_str_mv |
2475-1421 PURE: 20071720 https://doi.org/10.1145/3360557 |
dc.rights.driver.fl_str_mv |
info:eu-repo/semantics/openAccess |
eu_rights_str_mv |
openAccess |
dc.format.none.fl_str_mv |
30 application/pdf |
dc.source.none.fl_str_mv |
reponame:Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos) instname:Agência para a Sociedade do Conhecimento (UMIC) - FCT - Sociedade da Informação instacron:RCAAP |
instname_str |
Agência para a Sociedade do Conhecimento (UMIC) - FCT - Sociedade da Informação |
instacron_str |
RCAAP |
institution |
RCAAP |
reponame_str |
Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos) |
collection |
Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos) |
repository.name.fl_str_mv |
Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos) - Agência para a Sociedade do Conhecimento (UMIC) - FCT - Sociedade da Informação |
repository.mail.fl_str_mv |
|
_version_ |
1799138022680166400 |