Stream Fusion is a system for removing intermediate list data structures from functional programs, in particular Haskell. This entry adapts stream fusion to Isabelle/HOL and its code generator. We define stream types for finite and possibly infinite lists and stream versions for most of the fusible list functions in the theories List and Coinductive-List, and prove them cor-rect with respect to the conversion functions between lists and streams. The Stream Fusion transformation itself is implemented as a simproc in the pre-processor of the code generator. Brian Huffman’s AFP entry [3] formalises stream fusion in HOLCF for the domain of lazy lists to prove the GHC compiler rewrite rules correct. In contrast, this work enables Isabelle’s code...
Fusion is one of the most important code transformations as it has the potential to substantially op...
This paper presents a new optimization tech-nique for programming language Clojure based on the stan...
In functional languages intermediate data structures are often used as glue to connect separate par...
In functional programming it is common practice to build modular programs by composing functions whe...
In functional programming it is common practice to build modular programs by composing functions whe...
Stream Fusion, a popular deforestation technique in the Haskell community, cannot fuse the concatMap...
Abstract. We present the meta-theory behind the code generation fa-cilities of Isabelle/HOL. To brid...
There are a number of approaches for eliminating intermediate data structures in functional programs...
There are a number of approaches for eliminating intermediate data structures in functional programs...
Existing approaches to array fusion can deal with straight-line pro-ducer consumer pipelines, but ca...
In functional languages intermediate data structures are often used as glue to connect separate part...
This set of theories presents an Isabelle/HOL formalisation of stream processing components introduc...
In order to solve a long-standing problem with list fusion, a new compiler transformation, “Call Ari...
We propose a new algorithm for fusion transformation that allows both stacks and accumulating parame...
Short-cut fusion is a program transformation technique that uses a single local transformation - cal...
Fusion is one of the most important code transformations as it has the potential to substantially op...
This paper presents a new optimization tech-nique for programming language Clojure based on the stan...
In functional languages intermediate data structures are often used as glue to connect separate par...
In functional programming it is common practice to build modular programs by composing functions whe...
In functional programming it is common practice to build modular programs by composing functions whe...
Stream Fusion, a popular deforestation technique in the Haskell community, cannot fuse the concatMap...
Abstract. We present the meta-theory behind the code generation fa-cilities of Isabelle/HOL. To brid...
There are a number of approaches for eliminating intermediate data structures in functional programs...
There are a number of approaches for eliminating intermediate data structures in functional programs...
Existing approaches to array fusion can deal with straight-line pro-ducer consumer pipelines, but ca...
In functional languages intermediate data structures are often used as glue to connect separate part...
This set of theories presents an Isabelle/HOL formalisation of stream processing components introduc...
In order to solve a long-standing problem with list fusion, a new compiler transformation, “Call Ari...
We propose a new algorithm for fusion transformation that allows both stacks and accumulating parame...
Short-cut fusion is a program transformation technique that uses a single local transformation - cal...
Fusion is one of the most important code transformations as it has the potential to substantially op...
This paper presents a new optimization tech-nique for programming language Clojure based on the stan...
In functional languages intermediate data structures are often used as glue to connect separate par...