Export Citations
Save this search
Please login to be able to save your searches and receive alerts for new content matching your search criteria.
- research-articleSeptember 2013
A nanopass framework for commercial compiler development
ICFP '13: Proceedings of the 18th ACM SIGPLAN international conference on Functional programmingPages 343–350https://doi.org/10.1145/2500365.2500618Contemporary compilers must typically handle sophisticated high-level source languages, generate efficient code for multiple hardware architectures and operating systems, and support source-level debugging, profiling, and other program development ...
Also Published in:
ACM SIGPLAN Notices: Volume 48 Issue 9 - research-articleSeptember 2013
Functional geometry and the Traité de Lutherie: functional pearl
ICFP '13: Proceedings of the 18th ACM SIGPLAN international conference on Functional programmingPages 123–132https://doi.org/10.1145/2500365.2500617We describe a functional programming approach to the design of outlines of eighteenth-century string instruments. The approach is based on the research described in François Denis's book, Traité de lutherie. The programming vernacular for Denis's ...
Also Published in:
ACM SIGPLAN Notices: Volume 48 Issue 9 - research-articleSeptember 2013
Experience report: applying random testing to a base type environment
ICFP '13: Proceedings of the 18th ACM SIGPLAN international conference on Functional programmingPages 351–356https://doi.org/10.1145/2500365.2500616As programmers, programming in typed languages increases our confidence in the correctness of our programs. As type system designers, soundness proofs increase our confidence in the correctness of our type systems. There is more to typed languages than ...
Also Published in:
ACM SIGPLAN Notices: Volume 48 Issue 9 - research-articleSeptember 2013
Experience report: functional programming of mHealth applications
ICFP '13: Proceedings of the 18th ACM SIGPLAN international conference on Functional programmingPages 357–362https://doi.org/10.1145/2500365.2500615A modular framework for the development of medical applications that promotes deterministic, robust and correct code is presented. The system is based on the portable Gambit Scheme programming language and provides a flexible cross-platform environment ...
Also Published in:
ACM SIGPLAN Notices: Volume 48 Issue 9 - research-articleSeptember 2013
Using circular programs for higher-order syntax: functional pearl
ICFP '13: Proceedings of the 18th ACM SIGPLAN international conference on Functional programmingPages 257–262https://doi.org/10.1145/2500365.2500614This pearl presents a novel technique for constructing a first-order syntax tree directly from a higher-order interface. We exploit circular programming to generate names for new variables, resulting in a simple yet efficient method. Our motivating ...
Also Published in:
ACM SIGPLAN Notices: Volume 48 Issue 9 -
- research-articleSeptember 2013
Fun with semirings: a functional pearl on the abuse of linear algebra
ICFP '13: Proceedings of the 18th ACM SIGPLAN international conference on Functional programmingPages 101–110https://doi.org/10.1145/2500365.2500613Describing a problem using classical linear algebra is a very well-known problem-solving technique. If your question can be formulated as a question about real or complex matrices, then the answer can often be found by standard techniques.
It's less ...
Also Published in:
ACM SIGPLAN Notices: Volume 48 Issue 9 - research-articleSeptember 2013
Simple and compositional reification of monadic embedded languages
ICFP '13: Proceedings of the 18th ACM SIGPLAN international conference on Functional programmingPages 299–304https://doi.org/10.1145/2500365.2500611When writing embedded domain specific languages in Haskell, it is often convenient to be able to make an instance of the Monad class to take advantage of the do-notation and the extensive monad libraries. Commonly it is desirable to compile such ...
Also Published in:
ACM SIGPLAN Notices: Volume 48 Issue 9 - keynoteSeptember 2013
Interactive programming with dependent types
ICFP '13: Proceedings of the 18th ACM SIGPLAN international conference on Functional programmingPages 1–2https://doi.org/10.1145/2500365.2500610In dependently typed languages run-time values can appear in types, making it possible to give programs more precise types than in languages without dependent types. This can range from keeping track of simple invariants like the length of a list, to ...
Also Published in:
ACM SIGPLAN Notices: Volume 48 Issue 9 - research-articleSeptember 2013
Structural recursion for querying ordered graphs
ICFP '13: Proceedings of the 18th ACM SIGPLAN international conference on Functional programmingPages 305–318https://doi.org/10.1145/2500365.2500608Structural recursion, in the form of, for example, folds on lists and catamorphisms on algebraic data structures including trees, plays an important role in functional programming, by providing a systematic way for constructing and manipulating ...
Also Published in:
ACM SIGPLAN Notices: Volume 48 Issue 9 - research-articleSeptember 2013
Automatic SIMD vectorization for Haskell
ICFP '13: Proceedings of the 18th ACM SIGPLAN international conference on Functional programmingPages 25–36https://doi.org/10.1145/2500365.2500605Expressing algorithms using immutable arrays greatly simplifies the challenges of automatic SIMD vectorization, since several important classes of dependency violations cannot occur. The Haskell programming language provides libraries for programming ...
Also Published in:
ACM SIGPLAN Notices: Volume 48 Issue 9 - research-articleSeptember 2013
Calculating threesomes, with blame
ICFP '13: Proceedings of the 18th ACM SIGPLAN international conference on Functional programmingPages 417–428https://doi.org/10.1145/2500365.2500603Coercions and threesomes both enable a language to combine static and dynamic types while avoiding cast-based space leaks. Coercion calculi elegantly specify space-efficient cast behavior, even when augmented with blame tracking, but implementing their ...
Also Published in:
ACM SIGPLAN Notices: Volume 48 Issue 9 - research-articleSeptember 2013
The constrained-monad problem
ICFP '13: Proceedings of the 18th ACM SIGPLAN international conference on Functional programmingPages 287–298https://doi.org/10.1145/2500365.2500602In Haskell, there are many data types that would form monads were it not for the presence of type-class constraints on the operations on that data type. This is a frustrating problem in practice, because there is a considerable amount of support and ...
Also Published in:
ACM SIGPLAN Notices: Volume 48 Issue 9 - research-articleSeptember 2013
Exploiting vector instructions with generalized stream fusion
ICFP '13: Proceedings of the 18th ACM SIGPLAN international conference on Functional programmingPages 37–48https://doi.org/10.1145/2500365.2500601Stream fusion is a powerful technique for automatically transforming high-level sequence-processing functions into efficient implementations. It has been used to great effect in Haskell libraries for manipulating byte arrays, Unicode text, and unboxed ...
Also Published in:
ACM SIGPLAN Notices: Volume 48 Issue 9 - research-articleSeptember 2013
Unifying refinement and hoare-style reasoning in a logic for higher-order concurrency
ICFP '13: Proceedings of the 18th ACM SIGPLAN international conference on Functional programmingPages 377–390https://doi.org/10.1145/2500365.2500600Modular programming and modular verification go hand in hand, but most existing logics for concurrency ignore two crucial forms of modularity: *higher-order functions*, which are essential for building reusable components, and *granularity abstraction*, ...
Also Published in:
ACM SIGPLAN Notices: Volume 48 Issue 9 - research-articleSeptember 2013
Programming with permissions in Mezzo
ICFP '13: Proceedings of the 18th ACM SIGPLAN international conference on Functional programmingPages 173–184https://doi.org/10.1145/2500365.2500598We present Mezzo, a typed programming language of ML lineage. Mezzo is equipped with a novel static discipline of duplicable and affine permissions, which controls aliasing and ownership. This rules out certain mistakes, including representation ...
Also Published in:
ACM SIGPLAN Notices: Volume 48 Issue 9 - research-articleSeptember 2013
Productive coprogramming with guarded recursion
ICFP '13: Proceedings of the 18th ACM SIGPLAN international conference on Functional programmingPages 197–208https://doi.org/10.1145/2500365.2500597Total functional programming offers the beguiling vision that, just by virtue of the compiler accepting a program, we are guaranteed that it will always terminate. In the case of programs that are not intended to terminate, e.g., servers, we are ...
Also Published in:
ACM SIGPLAN Notices: Volume 48 Issue 9 - research-articleSeptember 2013
Modular and automated type-soundness verification for language extensions
ICFP '13: Proceedings of the 18th ACM SIGPLAN international conference on Functional programmingPages 331–342https://doi.org/10.1145/2500365.2500596Language extensions introduce high-level programming constructs that protect programmers from low-level details and repetitive tasks. For such an abstraction barrier to be sustainable, it is important that no errors are reported in terms of generated ...
Also Published in:
ACM SIGPLAN Notices: Volume 48 Issue 9 - research-articleSeptember 2013
Optimising purely functional GPU programs
ICFP '13: Proceedings of the 18th ACM SIGPLAN international conference on Functional programmingPages 49–60https://doi.org/10.1145/2500365.2500595Purely functional, embedded array programs are a good match for SIMD hardware, such as GPUs. However, the naive compilation of such programs quickly leads to both code explosion and an excessive use of intermediate data structures. The resulting slow-...
Also Published in:
ACM SIGPLAN Notices: Volume 48 Issue 9 - research-articleSeptember 2013
The bedrock structured programming system: combining generative metaprogramming and hoare logic in an extensible program verifier
ICFP '13: Proceedings of the 18th ACM SIGPLAN international conference on Functional programmingPages 391–402https://doi.org/10.1145/2500365.2500592We report on the design and implementation of an extensible programming language and its intrinsic support for formal verification. Our language is targeted at low-level programming of infrastructure like operating systems and runtime systems. It is ...
Also Published in:
ACM SIGPLAN Notices: Volume 48 Issue 9 - research-articleSeptember 2013
Wellfounded recursion with copatterns: a unified approach to termination and productivity
ICFP '13: Proceedings of the 18th ACM SIGPLAN international conference on Functional programmingPages 185–196https://doi.org/10.1145/2500365.2500591In this paper, we study strong normalization of a core language based on System F-omega which supports programming with finite and infinite structures. Building on our prior work, finite data such as finite lists and trees are defined via constructors ...
Also Published in:
ACM SIGPLAN Notices: Volume 48 Issue 9