ACM Home Page
Please provide us with feedback. Feedback
Strongly typed memory areas programming systems-level data structures in a functional language
Full text PdfPdf (257 KB)
Source Haskell archive
Proceedings of the 2006 ACM SIGPLAN workshop on Haskell table of contents
Portland, Oregon, USA
SESSION: Session 2 table of contents
Pages: 72 - 83  
Year of Publication: 2006
ISBN:1-59593-489-8
Authors
Iavor S. Diatchki  Oregon Health & Science University, Portland, Oregon
Mark P. Jones  Oregon Health & Science University, Portland, Oregon
Sponsors
SIGPLAN: ACM Special Interest Group on Programming Languages
ACM: Association for Computing Machinery
Publisher
ACM  New York, NY, USA
Bibliometrics
Downloads (6 Weeks): 6,   Downloads (12 Months): 49,   Citation Count: 2
Additional Information:

abstract   references   cited by   index terms   collaborative colleagues  

Tools and Actions: Request Permissions Request Permissions    Review this Article  
DOI Bookmark: Use this link to bookmark this Article: http://doi.acm.org/10.1145/1159842.1159851
What is a DOI?

ABSTRACT

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.


REFERENCES

Note: OCR errors may be found in this Reference List extracted from the full text article. ACM has opted to expose the complete List rather than only correct and linked references.

 
1
 
2
Matthias Blume. No-Longer-Foreign: Teaching an ML compiler to speak C "natively". In BABEL 2001: 1st Workshop on Multi-Language Infrastructure and Interoperability, September 2001.
3
4
5
6
 
7
Kathleen Fisher, Ricardo Pucella, and John Reppy. A framework for interoperability. In BABEL 2001: 1st Workshop on Multi-Language Infrastructure and Interoperability, September 2001.
 
8
Daniel Joeseph Grossman. Safe Programming at the C Level of Abstraction. PhD thesis, Cornell University, 2003.
9
 
10
Robert Harper, Peter Lee, and Frank Pfenning. The fox project: Advanced language technology for extensible systems. Technical Report CMU-CS-98-107, School of Computer Science, Carnegie Mellon University, January 1998.
 
11
Intel Corporation. IA-32 Intel Architecture Software Developer's Manual, Volumes 1-3. Available online from http://www.intel.com/design/Pentium4/documentation.htm.
 
12
 
13
Mark P. Jones. Simplifying and improving qualified types. Technical Report YALEU/DCS/RR-1040, Yale University, New Haven, Connecticut, USA, June 1994.
 
14
 
15
Mark P. Jones, Magnus Carlsson, and Johan Nordlander. Composed, and in Control: Programming the Timber Robot. Technical report, OGI School of Science & Engineering at OHSU, August 2002.
 
16
Simon Peyton Jones, editor. Haskell 98 Language and Libraries, The Revised Report. Cambridge University Press, 2003.
 
17
 
18
Xavier Leroy. CamlIDL User's Manual (Version 1.05). INRIA Rocquencourt.
19
 
20
Matthias Neubauer, Peter Thiemann, Martin Gasbichler, and Michael Sperber. A functional notation for functional dependencies. In Proceedings of The 2001 ACM SIGPLAN Haskell Workshop, Firenze, Italy, September 2001.
21
 
22
 
23
Cyclone Team. Cyclone User's Manual (0.8.2), August 2004.
 
24
Haskell FFI Team. Haskell 98 Foreign Function Interface (1.0), 2003.
 
25
L4ka Team. L4 eXperimental Kernel Reference Manual, January 2005. Available online from http://l4ka.org/.
 
26


Collaborative Colleagues:
Iavor S. Diatchki: colleagues
Mark P. Jones: colleagues