The C programming language
Specifying representations of machine instructions
ACM Transactions on Programming Languages and Systems (TOPLAS)
H/Direct: a binary foreign language interface for Haskell
ICFP '98 Proceedings of the third ACM SIGPLAN international conference on Functional programming
Building reliable, high-performance communication systems from components
Proceedings of the seventeenth ACM symposium on Operating systems principles
The C++ Programming Language, Third Edition
The C++ Programming Language, Third Edition
DataScript - A Specification and Scripting Language for Binary Data
GPCE '02 Proceedings of the 1st ACM SIGPLAN/SIGSOFT conference on Generative Programming and Component Engineering
ATEC '02 Proceedings of the General Track of the annual conference on USENIX Annual Technical Conference
From ML to Ada: Strongly-typed language interoperability via source translation
Journal of Functional Programming
PADS: a domain-specific language for processing ad hoc data
Proceedings of the 2005 ACM SIGPLAN conference on Programming language design and implementation
A principled approach to operating system construction in Haskell
Proceedings of the tenth ACM SIGPLAN international conference on Functional programming
High-level views on low-level representations
Proceedings of the tenth ACM SIGPLAN international conference on Functional programming
Proceedings of the tenth ACM SIGPLAN international conference on Functional programming
A type-preserving closure conversion in haskell
Haskell '07 Proceedings of the ACM SIGPLAN workshop on Haskell workshop
Writing systems software in a functional language: an experience report
Proceedings of the 4th workshop on Programming languages and operating systems
Language and program design for functional dependencies
Proceedings of the first ACM SIGPLAN symposium on Haskell
APLAS '08 Proceedings of the 6th Asian Symposium on Programming Languages and Systems
Instance chains: type class programming without overlapping instances
Proceedings of the 15th ACM SIGPLAN international conference on Functional programming
Programming languages for high-assurance autonomous vehicles: extended abstract
Proceedings of the ACM SIGPLAN 2014 Workshop on Programming Languages meets Program Verification
Hi-index | 0.00 |
Modern functional languages offer several attractive features to support development of reliable and secure software. However, in our efforts to use Haskell for systems programming tasks-including device driver and operating system construction-we have also encountered some significant gaps in functionality. As a result, we have been forced, either to code some non-trivial components in more traditional but unsafe languages like C or assembler, or else to adopt aspects of the foreign function interface that compromise on strong typing and type safety.In this paper, we describe how we have filled one of these gaps by extending a Haskell-like language with facilities for working directly with low-level, memory-based data structures. Using this extension, we are able to program a wide range of examples, including hardware interfaces, kernel data structures, and operating system APIs. Our design allows us to address concerns about representation, alignment, and placement (in virtual or physical address spaces) that are critical in some systems applications, but clearly beyond the scope of most existing functional languages.Our approach leverages type system features that are wellknown and widely supported in existing Haskell implementations, including kinds, multiple parameter type classes, functional dependencies, and improvement. One interesting feature is the use of a syntactic abbreviation that makes it easy to define and work with functions at the type level.