Views: a way for pattern matching to cohabit with data abstraction
POPL '87 Proceedings of the 14th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Qualified types: theory and practice
Qualified types: theory and practice
SOSP '95 Proceedings of the fifteenth ACM symposium on Operating systems principles
Specifying representations of machine instructions
ACM Transactions on Programming Languages and Systems (TOPLAS)
Initial Algebra Semantics and Continuous Algebras
Journal of the ACM (JACM)
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
PADS: a domain-specific language for processing ad hoc data
Proceedings of the 2005 ACM SIGPLAN conference on Programming language design and implementation
Strongly typed memory areas programming systems-level data structures in a functional language
Proceedings of the 2006 ACM SIGPLAN workshop on Haskell
SysObjC: C extension for development of object-oriented operating systems
Proceedings of the 3rd workshop on Programming languages and operating systems: linguistic support for modern operating systems
Type inference for unboxed types and first class mutability
Proceedings of the 3rd workshop on Programming languages and operating systems: linguistic support for modern operating systems
Proceedings of the 3rd workshop on Programming languages and operating systems: linguistic support for modern operating systems
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
Sound and Complete Type Inference for a Systems Programming Language
APLAS '08 Proceedings of the 6th Asian Symposium on Programming Languages and Systems
Matchete: paths through the pattern matching jungle
PADL'08 Proceedings of the 10th international conference on Practical aspects of declarative languages
Automatic transformation of bit-level C code to support multiple equivalent data layouts
CC'08/ETAPS'08 Proceedings of the Joint European Conferences on Theory and Practice of Software 17th international conference on Compiler construction
Applications, implementation and performance evaluation of bit stream programming in erlang
PADL'07 Proceedings of the 9th international conference on Practical Aspects of Declarative Languages
Synchronous digital circuits as functional programs
ACM Computing Surveys (CSUR)
Hi-index | 0.00 |
This paper explains how the high-level treatment of datatypes in functional languages—using features like constructor functions and pattern matching—can be made to coexist with bitdata. We use this term to describe the bit- level representations of data that are required in the construction of many different applications, including operating systems, device drivers, and assemblers. We explain our approach as a combination of two language extensions, each of which could potentially be adapted to any modern functional language. The first adds simple and elegant constructs for manipulating raw bitfield values, while the second provides a view-like mechanism for defining distinct new bitdata types with fine-control over the underlying representation. Our design leverages polymorphic type inference, as well as techniques for improvement of qualified types, to track both the type and the width of bitdata structures. We have implemented our extensions in a small functional language interpreter, and used it to show that our approach can handle a wide range of practical bitdata types.