Recursive functions and data types pose significant challenges for a Haskell-to-hardware compiler. Directly translating these structures yields infinitely large circuits; a subtler approach is required. We propose a sequence of abstraction-lowering transformations that exposes time and memory in a Haskell program, producing a simpler form for hardware translation. This paper outlines these transformations on a specific example; future research will focus on generalizing and automating them in our group's compiler
Abstract. Programs in languages such as Haskell are often datatype-centric and make extensive use of...
Expressing algorithms using immutable arrays greatly simplifies the challenges of automatic SIMD vec...
Programming coarse-grain reconfigurable arrays (CGRAs) is a challenging task. In this work, we explo...
Recursive functions and data types pose significant chal-lenges for a Haskell-to-hardware compiler. ...
Abstraction in hardware description languages stalled at the register-transfer level decades ago, ye...
We present an algorithm for unrolling recursion in the Haskell functional language. Adapted from a s...
To provide high performance at practical power levels, tomorrow’s chips will have to consist primari...
Through a series of mechanical, semantics-preserving transformations, I show how a three-line recurs...
Through a series of mechanical transformation, I show how a three-line recursive Haskell function (F...
We present a translation from programs expressed in a functional IR into dataflow networks as an int...
The Haskell programming language is an active laboratory for cutting edge ideas. Early in the evolut...
Thesis (Ph. D.)--University of Rochester. Department of Computer Science, 2019.The Haskell programmi...
Lava is a system for designing, specifying, verifying and implementing hardware. It is embedded in t...
This paper introduces CλaSH, a novel hardware specification environment, by discussing several non-t...
Writing concurrent programs in languages that lack explicit support for concurrency can often be awk...
Abstract. Programs in languages such as Haskell are often datatype-centric and make extensive use of...
Expressing algorithms using immutable arrays greatly simplifies the challenges of automatic SIMD vec...
Programming coarse-grain reconfigurable arrays (CGRAs) is a challenging task. In this work, we explo...
Recursive functions and data types pose significant chal-lenges for a Haskell-to-hardware compiler. ...
Abstraction in hardware description languages stalled at the register-transfer level decades ago, ye...
We present an algorithm for unrolling recursion in the Haskell functional language. Adapted from a s...
To provide high performance at practical power levels, tomorrow’s chips will have to consist primari...
Through a series of mechanical, semantics-preserving transformations, I show how a three-line recurs...
Through a series of mechanical transformation, I show how a three-line recursive Haskell function (F...
We present a translation from programs expressed in a functional IR into dataflow networks as an int...
The Haskell programming language is an active laboratory for cutting edge ideas. Early in the evolut...
Thesis (Ph. D.)--University of Rochester. Department of Computer Science, 2019.The Haskell programmi...
Lava is a system for designing, specifying, verifying and implementing hardware. It is embedded in t...
This paper introduces CλaSH, a novel hardware specification environment, by discussing several non-t...
Writing concurrent programs in languages that lack explicit support for concurrency can often be awk...
Abstract. Programs in languages such as Haskell are often datatype-centric and make extensive use of...
Expressing algorithms using immutable arrays greatly simplifies the challenges of automatic SIMD vec...
Programming coarse-grain reconfigurable arrays (CGRAs) is a challenging task. In this work, we explo...