20 research outputs found

    Especificación e implementación de un lenguaje de programación lógica con tipos

    Get PDF
    Se presenta la especificación de un lenguaje de programación en lógica con tipos polimorfos, junto con el desarrollo de un intérprete para el mismo en PROLOG. El polimorfismo permite, entre otras cosas, programar procedimientos genéricos, con argumentos que no tienen un tipo declarado estáticamente. La incorporación de un sistema de tipos mejora el soporte de abstracción provisto por los lenguajes de programación lógica. Los tipos proveen un lenguaje claro para la especificación de interfases y herramientas para la depuración algorítmica Esta información puede utilizarse para la optimización de código y es de una ayuda inestimable para detectar errores de programación en tiempo de compilación.Eje: Lenguaje de programaciónRed de Universidades con Carreras en Informática (RedUNCI

    Especificación e implementación de un lenguaje de programación lógica con tipos

    Get PDF
    Se presenta la especificación de un lenguaje de programación en lógica con tipos polimorfos, junto con el desarrollo de un intérprete para el mismo en PROLOG. El polimorfismo permite, entre otras cosas, programar procedimientos genéricos, con argumentos que no tienen un tipo declarado estáticamente. La incorporación de un sistema de tipos mejora el soporte de abstracción provisto por los lenguajes de programación lógica. Los tipos proveen un lenguaje claro para la especificación de interfases y herramientas para la depuración algorítmica Esta información puede utilizarse para la optimización de código y es de una ayuda inestimable para detectar errores de programación en tiempo de compilación.Eje: Lenguaje de programaciónRed de Universidades con Carreras en Informática (RedUNCI

    Offline Specialisation in Prolog Using a Hand-Written Compiler Generator

    No full text
    The so called "cogen approach" to program specialisation, writing a compiler generator instead of a specialiser, has been used with considerable success in partial evaluation of both functional and imperative languages. This paper demonstrates that the "cogen" approach is also applicable to the specialisation of logic programs (called partial deduction when applied to pure logic programs) and leads to effective specialisers. Moreover, using good binding-time annotations, the speed-ups of the specialised programs are comparable to the speed-ups obtained with online specialisers. The paper first develops a generic approach to offline partial deduction and then a specific offline partial deduction method, leading to the offline system LIX for pure logic programs. While this is a usable specialiser by itself, its specialisation strategy is used to develop the "cogen" system LOGEN. Given a program, a specification of what inputs will be static, and an annotation specifying which calls should be unfolded, LOGEN generates a specialised specialiser for the program at hand. Running this specialiser with particular values for the static inputs results in the specialised program. While this requires two steps instead of one, the efficiency of the specialisation process is improved in situations where the same program is specialised multiple times. The paper also presents and evaluates an automatic binding-time analysis that is able to derive the annotations. While the derived annotations are still suboptimal compared to hand-crafted ones, they enable non-expert users to use the LOGEN system in a fully automated way Finally, LOGEN is extended so as to directly support a large part of Prolog's declarative and non-declarative features and so as to be able to perform so called mixline specialisations. In mixline specialisation some unfolding decisions depend on the outcome of tests performed at specialisation time instead of being hardwired into the specialiser

    On the unification free prolog programs

    Full text link
    corecore