HasKLogiX: Uma DSL embutida em Haskell para programação Prolog

Resumo


Os diferentes paradigmas de programação existentes se fazem necessários para resolução de problemas distintos, onde cada paradigma tem sua principal área de aplicação e suas vantagens e desvantagens ao ser aplicado na área em questão. Mas, ao unirmos dois paradigmas em um mesmo programa, obtemos uma maior flexibilidade e uma maior capacidade de resolução de problemas, pois podemos utilizar as vantagens de cada paradigma em conjunto, e não apenas um deles isoladamente. Nesse trabalho, foi desenvolvido uma DSL (linguagem de domínio especifico) em Haskell, para interpretação de programas Prolog, utilizando dois paradigmas de programação, o lógico e o funcional, mas que pertencem ao mesmo estilo de programação, o declarativo. Deste modo, tentamos minimizar as desvantagens de utilizar os paradigmas em conjunto, e espera-se maximizar as vantagens.
Palavras-chave: DSL, Prolog, Haskell, Paradigmas de programação

Referências

Antoy, S. (2005). Evaluation strategies for functional logic programming. Journal of Symbolic Computation, 40(1):875-903. https://doi.org/10.1016/j.jsc.2004.12.007

Antoy, S. and Hanus, M. (2010). Functional logic programming. Commun. ACM, 53(4):74-85. https://doi.org/10.1145/1721654.1721675

Bloss, A. (1989). Update analysis and the efficient implementation of functional aggregates. In Proceedings of the fourth international conference on Functional programming languages and computer architecture, pages 26-38. https://doi.org/10.1145/99370.99373

Dinucci, A., Duarte, V., Fontes, L. M., Cabeceiras, A., and de Brito, R. P. (2016). Introdução à lógica proposicional estoica. Prometheus-Journal of Philosophy.

Fernandez, M. (2004). ´ Programming Languages and Operational Semantics, volume 1 of Texts in computing. College Publications. https://doi.org/10.52052/issn.2176-5960.pro.v10i22.6382

Monard, M. C. and Baranauskas, J. A. (2003). Introdução de Regras e Árvores de Decisão. Sistemas Inteligentes-Fundamentos e Aplicações, 1:115-139.

Roussel, P. (1975). Prolog: Manuel de reference et d’utilisation groupe d’intelligence artificielle. UER de Luminy, Universit6 d’Aix-Marseille II.

Rubinstein-Salzedo, S. (2018). Big o notation and algorithm efficiency. In Cryptography, pages 75-83. Springer. https://doi.org/10.1007/978-3-319-94818-8

Spivey, J. M. and Seres, S. (1999). Embedding prolog in haskell. In Proceedings of Haskell, volume 99, pages 1999-28.

Wielemaker, J., Schrijvers, T., Triska, M., and Lager, T. (2012). Swi-prolog. Theory and Practice of Logic Programming. https://doi.org/10.1017/S1471068411000494
Publicado
09/10/2023
LAZZAROTTO, Ari Vitor da Silva; DU BOIS, André Rauber. HasKLogiX: Uma DSL embutida em Haskell para programação Prolog. In: WORKSHOP-ESCOLA DE INFORMÁTICA TEÓRICA (WEIT), 7. , 2023, Rio Grande/RS. Anais [...]. Porto Alegre: Sociedade Brasileira de Computação, 2023 . p. 37-44. DOI: https://doi.org/10.5753/weit.2023.26595.