We present a higher-order module system for the purely functional data-parallel array language Futhark. The module language has the property that it is completely eliminated at compile time, yet it serves as a powerful tool for organizing libraries and complete programs. The presentation includes a static and a dynamic semantics for the language in terms of, respectively, a static type system and a provably terminating elaboration of terms into terms of an underlying target language. The development is formalised in Coq using a novel encoding of semantic objects based on products, sets, and finite maps. The module language features a unified treatment of module type abstraction and core language polymorphism and is rich enough for expressing practical forms of module composition.
CITATION STYLE
Elsman, M., Henriksen, T., Annenkov, D., & Oancea, C. E. (2018). Static interpretation of higher-order modules in futhark: Functional gpu programming in the large. Proceedings of the ACM on Programming Languages, 2(ICFP). https://doi.org/10.1145/3236792
Mendeley helps you to discover research relevant for your work.