Papers
More filters
••
31 Aug 2009TL;DR: This work describes a technique that allows a fixed-point view for systems of mutually recursive datatypes using Haskell's GADTs and type families and demonstrates that this approach is widely applicable by giving several examples of generic functions for this view.
Abstract: Many datatype-generic functions need access to the recursive positions in the structure of the datatype, and therefore adopt a fixed point view on datatypes. Examples include variants of fold that traverse the data following the recursive structure, or the Zipper data structure that enables navigation along the recursive positions. However, Hindley-Milner-inspired type systems with algebraic datatypes make it difficult to express fixed points for anything but regular datatypes. Many real-life examples such as abstract syntax trees are in fact systems of mutually recursive datatypes and therefore excluded. Using Haskell's GADTs and type families, we describe a technique that allows a fixed-point view for systems of mutually recursive datatypes. We demonstrate that our approach is widely applicable by giving several examples of generic functions for this view, most prominently the Zipper.
76 citations
•
01 Jun 2010TL;DR: In this article, a computer-implemented method of automatically generating an embedded system on the basis of an original computer program, comprising analyzing the original program and compiling it into an executable to obtain data flow graphs with static data dependencies, is presented.
Abstract: A computer-implemented method of automatically generating an embedded system on the basis of an original computer program, comprising analyzing the original computer program, comprising a step of compiling the original computer program into an executable to obtain data flow graphs with static data dependencies and a step of executing the executable using test data to provide dynamic data dependencies as communication patterns between load and store operations of the original computer program, and a step of transforming the original computer program into an intermediary computer program that exhibits multi-threaded parallelism with inter-thread communication, which comprises identifying at least one static and/or dynamic data dependency that crosses a thread boundary and converting said data dependency into a buffered communication channel with read/write access.
50 citations
•
04 Apr 2011TL;DR: In this paper, a method of generating an embedded system from an original computer program (996) which embedded system (4999) provides a parallellized hardware (4598, 4599) and software (4599) implementation of the original computer programs (996), which satisfies one or more criteria regarding hardware constraints of the embedded system.
Abstract: A method of generating an embedded system (4999) from an original computer program (996) which embedded system (4999) provides a parallellized hardware (4598) and software (4599) implementation of the original computer program (996), which parallellized implementation (4598, 4599) satisfies one or more criteria regarding hardware constraints of the embedded system (4999). The system provides partitioning of functionality from the original computer program (996) using structural and behavioral program models and detects streaming and memory dependencies to improve the partitioning, relying on added indications of source lines and variables in said original computer program to relate partitions and dependencies in the program model with locations in the original program source code.
35 citations
••
04 Sep 2009TL;DR: It is shown that the enumeration function can be used to generate the terms of simply typed lambda calculus and the improved Spine is described, which allows for the definition of generic producers for existentials.
Abstract: We use generic programming techniques to generate well-typed lambda terms. We encode well-typed terms by means of generalized algebraic datatypes (GADTs) and existential types. The Spine approach to generic programming supports GADTs, but it does not support the definition of generic producers for existentials. We describe how to extend the Spine approach to support existentials and we use the improved Spine to define a generic enumeration function. We show that the enumeration function can be used to generate the terms of simply typed lambda calculus.
22 citations
•
28 May 2013TL;DR: In this article, a method for translating a function in a computer programming language into a non-native instruction set, as part of a program that is otherwise in a native instruction set computer program, is presented.
Abstract: Method and system for translating a function in a computer programming language into a non-native instruction set, as part of a program that is otherwise in a native instruction set computer program. The method comprises translating the function into the non-native instruction set, prefixing the translated function with a preamble in the native instruction set format that implements the required conversion and non-native instruction set interpretation when called from native code segments, and incorporating into the translated function and/or the preamble a means of identifying the function as being in the non-native instruction set.
9 citations
Authors
Showing all 10 results
Name | H-index | Papers | Citations |
---|---|---|---|
Wouter Swierstra | 12 | 57 | 898 |
Alexey Rodriguez Yakushev | 5 | 5 | 173 |
Paul Stravers | 5 | 7 | 107 |
Andrei Sergeevich Terechko | 3 | 4 | 29 |
Martijn Rutten | 3 | 4 | 92 |
Maurice Kastelijn | 3 | 3 | 90 |
Eijndhoven Jos Van | 3 | 4 | 64 |
Alexey Rodriguez | 2 | 2 | 37 |
Jos van Eijndhoven | 2 | 2 | 37 |
Tommy Kamps | 2 | 2 | 55 |