28 research outputs found

    Fusing Generic Functions

    Get PDF
    Contains fulltext : 60458.pdf (author's version ) (Open Access)Generic programming is accepted by the functional programming community as a valuable tool for program development. Several functional languages have adopted the generic scheme of type-indexed values. This scheme works by specialization of a generic function to a concrete type. However, the generated code is extremely inefficient compared to its hand-written counterpart. The performance penalty is so big that the practical usefulness of generic programming is compromised. In this paper we present a optimization algorithm that is able to completely eliminate the overhead intoduced by the specialization scheme for a large class of generic functions. The presented technique is based on consumer-producer elimination as exploited by fusion, a standard general purpose optimization method. We show that our algorithm is able to optimize many practical examples of generic functions

    Efficient Generic Functional Programming

    Get PDF
    Contains fulltext : 60606.pdf (author's version ) (Open Access)Generic functions are defined by induction on the structural representation of types. As a consequence, by defining just a single generic operation, one acquires this operation over any particular data type. An instance on a specific type is generated by interpretation of the type's structure. A direct translation leads to extremely inefficient code that involves many conversions between types and their structural representations. In this paper we present an optimization technique based on compile-time symbolic evaluation. We prove that the optimization removes the overhead of the generated code for a considerable class of generic functions. The proof uses typing to identify intermediate data structures that should be eliminated. In essence, the output after optimization is similar to hand-written code

    Graph rewriting and functional languages

    No full text

    Strictness Analysis via Resource Typing

    Get PDF
    Contains fulltext : 36506.pdf (preprint version ) (Open Access

    Guaranteeing safe destructive updates through a type system with uniqueness information for graphs

    Get PDF
    Contains fulltext : 121935.pdf (preprint version ) (Open Access

    Characterizing novice difficulties in program composition and aligning tasks for formative assessment

    No full text
    This study reports on an in-depth research into difficulties endured throughout disparate stages of students’ programming development, pursue a practical method to determine a student’s development stage, and propose specific interventions to remediate these difficulties tuned to each stage. The perceived difficulties which novice programmers endure during code composition, combining multi-faceted data from observations to students’ perceptions via interviews, think aloud, task ranking, and task rating were collected in a previous study. These have been anonymized and are publicly available in the DANS EASY archive: https://doi.org/10.17026/dans-xnn-x5p3. This data was further analyzed for performance (correctness, completeness, SOLO, Neo-Piagetian stages) as well as construct (combinations) used. This data set includes the new data collected from the second analysis of the data from the previous study, as well as (R) scripts used for quantitative analysis

    Unraveling difficulties in code composition tasks

    No full text
    This study reports on an in-depth research into the perceived difficulties which novice programmers endure during code composition, combining multi-faceted data from observations to students’ perceptions via interviews, think aloud, task ranking, and task rating. In addition to analysis of the above, The students solutions were analyzed for performance (correctness, completeness, SOLO, Neo-Piagetian stages) as well as construct (combinations) used. The data set includes transciptions of all the interviews, the data collected from task rating and ranking, and students solutions as well as the analysis of this data

    Unraveling difficulties in code composition tasks

    No full text
    This study reports on an in-depth research into the perceived difficulties which novice programmers endure during code composition, combining multi-faceted data from observations to students’ perceptions via interviews, think aloud, task ranking, and task rating. In addition to analysis of the above, The students solutions were analyzed for performance (correctness, completeness, SOLO, Neo-Piagetian stages) as well as construct (combinations) used. The data set includes transciptions of all the interviews, the data collected from task rating and ranking, and students solutions as well as the analysis of this data
    corecore