Restituir


Refal ( "lenguaje algorítmico de funciones recursivas" ; ruso : РЕФАЛ ) "es un lenguaje de programación funcional orientado a cálculos simbólicos", que incluye " procesamiento de cadenas , traducción de idiomas e inteligencia artificial ". [1] Es uno de los miembros más antiguos de esta familia, concebido por primera vez en 1966 como una herramienta teórica, y la primera implementación apareció en 1968. Refal tenía la intención de combinar la simplicidad matemática con la practicidad para escribir programas grandes y sofisticados.

Uno de los primeros lenguajes de programación funcional en hacerlo y, a diferencia de Lisp de su época, Refal se basa en la coincidencia de patrones . Su coincidencia de patrones funciona junto con la reescritura de términos .

La estructura de datos básica de Lisp y Prolog es una lista lineal construida por la operación de contras de manera secuencial, por lo tanto, con O (n) acceso al n- ésimo elemento de la lista. Las listas de Refal se crean y escanean desde ambos extremos, y la coincidencia de patrones funciona tanto para las listas anidadas como para las de nivel superior. En efecto, la estructura de datos básica de Refal es un árbol en lugar de una lista . Esto brinda libertad y conveniencia en la creación de estructuras de datos mientras se utilizan solo mecanismos de control matemáticamente simples de coincidencia y sustitución de patrones.

El programa anterior incluye dos funciones llamadas Go y Hello. Una función se escribe como el nombre de la función seguido del cuerpo de la función entre llaves. La función Go está marcada como el punto de entrada del programa usando la directiva $ ENTRY.

Uno podría pensar en las expresiones en los cuerpos de funciones como "llamadas" de funciones en una sintaxis similar a Lisp . Por ejemplo, la función Hola parece llamar a la función incorporada de Prout con la cadena 'Hola mundo' como argumento. Sin embargo, el significado y el mecanismo de la llamada son bastante diferentes. Para ilustrar la diferencia, considere la siguiente función que determina si una cuerda es un palíndromo .

Este ejemplo muestra una función con un cuerpo más complejo, que consta de cuatro frases (cláusulas). Una oración comienza con un patrón seguido de un signo igual seguido de una expresión general en el lado derecho. Una oración se termina con un punto y coma. Por ejemplo, el patrón de la segunda oración de la función es "s.1" y la expresión es "Verdadero".