Abstract
This paper presents the design and implementation of Glasgow distributed Haskell (GdH), a non-strict distributed functional language. The language is intended for constructing scalable, reliable distributed applications, and is Haskell’98 compliant, being a superset of both Concurrent Haskell and Glasgow parallel Haskell (GpH).
GdH distributes both pure and impure threads across multiple Processing Elements (PEs), each location is made explicit so a program can use resources unique to PE, and objects including threads can be created on a named PE. The location that uniquely owns a resource is identified by a method of a new Immobile type class. Impure threads communicate and synchronise explicitly to co-ordinate actions on the distributed state, but both pure and impure threads synchronise and communicate implicitly to share data. Limited support for fault tolerant programming is provided by distributed exception handling. The language constructs are illustrated by example, and two demonstration programs give a flavour of GdH programming.
Although many distributed functional languages have been designed, relatively few have robust implementations. The GdH implementation fuses and extends two mature implementation technologies: the GUM runtime system (RTS) of GpH and the RTS for Concurrent Haskell. The fused RTSis extended with a small number of primitives from which more sophisticated constructs can be constructed, and libraries are adapted to the distributed context.
Supported by research grant GR/M 55633 from UK’s EPSRC and APART fellowship 624 from the Austrian Academy of Sciences.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
References
M. Chakravarty, Y. Guo, and M. Köhler. Distributed Haskell: Goffin on the Internet. In Third Fuji International Symposium on Functional and Logic Programming, pages 80–97, 1998.
H. Cejtin, S. Jagganathan, and R. Kelsey. Higher-order distributed objects. ACM Trans. On Programming Languages and Systems (TOPLAS), 17(1), September 1995.
M.C. Daconta, A. Saganich, E. Monk, and M. Snyder. Java 1.2 and JavaScript for Cand C++ Programmers. John Wiley & Sons, New York, 1998.
F. Huch and U. Norbisrath. Distributed Programming in Haskell with Ports. In 12th International Workshop on Implementation of Functional Languages (IFL’00), Aachen, Germany, September 2000.
S. Haridi, P. Van Roy, and G. Smolka. An Overview of the Design of Distributed Oz. In 2nd Intl. Symposium on Parallel Symbolic Computation (PASCO 97), New York, USA, 1997.
P. Kiteck. Analysis of Component Interaction in a Distribution Facility using Simulation. In EUROSIM, 1992.
R. Loogen. Programming Language Constructs. In K. Hammond and G. Michaelson, editors, Research Directions in Parallel Functional Programming, pages 63–91. Springer, 1999.
L. Merrick. DCOM Technical Overview. Technical report, Microsoft White Paper, 1996.
J. Peterson, K. Hammond, L. Augustsson, B. Boutel, W. Burton, J. Fasel, A.D. Gordon, J. Hughes, P. Hudak, T. Johnsson, M. Jones, E. Meijer, S. Peyton Jones, A. Reid, and P. Wadler. Report on the Programming Language Haskell (Version 1.4), April 1997.
S. Peyton Jones, C. Hall, K. Hammond, W. Partain, and P. Wadler. The Glasgow Haskell Compiler: a technical overview. In The UK Joint Framework for Information Technology, pages 249–257, Keele, 1993.
R. Pointon. The Design, Implementation, and Use of a Distributed Functional Language. PhD thesis, Department of Computing and Electrical Engineering, Heriot-Watt University, 2001. In Preparation.
B. Pierce and D. Turner. Pict: A Programming Language Based on the Pi-Calculus. Technical report, Indiana University, 1997.
R. Plasmeijer and M. Van Eekelen. Concurrent Clean-Language Report. High Level Software Tools B.V. and University of Nijmegen, version 1.3 edition, 1998.
M. Sage and C. Dornan. TclHaskell-users manual, Aug 1999.
J. Siegel. CORBA Fundamentals and Programming. John Wiley and Sons, New York, 1997.
E. Spiliopoulou. Concurrent and Distributed Functional Systems. PhD thesis, Department of Computer Science, University of Bristol, 1999.
P. Trinder, K. Hammond, H.-W. Loidl, and S. Peyton Jones. Algorithm + Strategy = Parallelism. Journal of Functional Programming, 8(1):23–60, January 1998.
P. Trinder, K. Hammond, J. Mattson, A. Partridge, and S. Peyton Jones. GUM: A portable implementation of Haskell. In Proceedings of Programming Language Design and Implementation (PLDI’96), Philadelphia, USA, May 1996.
B. Thomsen, L. Leth, S. Prasad, T-M. Kuo, A. Krammer, F. Knabe, and A. Giacalone. Facile Antigua Release Programming Guide. Technical report, European Computer-Industry Centre, Germany, 1993.
P. Trinder, R. Pointon, and H.-W. Loidl. Runtime System Level Fault Tolerance for a Distributed Functional Language. In 2nd Scotish Function Programming Workshop (SFP’00), University of St Andrews, Scotland, July 2000.
C. Wikstrom. Distributed programming in Erlang. In 1st International Symposium on Parallel Symbolic Computation (PASCO’94), Linz, September 1994.
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2001 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Pointon, R., Trinder, P., Loidl, HW. (2001). The Design and Implementation of Glasgow Distributed Haskell. In: Mohnen, M., Koopman, P. (eds) Implementation of Functional Languages. IFL 2000. Lecture Notes in Computer Science, vol 2011. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-45361-X_4
Download citation
DOI: https://doi.org/10.1007/3-540-45361-X_4
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-41919-8
Online ISBN: 978-3-540-45361-1
eBook Packages: Springer Book Archive