<link rel="stylesheet" href="styles.f3b1fba60ec7970c.css">

From combinators to concatenative and back again

dc.contributor.advisorGualandi, Hugo Musso
dc.contributor.referee1Bastos, Daniel Chicayban
dc.contributor.referee2Nobrega, Hugo de Holanda Cunha
dc.contributor.referee3Paixão, João Antonio Recio
dc.creatorAndrade, Daniel Kiyoshi Hashimoto Vouzella
dc.date.accessioned2024-05-23T17:57:57Z
dc.date.available2026-05-16T03:08:18Z
dc.date.issued2024-02-06
dc.description.resumoA programação tácita ou point-free é um estilo de programação que evita nomear variáveis, através do uso de combinadores para compor funções menores. Dois modelos de programação tácita são o cálculo concatenativo e a lógica combinatória. O cálculo concatenativo está relacionado às linguagens de programação baseadas em pilha, estas usadas em diversos contextos, incluindo bytecode para máquinas virtuais e sistemas embarcados. A lógica combinatória é um modelo computacional aplicativo mais semelhante ao cálculo lambda. Ambos estes modelos tácitos são frequentemente comparados entre si. Os combinadores elementares da lógica combinatória são comumente casados com instruções de manipulação de pilha: por exemplo, C se parece com o swap, e W se parece com o dup. Neste trabalho, nós generalizamos esta conexão para todos os combinadores e todos os programas de pilha. Nós descrevemos três algorítmos que convertem de um modelo tácito para o outro. O primeiro algorítmo traduz qualquer combinador da lógica combinatória para uma expressão do cálculo concatenativo usando ou a estratégia de redução call-by-name ou a call-by-value. O segundo algorítmo é especializado para um subconjunto de combinadores que recebe uma função callback como seu primeiro argumento. Ele produz programas de pilha menores e mais intuitivos. Por último, o terceiro algorítmo é uma versão reversa do segundo, e converte qualquer programa de pilha de volta para uma expressão da lógica combinatória. Como nossos algorítmos preservam a ordem da redução, nós mostramos que cada modelo é capaz de simular o outro.pt_BR
dc.embargo.termsabertopt_BR
dc.identifier.urihttp://hdl.handle.net/11422/22871
dc.languageengpt_BR
dc.publisherUniversidade Federal do Rio de Janeiropt_BR
dc.publisher.countryBrasilpt_BR
dc.publisher.departmentInstituto de Computaçãopt_BR
dc.publisher.initialsUFRJpt_BR
dc.rightsAcesso Abertopt_BR
dc.subjectLinguagem de programaçãopt_BR
dc.subjectProgramação tácitapt_BR
dc.subjectCálculo concatenativopt_BR
dc.subjectLógica combinatóriapt_BR
dc.subjectProgramação point-freept_BR
dc.subjectProgramming languagept_BR
dc.subjectTacit programmingpt_BR
dc.subjectConcatenative calculuspt_BR
dc.subjectCombinatory logicpt_BR
dc.subjectPointfree programmingpt_BR
dc.subject.cnpqCNPQ::CIENCIAS EXATAS E DA TERRA::CIENCIA DA COMPUTACAOpt_BR
dc.titleFrom combinators to concatenative and back againpt_BR
dc.typeTrabalho de conclusão de graduaçãopt_BR

Arquivos

Pacote original

Agora exibindo 1 - 1 de 1
Carregando...
Imagem de Miniatura
Nome:
DKHVAndrade.pdf
Tamanho:
336,57 KB
Formato:
Adobe Portable Document Format

Pacote de licença

Agora exibindo 1 - 1 de 1
Carregando...
Imagem de Miniatura
Nome:
license.txt
Tamanho:
1,81 KB
Formato:
Item-specific license agreed upon to submission
Descrição: