Adrianistán

El blog de Adrián Arroyo


Artículos con etiqueta «prolog»

Space Pipes

Acabo de terminar un nuevo minijuego de puzzles llamado Space Pipes. El objetivo es unir todas las piezas del tablero con la casilla central. Para ello podemos rotar las piezas. Existen dos modos de juego: con piezas cuadradas y con piezas hexágonales.

Seguir leyendo

Tutorial de CHR (Constraint Handling Rules)

CHR es un lenguaje de programación lógico basado en reglas, pero a diferencia de Prolog o miniKanren, se aplican "hacia delante". Diseñado en Alemania en 1991 por Thom Frühwirth, se trata de un lenguaje muy pequeño (tiene solo tres casos) y que normalmente se usa a través de otro lenguaje que le aporta expresividad (como Prolog, Haskell, C, Java o JavaScript). En este tutorial aprenderemos a usar CHR y usaremos Prolog como lenguaje base.

Seguir leyendo

Supertutorial de Prolog: aprende Prolog en español

Si estás aquí es porque has decidido aprender Prolog o por lo menos, te ha entrado la curiosidad sobre este lenguaje del paradigma lógico. ¡Sabia elección! En este artículo y los siguientes (enlazados al final) podrás aprender todo lo básico de Prolog.

Seguir leyendo

El Universo Prolog

Prolog es un lenguaje de programación dentro del paradigma lógico. Desde su invención en 1972 en Marsella, Francia, Prolog ha sido un lenguaje base para otros lenguajes ya que Prolog prácticamente inventó el paradigma. Las ventajas originales de Prolog son su sintaxis reducida y tersa, altamente modificable ya que es un lenguaje homoicónico donde el código y los datos son lo mismo. De esta forma se permite expresar el conocimiento fácilmente. En el lenguaje solo existen comentarios, términos y variables. El lenguaje funciona mediante conceptos como la unificación SLD y la búsqueda. Pero como todo lenguaje, la gente no se quedó con Prolog a secas, sino que ha habido modificaciones respecto a la versión de 1972. Adentrémonos en el universo de lenguajes inspirados y versiones de Prolog.

Seguir leyendo

Debug gráfico en Prolog

Hace ya un tiempo hice un pequeño tutorial de Prolog. Desde entonces hasta hoy he aprendido mucho y seguramente rehaga el tutorial en algún momento, de forma más práctica. Mientras tanto voy a repasar una sección que tenía el tutorial, el debugging

Seguir leyendo

Sudoku en Prolog

Prolog es el lenguaje más importante dentro del paradigma lógico. Uno de los puntos claves de Prolog es su expresividad para modelar un problema, y de la misma forma que ha sido modelado, resolverlo. Veremos como resolver el clásico Sudoku usando Prolog.

Seguir leyendo

Teletexto #005

Bienvenidos a una nueva edición de Teletexto. Un repaso por la red de enlaces que pueden ser interesantes.

Seguir leyendo

Prolog DCG: gramáticas de clausula definida

Seguir leyendo

Teletexto #001

Bienvenidos a una nueva sección del año 2020. Se trata de Teletexto, una sección donde recopilaré enlaces que considero interesantes junto con un pequeño texto. La idea de esta sección viene de que tengo un Trello con ideas gigante. Muchas de ellas no las voy a tocar, pero me gustaría mencionarlas en el blog, ya que me parecen cosas muy interesantes. Así pues, el contenido de esta sección será principalmente técnico, pero guiado por mi curiosidad y mi interés en las cosas que vaya viendo. Esta sección además me servirá para poder publicar un poco más rápido. Finalmente, se llama Teletexto, precisamente por ser una muy buena metáfora de lo que es: resúmenes cortos de información y tecnología algo ya viejuna, pero sumamente interesante. Y sin nada más que decir, empezamos la primera edición.

Seguir leyendo

miniKanren, programación lógica diminuta

Cuando hablamos de programación lógica, lo primero que se nos viene a la mente es Prolog, un lenguaje del que ya he hablado varias veces, y que fue uno de los primeros lenguajes lógicos así como uno de los más populares. Hoy vengo a hablaros de una familia de lenguajes, llamada miniKanren, que demuestra que cualquier lenguaje de programación puede adoptar el paradigma lógico con solo 3 instrucciones. miniKanren está disponible como DSL en muchos lenguajes: Scheme, Haskell, Clojure (llamado core.logic), Python, C#, Elixir, Go, JavaScript, Rust, ... y prácticamente cualquier lenguaje.

Seguir leyendo