3 research outputs found

    A Narrowing-based Instantiation Rule for Rewriting-based Fold/Unfold Transformations

    Get PDF
    AbstractIn this paper we show how to transfer some developments done in the field of functional顡竘ogic programming (FLP) to a pure functional setting (FP). More exactly, we propose a complete fold/unfold based transformation system for optimizing lazy functional programs. Our main contribution is the definition of a safe instantiation rule which is used to enable effective unfolding steps based on rewriting. Since instantiation has been traditionally considered problematic in FP, we take advantage of previous experiences in the more general setting of FLP where instantiation is naturally embedded into an unfolding rule based on narrowing. Inspired by the so called needed narrowing strategy, our instantiation rule inherits the best properties of this refinement of narrowing. Our proposal optimizes previous approaches (that require more transformation effort) defined in the specialized literature of pure FP by anticipating bindings on unifiers used to instantiate a given program rule and by generating redexes at different positions on instantiated rules in order to enable subsequent unfolding steps. As a consequence, our correct/complete technique avoids redundant rules and preserves the natural structure of programs

    Una aproximaci贸n offline a la evaluaci贸n parcial dirigida por narrowing

    Full text link
    La evaluaci贸n parcial dirigida por narrowing (NPE: Narrowing-driven Partial Evaluation) es una t茅cnica potente para la especializaci贸n de sistemas de reescritura, i.e., para el componente de primer orden de muchos lenguajes declarativos (l贸gico) funcionales como Haskell, Curry o Toy. Los evaluadores parciales se clasifican en dos grandes categor铆as: online y offline, de acuerdo al momento temporal en que se consideran los aspectos de terminaci贸n del proceso de especializaci贸n. Los evaluadores parciales online son usualmente m谩s precisos ya que tienen m谩s informaci贸n disponible. Los evaluadores parciales offline proceden com煤nmente en dos etapas; la primera etapa procesa un programa (e.g., para identificar aquellas llamadas a funci贸n que se pueden desplegar sin riesgo de no terminaci贸n) e incluye anotaciones para guiar las computaciones parciales; entonces, una segunda etapa, la de evaluaci贸n parcial propiamente dicha, s贸lo tiene que obedecer las anotaciones y por tanto el especializador es mucho m谩s r谩pido que en la aproximaci贸n online. En esta tesis se presenta un nuevo esquema de evaluaci贸n parcial dirigido por narrowing, m谩s eficiente y que asegura la terminaci贸n siguiendo el estilo offline. Para ello, identificamos una caracterizaci贸n de programas cuasi-terminantes a los que llamamos "no crecientes". En tales programas, las computaciones por narrowing necesario presentan s贸lo un conjunto finito de t茅rminos diferentes (m贸dulo renombramiento de variables). La propiedad de la cuasi-terminaci贸n es importante toda vez que su presencia es regularmente una condici贸n suficiente para la terminaci贸n del proceso de especializaci贸n. Sin embargo, la clase de programas cuasi-terminantes es muy restrictiva, por lo que introducimos un algoritmo que acepta programas inductivamente secuenciales---una clase mucho m谩s amplia sobre la que est谩 definido el narrowing necesario---y anota aquellas partes que violan la caracterizaci贸n de programas no crecientes. Para procesar de maneRamos D铆az, JG. (2007). Una aproximaci贸n offline a la evaluaci贸n parcial dirigida por narrowing [Tesis doctoral no publicada]. Universitat Polit猫cnica de Val猫ncia. https://doi.org/10.4995/Thesis/10251/1888Palanci
    corecore