Personal tools

Research papers

From HaskellWiki

(Difference between revisions)
Jump to: navigation, search
(Start a research papers page. Far, far, far from complete (only 6 authors so far))
 
(More papers)
Line 1: Line 1:
'''Research Papers'''
 
 
 
A lot of documentation exists about Haskell, and its foundations, in the form of research papers written by those investigating language design. And it is this enormous research effort that goes into making Haskell such a sane language. In general, if a feature is not well understood, it isn't going to become part of the language.
 
A lot of documentation exists about Haskell, and its foundations, in the form of research papers written by those investigating language design. And it is this enormous research effort that goes into making Haskell such a sane language. In general, if a feature is not well understood, it isn't going to become part of the language.
   
Here is a selection of those papers, with the goal of making the wealth of material published on Haskell more available to the casual user, and not just researchers.
+
Here is a selection of those papers, with the goal of making the wealth of material published on Haskell more available to the casual user, and not just researchers. Some of the papers are highly technical, others, not so. These papers are not suitable for those trying to learn the language from scratch, but more for those looking for a deeper understanding of the theoretical and practical aspects of Haskell.
 
Some of the papers are highly technical, others, not so. These papers are not suitable for those trying to learn the language from scratch, but more for those looking for a deeper understanding of the theoretical and practical aspects of Haskell.
 
   
 
If you know of Haskell (or related) papers that are missing, please add them. There's a lot out there.
 
If you know of Haskell (or related) papers that are missing, please add them. There's a lot out there.
Line 9: Line 7:
 
__TOC__
 
__TOC__
   
==Monads and state==
+
==Functional programming==
   
;[http://research.microsoft.com/~simonpj/Papers/marktoberdorf Tackling the awkward squad: monadic input/output, concurrency, exceptions, and foreign-language calls in Haskell]
+
;[http://www.cs.chalmers.se/~rjmh/Papers/whyfp.html Why Functional Programming Matters]
:In "Engineering theories of software construction", ed Tony Hoare, Manfred Broy, Ralf Steinbruggen, IOS Press, ISBN 1 58603 1724, 2001, pp47-96.
+
:John Hughes. Comput. J. 32(2): 98-107 (1989)
   
;[http://research.microsoft.com/~simonpj/Papers/state-lasc.ps.gz State in Haskell]
+
;[http://research.microsoft.com/~simonpj/Papers/haskell-retrospective/index.htm Wearing the hair shirt: a retrospective on Haskell]
:SL Peyton Jones and J Launchbury, Lisp and Symbolic Computation 8(4), Dec 1995, pp293-341.
+
:Slides of an invited talk at POPL'03.
 
;[http://research.microsoft.com/~simonpj/Papers/lazy-functional-state-threads.ps.Z Lazy functional state threads]
 
:SL Peyton Jones and J Launchbury, SIGPLAN Symposium on Programming Language Design and Implementation (PLDI'94), Orlando, June 1994, pp24-35.
 
 
;[http://research.microsoft.com/~simonpj/Papers/imperative.ps.Z Imperative functional programming]
 
:SL Peyton Jones and PL Wadler, 20th ACM Symposium on Principles of Programming Languages (POPL'93), Charleston, Jan 1993, pp71-84.
 
 
==Foreign language interfaces==
 
 
;[http://research.microsoft.com/copyright/accept.asp?path=/users/simonpj/papers/hdirect.ps.gz&pub=ACM H/Direct: A Binary Foreign Language Interface for Haskell]
 
:SO Finne, D Leijen, E Meijer, SL Peyton Jones, ICFP'98.
 
 
;[http://research.microsoft.com/~simonpj/Papers/com.ps.gz Scripting COM components in Haskell]
 
:SL Peyton Jones, E Meijer, and D Leijen, Software Reuse 1998.
 
 
;[http://research.microsoft.com/~simonpj/Papers/comserve.htm Calling hell from heaven and heaven from hell]
 
:Sigbjorn Finne, Daan Leijen, Erik Meijer, and Simon Peyton Jones. ICFP '99.
 
 
;[http://research.microsoft.com/~simonpj/Papers/green-card-1.ps.gz Green Card: a foreign-language interface for Haskell]
 
:T Nordin and SL Peyton Jones, Proceedings of the Haskell Workshop, Amsterdam, June 1997.
 
 
===Interface tools===
 
 
;[http://www.cse.unsw.edu.au/~chak/papers/Cha99b.html C -> Haskell, or Yet Another Interfacing Tool]
 
:Manuel M. T. Chakravarty. In Pieter Koopman and Chris Clack, editors, Implementation of Functional Languages, 11th. International Workshop (IFL'99), Springer-Verlag, LNCS 1868, 2000.
 
 
==Concurrency==
 
 
;[http://research.microsoft.com/~simonpj/Papers/conc-ffi/index.htm Extending the Haskell Foreign Function Interface with Concurrency]
 
:Simon Marlow, Simon Peyton Jones, and Wolfgang Thaller, Proceedings of the Haskell Workshop, Snowbird, Sept 2004.
 
 
;[http://research.microsoft.com/copyright/accept.asp?path=/users/simonpj/papers/concurrent-haskell.ps.gz&pub=ACM Concurrent Haskell]
 
:SL Peyton Jones, A Gordon, S Finne, 23rd ACM Symposium on Principles of Programming Languages, St Petersburg Beach, Florida, Jan 1996, pp295-308.
 
 
;[http://research.microsoft.com/~simonpj/Papers/marktoberdorf Tackling the awkward squad: monadic input/output, concurrency, exceptions, and foreign-language calls in Haskell]
 
:In "Engineering theories of software construction", ed Tony Hoare, Manfred Broy, Ralf Steinbruggen, IOS Press, ISBN 1 58603 1724, 2001, pp47-96.
 
 
;[http://www.haskell.org/~simonmar/papers/web-server-jfp.pdf Developing a high-performance web server in Concurrent Haskell]
 
:Simon Marlow. Journal of Functional Programming, 12(4+5):359--374, July 2002
 
 
===Software Transactional Memory===
 
 
;[http://www.haskell.org/~simonmar/papers/stm.pdf Composable Memory Transactions]
 
:Tim Harris, Simon Marlow, Simon Peyton Jones, Maurice Herlihy. PPoPP'05: ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming, Chicago,
 
Illinois, June 2005
 
 
;[http://www.haskell.org/~simonmar/papers/lockfreedatastructures.pdf Lock Free Data Structures using STMs in Haskell]
 
:Anthony Discolo, Tim Harris, Simon Marlow, Simon Peyton Jones, Satnam Singh) FLOPS 2006: Eighth International Symposium on Functional and Logic Programming, Fuji Susono, JAPAN, April 2006
 
 
==Parallel Haskell==
 
 
;[http://www.haskell.org/~simonmar/papers/multiproc.pdf Haskell on a Shared-Memory Multiprocessor]
 
:Tim Harris, Simon Marlow, Simon Peyton Jones) Haskell '05: Proceedings of the 2005 ACM SIGPLAN workshop on Haskell, pages 49--61, Tallinn, Estonia, ACM Press, September 2005
 
   
 
==Runtime Systems==
 
==Runtime Systems==
Line 25: Line 23:
 
:Simon Marlow and Simon Peyton Jones, Proc International Conference on Functional Programming, Snowbird, Sept 2004, pp4-15.
 
:Simon Marlow and Simon Peyton Jones, Proc International Conference on Functional Programming, Snowbird, Sept 2004, pp4-15.
   
;[http://research.microsoft.com/~simonpj/Papers/optimistic/index.htm Optimistic Evaluation: an adaptive evaluation strategy for non-strict programs, Robert Ennals and
+
;[http://research.microsoft.com/~simonpj/Papers/new-rts.htm The New GHC/Hugs Runtime System]
Simon Peyton Jones, Proc ACM International Conference on Functional Programming, Uppsala, Aug
+
:Simon Marlow and Simon Peyton Jones. (Unpublished.)
2003 (ICFP'03).
 
 
;[http://research.microsoft.com/~simonpj/Papers/new-rts.htm The New GHC/Hugs Runtime System, Simon Marlow and Simon Peyton Jones. (Unpublished.)
 
   
 
;[ftp://ftp.cs.chalmers.se/pub/cs-reports/papers/jfp-interactive.ps.Z The interactive Lazy ML System]
 
;[ftp://ftp.cs.chalmers.se/pub/cs-reports/papers/jfp-interactive.ps.Z The interactive Lazy ML System]
 
:Lennart Augustsson, J. Funct. Program. 3(1): 77-92 (1993)
 
:Lennart Augustsson, J. Funct. Program. 3(1): 77-92 (1993)
  +
  +
===Weak pointers===
  +
  +
;[http://research.microsoft.com/~simonpj/Papers/weak.htm Stretching the storage manager: weak pointers and stable names in Haskell]
  +
:Simon Peyton Jones, Simon Marlow, and Conal Elliott. Proc Workshop on Implementing Functional Languages, 1999.
  +
  +
===Optimistic Evaluation===
  +
  +
;[http://research.microsoft.com/~simonpj/Papers/optimistic/index.htm Optimistic Evaluation: an adaptive evaluation strategy for non-strict programs]
  +
:Robert Ennals and Simon Peyton Jones, Proc ACM International Conference on Functional Programming, Uppsala, Aug 2003 (ICFP'03).
   
 
===Profiling===
 
===Profiling===
Line 63: Line 71:
 
;[http://www.cse.unsw.edu.au/~dons/papers/SC05.html Dynamic Applications From the Ground Up]
 
;[http://www.cse.unsw.edu.au/~dons/papers/SC05.html Dynamic Applications From the Ground Up]
 
:Don Stewart and Manuel M. T. Chakravarty. In Proceedings of the ACM SIGPLAN Workshop on Haskell, pages 27-38. ACM Press, 2005.
 
:Don Stewart and Manuel M. T. Chakravarty. In Proceedings of the ACM SIGPLAN Workshop on Haskell, pages 27-38. ACM Press, 2005.
  +
  +
===Loop detection===
  +
  +
;[http://www.cs.chalmers.se/~rjmh/Papers/cds-loops.ps A Loop-detecting Interpreter for Lazy, Higher-order Programs]
  +
:Alex Ferguson and John Hughes. The 1992 Glasgow Workshop on Functional Programming. 85-101
  +
  +
==Paralllel and Concurrent Haskell==
  +
  +
===Concurrency===
  +
  +
;[http://research.microsoft.com/~simonpj/Papers/conc-ffi/index.htm Extending the Haskell Foreign Function Interface with Concurrency]
  +
:Simon Marlow, Simon Peyton Jones, and Wolfgang Thaller, Proceedings of the Haskell Workshop, Snowbird, Sept 2004.
  +
  +
;[http://research.microsoft.com/copyright/accept.asp?path=/users/simonpj/papers/concurrent-haskell.ps.gz&pub=ACM Concurrent Haskell]
  +
:SL Peyton Jones, A Gordon, S Finne, 23rd ACM Symposium on Principles of Programming Languages, St Petersburg Beach, Florida, Jan 1996, pp295-308.
  +
  +
;[http://research.microsoft.com/~simonpj/Papers/marktoberdorf Tackling the awkward squad: monadic input/output, concurrency, exceptions, and foreign-language calls in Haskell]
  +
:In "Engineering theories of software construction", ed Tony Hoare, Manfred Broy, Ralf Steinbruggen, IOS Press, ISBN 1 58603 1724, 2001, pp47-96.
  +
  +
;[http://www.haskell.org/~simonmar/papers/web-server-jfp.pdf Developing a high-performance web server in Concurrent Haskell]
  +
:Simon Marlow. Journal of Functional Programming, 12(4+5):359--374, July 2002
  +
  +
===Parallel Haskell===
  +
  +
;[http://www.haskell.org/~simonmar/papers/multiproc.pdf Haskell on a Shared-Memory Multiprocessor]
  +
:Tim Harris, Simon Marlow, Simon Peyton Jones) Haskell '05: Proceedings of the 2005 ACM SIGPLAN workshop on Haskell, pages 49--61, Tallinn, Estonia, ACM Press, September 2005
  +
  +
===Software Transactional Memory===
  +
  +
;[http://www.haskell.org/~simonmar/papers/stm.pdf Composable Memory Transactions]
  +
:Tim Harris, Simon Marlow, Simon Peyton Jones, Maurice Herlihy. PPoPP'05: ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming, Chicago, Illinois, June 2005
  +
  +
;[http://www.haskell.org/~simonmar/papers/lockfreedatastructures.pdf Lock Free Data Structures using STMs in Haskell]
  +
:Anthony Discolo, Tim Harris, Simon Marlow, Simon Peyton Jones, Satnam Singh) FLOPS 2006: Eighth International Symposium on Functional and Logic Programming, Fuji Susono, JAPAN, April 2006
   
 
==Compiler technology==
 
==Compiler technology==
   
===Analysis===
+
===Compiler Analyses===
  +
  +
====CPR====
   
 
;[http://research.microsoft.com/~simonpj/Papers/cpr/index.htm Constructed Product Result Analysis for Haskell]
 
;[http://research.microsoft.com/~simonpj/Papers/cpr/index.htm Constructed Product Result Analysis for Haskell]
 
:Clem Baker-Finch, Kevin Glynn, and Simon Peyton Jones, Journal of Functional Programming 14(2), March 2004, pp 211-245.
 
:Clem Baker-Finch, Kevin Glynn, and Simon Peyton Jones, Journal of Functional Programming 14(2), March 2004, pp 211-245.
  +
  +
====Usage analysis====
   
 
;[http://research.microsoft.com/~simonpj/Papers/usage-types/usage.htm Simple Polymorphic Usage Analysis]
 
;[http://research.microsoft.com/~simonpj/Papers/usage-types/usage.htm Simple Polymorphic Usage Analysis]
 
:Keith Wansbrough (2002), PhD thesis, Computer Laboratory, University of Cambridge.
 
:Keith Wansbrough (2002), PhD thesis, Computer Laboratory, University of Cambridge.
 
;[http://research.microsoft.com/~simonpj/Papers/inlining/index.htm Secrets of the Glasgow Haskell Compiler inliner]
 
:Simon Peyton Jones and Simon Marlow. IDL'99; revised version Journal of Functional Programming 12(4), July 2002, pp393-434.
 
   
 
;[http://research.microsoft.com/~simonpj/Papers/usage-types/usage.htm Simple Usage Polymorphism]
 
;[http://research.microsoft.com/~simonpj/Papers/usage-types/usage.htm Simple Usage Polymorphism]
Line 82: Line 123:
 
;[http://research.microsoft.com/~simonpj/Papers/usage-types/usage.htm Once Upon a Polymorphic Type Keith]
 
;[http://research.microsoft.com/~simonpj/Papers/usage-types/usage.htm Once Upon a Polymorphic Type Keith]
 
:Wansbrough and Simon Peyton Jones, POPL'99.
 
:Wansbrough and Simon Peyton Jones, POPL'99.
  +
  +
====Inlining====
  +
  +
;[http://research.microsoft.com/~simonpj/Papers/inlining/index.htm Secrets of the Glasgow Haskell Compiler inliner]
  +
:Simon Peyton Jones and Simon Marlow. IDL'99; revised version Journal of Functional Programming 12(4), July 2002, pp393-434.
  +
  +
====Laziness====
  +
  +
;[http://www.cse.ogi.edu/~jl/Papers/update.ps Avoiding Unnecessary Updates]
  +
:John Hughes, John Launchbury, Andy Gill, Simon Marlow, Simon Peyton Jones, and Philip Wadler. 1993 Glasgow Workshop on Functional Programming.
  +
  +
====Strictness====
  +
  +
;[http://www.cse.ogi.edu/~jl/Papers/implementing.ps Implementing Projection-based Strictness Analysis]
  +
:Ryszard Kubiak, John Hughes, John Launchbury. Functional Programming 1991: 207-224
  +
  +
;[http://www.cse.ogi.edu/~jl/Papers/polyProj.ps Projections for Polymorphic First-Order Strictness Analysis]
  +
:John Hughes, John Launchbury. Mathematical Structures in Computer Science 2(3): 301-326 (1992)
   
 
;[http://research.microsoft.com/copyright/accept.asp?path=/users/simonpj/papers/simple-strictnes-analyser.ps.gz&pub=SpringerMeasuring the effectiveness of a simple strictness analyser]
 
;[http://research.microsoft.com/copyright/accept.asp?path=/users/simonpj/papers/simple-strictnes-analyser.ps.gz&pub=SpringerMeasuring the effectiveness of a simple strictness analyser]
 
:SL Peyton Jones and WD Partain, Functional Programming, Glasgow 1993, ed Hammond and O'Donnell, Springer Verlag Workshops in Computing, 1993, pp201-220.
 
:SL Peyton Jones and WD Partain, Functional Programming, Glasgow 1993, ed Hammond and O'Donnell, Springer Verlag Workshops in Computing, 1993, pp201-220.
  +
  +
;[http://www.soi.city.ac.uk/~ross/papers/projections.html Compiling Laziness using Projections]
  +
:Ross Paterson, Static Analysis Symposium, LNCS, vol. 1145, pp. 255-269, Springer, Aachen, Germany, 1996.
  +
  +
;[http://www.informatik.uni-bonn.de/~ralf/publications/dissertation.ps.gz Projection-based Strictness Analysis - Theoretical and Practical Aspects]
  +
:Ralf Hinze. Inauguraldissertation, Universitt Bonn, November 1995.
  +
  +
====Abstract interpretation====
  +
  +
;[http://www.cs.chalmers.se/~rjmh/Papers/cds-padova.ps Fast Abstract Interpretation Using Sequential Algorithms]
  +
:John Hughes and Alex Ferguson. The Workshop on Static Analysis, WSA 1993: 45-59
  +
  +
====Lambda lifting====
  +
  +
;[http://research.microsoft.com/copyright/accept.asp?path=/users/simonpj/papers/fully-lazy-lambda--lifter.ps.gz&pub=16 A modular fully-lazy lambda lifter in Haskell]
  +
:SL Peyton Jones and D Lester, Software Practice and Experience 21(5), May 1991, pp479-506.
  +
  +
====Let floating====
  +
  +
;[http://research.microsoft.com/copyright/accept.asp?path=/users/simonpj/papers/float.ps.gz&pub=ACM Let-floating: moving bindings to give faster programs]
  +
:(ICFP '96), SL Peyton Jones, WD Partain, A Santos, Proc International Conference on Functional Programming, Philadelphia (ICFP'96), May 1996.
  +
  +
====Deforestation====
  +
  +
;[http://research.microsoft.com/~simonpj/Papers/andy-thesis.ps.gz Cheap deforestation for non-strict functional languages]
  +
:A Gill, PhD thesis, University of Glasgow, Jan 1996.
  +
  +
;[http://research.microsoft.com/~simonpj/Papers/deforestation-short-cut.ps.Z A short cut to deforestation]
  +
:A Gill, SL Peyton Jones, J Launchbury, Proc Functional Programming Languages and Computer Architecture (FPCA'93), Copenhagen, June 1993, pp223-232.
   
 
===Compiler construction===
 
===Compiler construction===
Line 90: Line 178:
 
;[http://research.microsoft.com/~simonpj/Papers/grasp-jfit.ps.Z The Glasgow Haskell compiler: a technical overview]
 
;[http://research.microsoft.com/~simonpj/Papers/grasp-jfit.ps.Z The Glasgow Haskell compiler: a technical overview]
 
:SL Peyton Jones, CV Hall, K Hammond, WD Partain, PL Wadler, Proceedings of Joint Framework for Information Technology Technical Conference, Keele, March 1993, pp249-257.
 
:SL Peyton Jones, CV Hall, K Hammond, WD Partain, PL Wadler, Proceedings of Joint Framework for Information Technology Technical Conference, Keele, March 1993, pp249-257.
  +
  +
===Intermediate languages===
  +
  +
;[http://research.microsoft.com/~simonpj/Papers/henk.ps.gz Henk: a typed intermediate language]
  +
:SL Peyton Jones and E Meijer, Proceedings of the Types in Compilation Workshop, Amsterdam, June 1997.
  +
  +
;[http://research.microsoft.com/copyright/accept.asp?path=/users/simonpj/papers/neutral.ps.gz&pub=ACM Bridging the gulf: a common intermediate language for ML and Haskell]
  +
:SL Peyton Jones, J Launchbury, MB Shields, and AP Tolmach, POPL98.
   
 
===Compilation by transformation===
 
===Compilation by transformation===
Line 98: Line 194:
 
;[http://research.microsoft.com/copyright/accept.asp?path=/users/simonpj/papers/comp-by-trans.ps.gz&pub=18 Compiling Haskell by program transformation: a report from the trenches]
 
;[http://research.microsoft.com/copyright/accept.asp?path=/users/simonpj/papers/comp-by-trans.ps.gz&pub=18 Compiling Haskell by program transformation: a report from the trenches]
 
:SL Peyton Jones Proc European Symposium on Programming (ESOP'96), Linkping, Sweden, Springer Verlag LNCS 1058, Jan 1996.
 
:SL Peyton Jones Proc European Symposium on Programming (ESOP'96), Linkping, Sweden, Springer Verlag LNCS 1058, Jan 1996.
 
;[http://research.microsoft.com/copyright/accept.asp?path=/users/simonpj/papers/float.ps.gz&pub=ACM Let-floating: moving bindings to give faster programs]
 
:(ICFP '96), SL Peyton Jones, WD Partain, A Santos, Proc International Conference on Functional Programming, Philadelphia (ICFP'96), May 1996.
 
 
;[http://research.microsoft.com/~simonpj/Papers/andy-thesis.ps.gz Cheap deforestation for non-strict functional languages]
 
:A Gill, PhD thesis, University of Glasgow, Jan 1996.
 
   
 
;[http://research.microsoft.com/~simonpj/Papers/santos-thesis.ps.gz Compilation by transformation in non-strict functional languages]
 
;[http://research.microsoft.com/~simonpj/Papers/santos-thesis.ps.gz Compilation by transformation in non-strict functional languages]
 
:A Santos, PhD thesis, University of Glasgow, Sept 1995.
 
:A Santos, PhD thesis, University of Glasgow, Sept 1995.
 
;[http://research.microsoft.com/~simonpj/Papers/deforestation-short-cut.ps.Z A short cut to deforestation]
 
:A Gill, SL Peyton Jones, J Launchbury, Proc Functional Programming Languages and Computer Architecture (FPCA'93), Copenhagen, June 1993, pp223-232.
 
 
;[http://research.microsoft.com/copyright/accept.asp?path=/users/simonpj/papers/fully-lazy-lambda--lifter.ps.gz&pub=16 A modular fully-lazy lambda lifter in Haskell]
 
:SL Peyton Jones and D Lester, Software Practice and Experience 21(5), May 1991, pp479-506.
 
   
 
;[http://research.microsoft.com/~simonpj/Papers/pat.htm Pattern Guards and Transformational Patterns]
 
;[http://research.microsoft.com/~simonpj/Papers/pat.htm Pattern Guards and Transformational Patterns]
Line 120: Line 204:
 
:Simon Peyton Jones, Andrew Tolmach and Tony Hoare, Haskell Workshop 2001.
 
:Simon Peyton Jones, Andrew Tolmach and Tony Hoare, Haskell Workshop 2001.
   
==Language design==
+
;[http://www.soi.city.ac.uk/~ross/papers/embeddings.html Transforming Lazy Functions using Comportment Properties]
  +
:Ross Paterson, Programming Languages: Implementations, Logics and Programs, LNCS, vol. 1292, pp. 111-125, Springer, Southampton, UK, 1997.
   
;[http://research.microsoft.com/~simonpj/Papers/unboxed-values.ps.Z Unboxed values as first class citizens]
+
==Type systems==
:SL Peyton Jones and J Launchbury, Functional Programming Languages and Computer Architecture (FPCA'91), Boston, LNCS 523, Springer Verlag, Sept 1991,
 
pp636-666.
 
   
 
;[http://research.microsoft.com/~simonpj/Papers/static-semantics.dvi.gz A static semantics for Haskell, SL Peyton Jones and PL Wadler]
 
;[http://research.microsoft.com/~simonpj/Papers/static-semantics.dvi.gz A static semantics for Haskell, SL Peyton Jones and PL Wadler]
 
:unpublished draft, Department of Computing Science, University of Glasgow, 1992.
 
:unpublished draft, Department of Computing Science, University of Glasgow, 1992.
 
;[http://research.microsoft.com/~simonpj/Papers/haskell-retrospective/index.htm Wearing the hair shirt: a retrospective on Haskell]
 
:Slides of my invited talk at POPL'03.
 
 
;[http://research.microsoft.com/~simonpj/Papers/weak.htm Stretching the storage manager: weak pointers and stable names in Haskell]
 
:Simon Peyton Jones, Simon Marlow, and Conal Elliott. Proc Workshop on Implementing Functional Languages, 1999.
 
   
 
===Pure type systems===
 
===Pure type systems===
Line 138: Line 216:
 
:SL Peyton Jones and E Meijer, Proceedings of the Types in Compilation Workshop, Amsterdam, June 1997.
 
:SL Peyton Jones and E Meijer, Proceedings of the Types in Compilation Workshop, Amsterdam, June 1997.
   
===Intermediate languages===
+
===Unboxed values===
   
;[http://research.microsoft.com/~simonpj/Papers/henk.ps.gz Henk: a typed intermediate language]
+
;[http://www.soi.city.ac.uk/~ross/papers/pointed.html Parametricity and Unboxing with Unpointed Types]
:SL Peyton Jones and E Meijer, Proceedings of the Types in Compilation Workshop, Amsterdam, June 1997.
+
:John Launchbury and Ross Paterson, European Symposium on Programming, LNCS, vol. 1058, pp. 204-218, Springer, Linkping, Sweden, 1996.
   
;[http://research.microsoft.com/copyright/accept.asp?path=/users/simonpj/papers/neutral.ps.gz&pub=ACM Bridging the gulf: a common intermediate language for ML and Haskell]
+
;[http://research.microsoft.com/~simonpj/Papers/unboxed-values.ps.Z Unboxed values as first class citizens]
:SL Peyton Jones, J Launchbury, MB Shields, and AP Tolmach, POPL98.
+
:SL Peyton Jones and J Launchbury, Functional Programming Languages and Computer Architecture (FPCA'91), Boston, LNCS 523, Springer Verlag, Sept 1991, pp636-666.
   
 
===Functional dependencies===
 
===Functional dependencies===
Line 154: Line 232:
   
 
;[http://research.microsoft.com/~simonpj/Papers/hmap/index.htm Scrap your boilerplate: a practical approach to generic programming]
 
;[http://research.microsoft.com/~simonpj/Papers/hmap/index.htm Scrap your boilerplate: a practical approach to generic programming]
:Ralf Laemmel and Simon Peyton Jones, Proc ACM SIGPLAN Workshop on Types in Language Design and Implementation (TLDI
+
:Ralf Laemmel and Simon Peyton Jones, Proc ACM SIGPLAN Workshop on Types in Language Design and Implementation (TLDI 2003), New Orleans, pp26-37, Jan 2003.
2003), New Orleans, pp26-37, Jan 2003.
 
   
 
;[http://www.cwi.nl/~ralf/syb2/ Scrap more boilerplate: reflection, zips, and generalised casts]
 
;[http://www.cwi.nl/~ralf/syb2/ Scrap more boilerplate: reflection, zips, and generalised casts]
Line 161: Line 239:
 
;[http://www.cwi.nl/~ralf/syb3/ Scrap your boilerplate with class: extensible generic functions]
 
;[http://www.cwi.nl/~ralf/syb3/ Scrap your boilerplate with class: extensible generic functions]
 
:Ralf Laemmel and Simon Peyton Jones. appeared in Proceedings of ICFP 2005, ACM Press
 
:Ralf Laemmel and Simon Peyton Jones. appeared in Proceedings of ICFP 2005, ACM Press
  +
  +
;[http://www.informatik.uni-bonn.de/~ralf/publications/SYB0.pdf "Scrap Your Boilerplate" Reloaded]
  +
:Ralf Hinze, Andres Lh and Bruno C. d. S. Oliveira. In Philip Wadler and Masimi Hagiya, editors, Proceedings of the Eighth International Symposium on Functional and Logic Programming (FLOPS 2006), 24-26 April 2006, Fuji Susono, Japan.
  +
  +
;[http://www.informatik.uni-bonn.de/~ralf/publications/ICFP04.pdf Generics for the masses]
  +
:Ralf Hinze. In Kathleen Fisher, editor, Proceedings of the 2004 International Conference on Functional Programming, Snowbird, Utah, September 19-22, 2004.
  +
  +
;[http://www.informatik.uni-bonn.de/~ralf/publications/HW2002.ps.gz A Lightweight Implementation of Generics and Dynamics]
  +
:James Cheney and Ralf Hinze. In Manuel Chakravarty, editor, Proceedings of the ACM SIGPLAN 2002 Haskell Workshop, Pittsburgh, PA, USA, October 3, 2002, pp 90-104.
  +
  +
;[http://www.informatik.uni-bonn.de/~ralf/publications/Tidata.ps.gz Type-indexed data types]
  +
:Ralf Hinze, Johan Jeuring, Andres Lh. In Eerke Boiten, Bernhard Mller, editors, Proceedings of the Sixth International Conference on Mathematics of Program Construction (MPC 2002), Dagstuhl, Germany, July 8-10, 2002. Lecture Notes in Computer Science 2386, pp. 148-174.
  +
  +
;[http://www.informatik.uni-bonn.de/~ralf/publications/WGP00b.ps.gz Memo functions, polytypically!]
  +
:Ralf Hinze. In Johan Jeuring, editor, Proceedings of the Second Workshop on Generic Programming, WGP 2000, Ponte de Lima, Portugal, 6th July 2000.
  +
  +
;[http://www.informatik.uni-bonn.de/~ralf/publications/WGP00a.ps.gz Efficient Generalized Folds]
  +
:Ralf Hinze. In Johan Jeuring, editor, Proceedings of the Second Workshop on Generic Programming, WGP 2000, Ponte de Lima, Portugal, 6th July 2000.
  +
  +
;[http://www.informatik.uni-bonn.de/~ralf/publications/MPC00.ps.gz Polytypic values possess polykinded types]
  +
:Ralf Hinze. In Roland Backhouse, J.N. Oliveira, editors, Proceedings of the Fifth International Conference on Mathematics of Program Construction (MPC 2000), Ponte de Lima, Portugal, July 3-5, 2000.
  +
  +
;[http://www.informatik.uni-bonn.de/~ralf/publications/POPL00.ps.gz A New Approach to Generic Functional Programming]
  +
:Ralf Hinze. In Proceedings of the 27th Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, Boston, Massachusetts, January 19-21, 2000.
  +
  +
;[http://www.informatik.uni-bonn.de/~ralf/publications/FLOPS99.ps.gz Polytypic Programming with Ease]
  +
:Ralf Hinze. In 4th Fuji International Symposium on Functional and Logic Programming (FLOPS'99), Tsukuba, Japan, November 1999, pp. 21-36. Lecture Notes in Computer Science 1722.
  +
  +
;[http://www.informatik.uni-bonn.de/~ralf/publications/HW99.ps.gz A Generic Programming Extension for Haskell]
  +
:Ralf Hinze. In Erik Meijer, editor, Proceedings of the Third Haskell Workshop, Paris, France, September 1999. The proceedings appear as a technical report of Universiteit Utrecht, UU-CS-1999-28.
  +
  +
;[http://www.informatik.uni-bonn.de/~ralf/publications/CLAPF99.ps.gz Polytypic Functions Over Nested Datatypes]
  +
:Ralf Hinze. In Rafael Dueire Lins, editor, 3rd Latin-American Conference on Functional Programming (CLaPF'99), March 1999.
  +
  +
;[http://www.informatik.uni-bonn.de/~ralf/publications/habilitation.pdf Generic Programs and Proofs]
  +
:Ralf Hinze. Habilitationsschrift, Universitt Bonn, October 2000.
  +
  +
;[http://www.informatik.uni-bonn.de/~ralf/publications.html Generic Haskell: Applications]
  +
:Ralf Hinze and Johan Jeuring. Technical Report UU-CS-2003-16, Department of Computer Science, Utrecht University, 2003.
  +
  +
;[http://www.informatik.uni-bonn.de/~ralf/publications.html Type-indexed data types]
  +
:Ralf Hinze, Johan Jeuring, and Andres Lh. Technical Report UU-CS-2002-11, Department of Computer Science, Utrecht University, 2002.
  +
  +
;[http://www.informatik.uni-bonn.de/~ralf/publications.html Combining generics and dynamics]
  +
:Peter Achten and Ralf Hinze. Technical Report NIII-R0206, Nijmegen Institute for Computing and Information Sciences, University of Nijmegen, July 2002.
   
 
===Modules===
 
===Modules===
Line 214: Line 337:
 
:Lennart Augustsson, 1993. FPCA. 65-73
 
:Lennart Augustsson, 1993. FPCA. 65-73
   
===Object Oriented Haskell===
+
===Object oriented Haskell===
   
 
;[http://research.microsoft.com/~simonpj/Papers/oo-haskell/index.htm Object-Oriented Style Overloading for Haskell]
 
;[http://research.microsoft.com/~simonpj/Papers/oo-haskell/index.htm Object-Oriented Style Overloading for Haskell]
Line 222: Line 345:
 
:Andr T. H. Pang and Manuel M. T. Chakravarty. In Greg Michaelson and Phil Trinder, editors, Implementation of Functional Languages: 15th International Workshop, IFL 2003, Edinburgh, UK, September 8-11, 2003, Revised Papers, LNCS 3145, Springer-Verlag, pages 20-36, 2004.
 
:Andr T. H. Pang and Manuel M. T. Chakravarty. In Greg Michaelson and Phil Trinder, editors, Implementation of Functional Languages: 15th International Workshop, IFL 2003, Edinburgh, UK, September 8-11, 2003, Revised Papers, LNCS 3145, Springer-Verlag, pages 20-36, 2004.
   
===Associated Types===
+
;[ftp://ftp.cs.chalmers.se/pub/cs-reports/papers/sparud/haskell++.ps.gz Haskell++: An Object-Oriented Extension of Haskell]
  +
:Jan Sparud and John Hughes. Haskell Workshop 1995
  +
  +
===Associated types===
   
 
;[http://www.haskell.org/~simonmar/papers/assoc.pdf Associated types with class]
 
;[http://www.haskell.org/~simonmar/papers/assoc.pdf Associated types with class]
Line 229: Line 352:
 
;[http://www.cse.unsw.edu.au/~chak/papers/CKP05.html Associated Type Synonyms]
 
;[http://www.cse.unsw.edu.au/~chak/papers/CKP05.html Associated Type Synonyms]
 
:Manuel M. T. Chakravarty, Gabriele Keller, and Simon Peyton Jones. In Proceedings of The Tenth ACM SIGPLAN International Conference on Functional Programming, ACM Press, pages 241-253, 2005.
 
:Manuel M. T. Chakravarty, Gabriele Keller, and Simon Peyton Jones. In Proceedings of The Tenth ACM SIGPLAN International Conference on Functional Programming, ACM Press, pages 241-253, 2005.
  +
  +
;[http://www.informatik.uni-freiburg.de/~wehr/diplom ML Modules and Haskell Type Classes: A Constructive Comparison]
  +
:Stefan Wehr Diplomarbeit. Albert-Ludwigs-Universitt Freiburg, Fakultt fr Angewandte Wissenschaften, Institut fr Informatik, November 2005.
  +
  +
===Phantom types===
  +
  +
;[http://techreports.library.cornell.edu:8081/Dienst/UI/1.0/Display/cul.cis/TR2003-1901 First-class phantom types]
  +
:James Cheney and Ralf Hinze. Technical Report TR2003-1901, Cornell University, 2003.
  +
  +
===Implicit parameters===
  +
  +
;[http://www.cs.chalmers.se/~rjmh/Globals.ps Global variables in Haskell]
  +
:John Hughes. J. Funct. Program. 14(5): 489-502 (2004)
  +
  +
===Monads and state===
  +
  +
;[http://research.microsoft.com/~simonpj/Papers/marktoberdorf Tackling the awkward squad: monadic input/output, concurrency, exceptions, and foreign-language calls in Haskell]
  +
:In "Engineering theories of software construction", ed Tony Hoare, Manfred Broy, Ralf Steinbruggen, IOS Press, ISBN 1 58603 1724, 2001, pp47-96.
  +
  +
;[http://research.microsoft.com/~simonpj/Papers/state-lasc.ps.gz State in Haskell]
  +
:SL Peyton Jones and J Launchbury, Lisp and Symbolic Computation 8(4), Dec 1995, pp293-341.
  +
  +
;[http://research.microsoft.com/~simonpj/Papers/lazy-functional-state-threads.ps.Z Lazy functional state threads]
  +
:SL Peyton Jones and J Launchbury, SIGPLAN Symposium on Programming Language Design and Implementation (PLDI'94), Orlando, June 1994, pp24-35.
  +
  +
;[http://research.microsoft.com/~simonpj/Papers/imperative.ps.Z Imperative functional programming]
  +
:SL Peyton Jones and PL Wadler, 20th ACM Symposium on Principles of Programming Languages (POPL'93), Charleston, Jan 1993, pp71-84.
  +
  +
;[http://www.informatik.uni-bonn.de/~ralf/publications/ICFP00.ps.gz Deriving Backtracking Monad Transformers]
  +
:Ralf Hinze. In Phil Wadler, editor, Proceedings of the 2000 International Conference on Functional Programming, Montreal, Canada, September 18-20, 2000.
  +
  +
;[http://www.informatik.uni-bonn.de/~ralf/publications/FLOPS98.ps.gz Prological features in a functional setting - axioms and implementations]
  +
:Ralf Hinze. In Masahiko Sato, Yoshihito Toyama, editors, Third Fuji International Symposium on Functional and Logic Programming (FLOPS'98), Kyoto University, Japan, April 1998, pp. 98-122. World Scientific, Singapore, New Jersey, London, Hong Kong.
  +
  +
;[http://www.informatik.uni-bonn.de/~ralf/publications/IAI-TR-99-1.ps.gz Deriving monad transformers]
  +
:Ralf Hinze. Technical Report IAI-TR-99-1, Institut fr Informatik III, Universitt Bonn, January 1999.
  +
  +
;[http://www.informatik.uni-bonn.de/~ralf/publications/IAI-TR-96-9.ps.gz Monadic-style backtracking]
  +
:Ralf Hinze. Technical Report IAI-TR-96-9, Institut fr Informatik III, Universitt Bonn, October 1996.
  +
  +
===Arrows===
  +
  +
====Arrows====
  +
  +
;[http://www.cs.chalmers.se/~rjmh/Papers/arrows.ps Generalising Monads to Arrows],
  +
:John Hughes, in Science of Computer Programming 37, pp67-111, May 2000. (draft online)
  +
  +
;[http://www.soi.city.ac.uk/~ross/papers/notation.html A New Notation for Arrows]
  +
:Ross Paterson. In ICFP 2001, Firenze, Italy, pp229-240]
  +
  +
;[http://www.soi.city.ac.uk/~ross/papers/fop.html Arrows and Computation]
  +
:Ross Paterson, in The Fun of Programming (Jeremy Gibbons and Oege de Moor, Eds.), pp201-222, Palgrave, 2003.
  +
  +
====Applications of arrows====
  +
  +
;[http://apocalypse.org/~antony/work/pubs/genuinely-functional-guis.pdf Genuinely Functional User Interfaces]
  +
:Anthony Courtney and Conal Elliott, in Haskell Workshop 2001, Firenze, Italy, pp41-69.
  +
  +
;[http://cs-www.cs.yale.edu/homes/nilsson/Publications/afp2002.pdf Arrows, Robots, and Functional Reactive Programming]
  +
:Paul Hudak, Henrik Nilsson, Anthony Courtney and Jon Peterson, in Advanced Functional Programming, 4th International School, (Johan Jeuring and Simon Peyton Jones eds.), Oxford, Springer LNCS 2638, 2003.
  +
  +
;[http://www.cs.chalmers.se/~patrikj/poly/dc/ Polytypic compact printing and parsing]
  +
:Patrik Jansson and Johan Jeuring, In Proceedings European Symposium on Programming, LNCS 1576, pp273-287, Springer, 1999.
  +
  +
;[http://www.md.chalmers.se/~patrikj/poly/dataconv/ Polytypic data conversion programs]
  +
:Patrik Jansson and Johan Jeuring, Science of Computer Programming 43(1), pp35-75, 2002.
  +
  +
;[http://www.cse.ogi.edu/~krstic/psfiles/hyperfunctions.pdf Hyperfunctions]
  +
:Sava Krstic, John Launchbury and Dusko Pavlovic, Workshop on Fixed Points in Computer Science, Sep 2001.
  +
  +
;[http://cs-www.cs.yale.edu/homes/nilsson/Publications/hw2002.pdf Functional Reactive Programming, Continued]
  +
:Henrik Nilsson, Antony Courtney, and John Peterson. Proceedings of the 2002 ACM SIGPLAN Haskell Workshop (Haskell'02), pages 51 - 64, Pittsburgh, Pennsylvania, USA, October 2002. ACM Press.
  +
  +
====Arrow theory====
  +
  +
;[http://www.math.mcgill.ca/~rags/bang/context1.ps.gz Categories for Computation in Context and Unified Logic]
  +
:Richard Blute, J.R.B. Cockett and R.A.G. Seely. In Journal of Pure and Applied Algebra 116:49-98, 1997.
  +
  +
;[ftp://ftp.dcs.qmw.ac.uk/pub/lfp/edmundr/premoncat.ps.gz Premonoidal Categories and Notions of Computation]
  +
:John Power and Edmund Robinson. In Mathematical Structures in Computer Science 7(5):453-468, 1997.
  +
  +
;[http://www.cs.bham.ac.uk/~hxt/research/TACSfinal.ps Environments, Continuation Semantics and Indexed Categories]
  +
:John Power and Hayo Thielecke. In Proc. Theoretical Aspects of Computer Science, LNCS 1281, pp 391-414, 1997.
  +
  +
;[http://www.cs.bham.ac.uk/~hxt/research/closed-freyd-and-kappa.ps Closed Freyd- and kappa-categories]
  +
:John Power and Hayo Thielecke. ICALP'99, LNCS 1644, Springer, 1999.
  +
  +
===Restricted Datatypes===
  +
  +
;[http://www.cs.chalmers.se/~rjmh/Papers/restricted-datatypes.ps Restricted datatypes]
  +
:John Hughes. 1999 Haskell workshop
   
 
==Data Structures==
 
==Data Structures==
  +
  +
;[http://www.informatik.uni-bonn.de/~ralf/publications/HW2003.pdf Functional pearl: Trouble shared is trouble halved]
  +
:Richard Bird and Ralf Hinze. In Johan Jeuring, editor, Proceedings of the ACM SIGPLAN 2003 Haskell Workshop, Uppsala, Sweden, August 28, 2003, pp 1-6.
  +
  +
;[http://www.informatik.uni-bonn.de/~ralf/publications/WAAAPL99a.ps.gz Manufacturing datatypes]
  +
:Ralf Hinze. In Chris Okasaki, editor, Proceedings of the Workshop on Algorithmic Aspects of Advanced Programming Languages, WAAAPL'99, Paris, France, September 1999, pp. 1-16.
   
 
===Arrays===
 
===Arrays===
Line 239: Line 459:
 
;[http://www.cse.unsw.edu.au/~chak/papers/CK01.html Functional Array Fusion]
 
;[http://www.cse.unsw.edu.au/~chak/papers/CK01.html Functional Array Fusion]
 
:Manuel M. T. Chakravarty and Gabriele Keller. In Xavier Leroy, editor, Proceedings of the Sixth ACM SIGPLAN International Conference on Functional Programming, ACM Press, pp205-216, 2001.
 
:Manuel M. T. Chakravarty and Gabriele Keller. In Xavier Leroy, editor, Proceedings of the Sixth ACM SIGPLAN International Conference on Functional Programming, ACM Press, pp205-216, 2001.
  +
  +
;[http://www.informatik.uni-bonn.de/~ralf/publications/ICFP02.ps.gz Bootstrapping One-sided Flexible Arrays]
  +
:Ralf Hinze. In Simon Peyton Jones, editor, Proceedings of the 2002 International Conference on Functional Programming, Pittsburgh, PA, USA, October 4-6, 2002, pp. 2-13.
  +
  +
;[http://www.informatik.uni-bonn.de/~ralf/publications/IAI-TR-98-12.ps.gz Numerical Representations as Higher-Order Nested Datatypes]
  +
:Ralf Hinze. Technical Report IAI-TR-98-12, Institut fr Informatik III, Universitt Bonn, December 1998.
  +
  +
===Queues===
  +
  +
;[http://www.informatik.uni-bonn.de/~ralf/publications/ICFP01.pdf A Simple Implementation Technique for Priority Search Queues]
  +
:Ralf Hinze. In Xavier Leroy, editor, Proceedings of the 2001 International Conference on Functional Programming, Firenze, Italy, September 3-5, 2001.
  +
  +
===Trees===
  +
  +
;[http://www.informatik.uni-bonn.de/~ralf/publications/WAAAPL99b.ps.gz Constructing red-black trees]
  +
:Ralf Hinze. In Chris Okasaki, editor, Proceedings of the Workshop on Algorithmic Aspects of Advanced Programming Languages, WAAAPL'99, Paris, France, September 1999, pp. 89-99. The proceedings appear as a technical report of Columbia University, CUCS-023-99.
  +
  +
;[http://www.informatik.uni-bonn.de/~ralf/publications/IAI-TR-99-4.ps.gz Perfect trees and bit-reversal permutations]
  +
:Ralf Hinze. Technical Report IAI-TR-99-4, Institut fr Informatik III, Universitt Bonn, March 1999.
  +
  +
===Tries===
  +
  +
;[http://www.informatik.uni-bonn.de/~ralf/publications/IAI-TR-98-11.ps.gz Generalizing Generalized Tries]
  +
:Ralf Hinze. Technical Report IAI-TR-98-11, Institut fr Informatik III, Universitt Bonn, November 1998.
   
 
===Binary===
 
===Binary===
   
 
;[ftp://ftp.cs.york.ac.uk/pub/malcolm/hw97.html Heap Compression and Binary I/O in Haskell]
 
;[ftp://ftp.cs.york.ac.uk/pub/malcolm/hw97.html Heap Compression and Binary I/O in Haskell]
:Malcolm Wallace and Colin Runciman, Proceedings of the 2nd ACM Haskell Workshop, Amsterdam, the
+
:Malcolm Wallace and Colin Runciman, Proceedings of the 2nd ACM Haskell Workshop, Amsterdam, the Netherlands, June 1997.
Netherlands, June 1997.
 
   
 
;[ftp://ftp.cs.york.ac.uk/pub/malcolm/ismm98.html The Bits Between The Lambdas: Binary Data in a Lazy Functional Language]
 
;[ftp://ftp.cs.york.ac.uk/pub/malcolm/ismm98.html The Bits Between The Lambdas: Binary Data in a Lazy Functional Language]
 
:Malcolm Wallace and Colin Runciman. proceedings of the International Symposium on Memory Management, Vancouver, Canada, Oct 1998.
 
:Malcolm Wallace and Colin Runciman. proceedings of the International Symposium on Memory Management, Vancouver, Canada, Oct 1998.
   
==Program Development==
+
===Nested Datatypes===
   
===Tracing===
+
;[http://www.soi.city.ac.uk/~ross/papers/FingerTree.html Finger Trees: A Simple General-purpose Data Structure]
  +
:Ralf Hinze and Ross Paterson, Journal of Functional Programming
  +
  +
;[http://www.soi.city.ac.uk/~ross/papers/debruijn.html De Bruijn Notation as a Nested Datatype]
  +
:Richard Bird and Ross Paterson. Journal of Functional Programming, vol. 9(1), pp. 77-91, 1999.
  +
  +
;[http://www.soi.city.ac.uk/~ross/papers/gfold.html Generalised Folds for Nested Datatypes]
  +
:Richard Bird and Ross Paterson, Formal Aspects of Computing, vol. 11(2), pp. 200-222, 1999.
  +
  +
;[http://www.informatik.uni-bonn.de/~ralf/publications/CLAPF99.ps.gz Polytypic Functions Over Nested Datatypes]
  +
:Ralf Hinze. In Rafael Dueire Lins, editor, 3rd Latin-American Conference on Functional Programming (CLaPF'99), March 1999.
  +
  +
==Program derivation==
  +
  +
;[http://www.informatik.uni-bonn.de/~ralf/publications/MPC2004.pdf An algebra of scans]
  +
:Ralf Hinze. In Dexter Kozen, editor, Proceedings of the Seventh International Conference on Mathematics of Program Construction (MPC 2004), Stirling, Scotland, UK, July 12-14, 2004.
  +
  +
;[http://www.informatik.uni-bonn.de/~ralf/publications/MPC02.ps.gz Constructing tournament representations: An exercise in pointwise relational programming]
  +
:Ralf Hinze. In Eerke Boiten, Bernhard Mller, editors, Proceedings of the Sixth International Conference on Mathematics of Program Construction (MPC 2002), Dagstuhl, Germany, July 8-10, 2002. Lecture Notes in Computer Science 2386, pp. 131-147.
  +
  +
==Testing, reliability and correctness==
  +
  +
===Tracing and debugging===
   
 
;[ftp://ftp.cs.york.ac.uk/pub/malcolm/frejaHatHood.html Freja, Hat and Hood - A Comparative Evaluation of Three Systems for Tracing and Debugging Lazy Functional Programs]
 
;[ftp://ftp.cs.york.ac.uk/pub/malcolm/frejaHatHood.html Freja, Hat and Hood - A Comparative Evaluation of Three Systems for Tracing and Debugging Lazy Functional Programs]
Line 257: Line 501:
 
;[ftp://ftp.cs.york.ac.uk/pub/malcolm/hw01-draft.html Multiple-View Tracing for Haskell - a New Hat]
 
;[ftp://ftp.cs.york.ac.uk/pub/malcolm/hw01-draft.html Multiple-View Tracing for Haskell - a New Hat]
 
:Malcolm Wallace, Olaf Chitil, Thorsten Brehm, and Colin Runciman. (draft)
 
:Malcolm Wallace, Olaf Chitil, Thorsten Brehm, and Colin Runciman. (draft)
  +
  +
;[ftp://ftp.ida.liu.se/pub/labs/pelab/papers/aadebug93ladb.ps.gz Lazy algorithmic debugging: ideas for practical implementation.]
  +
:Henrik Nilsson and Peter Fritzson. In Peter Fritzson, editor, Automated and Algorithmic Debugging, volume 749 of Lecture Notes in Computer Science, pages 117 - 134, Linkping, Sweden, May 1993.
  +
  +
;[http://cs-www.cs.yale.edu/homes/nilsson/Publications/jfp1994.pdf Henrik Nilsson and Peter Fritzson].
  +
:Algorithmic debugging for lazy functional languages. Journal of Functional Programming, 4(3):337 - 370, July 1994.
  +
  +
;[ftp://ftp.ida.liu.se/pub/labs/pelab/papers/licthesis-henni.ps.gz A declarative approach to debugging for lazy functional languages.]
  +
:Henrik Nilsson. Licentiate Thesis No. 450, Department of Computer and Information Science, Linkpings universitet, S-581 83, Linkping, Sweden, September 1994.
  +
  +
;[ftp://ftp.ida.liu.se/pub/labs/pelab/papers/aadebug95arch.ps.gz The architecture of a debugger for lazy functional languages.]
  +
:Jan Sparud and Henrik Nilsson. In Mireille Ducass, editor, Proceedings of AADEBUG '95, 2nd Internatinal Workshop on Automated and Algorithmic Debugging, Saint-Malo, France, May 1995, IRISA, Campus Universitaire de Beaulieu, 35042 Rennes, Cedex, France.
  +
  +
;[ftp://ftp.ida.liu.se/pub/publications/techrep/1996/r-96-23.ps.gz The evaluation dependence tree: an execution record for lazy functional debugging]
  +
:Henrik Nilsson and Jan Sparud. Research Report LiTH-IDA-R-96-23, Department of Computer and Information Science, Linkpings universitet, S-581 83, Linkping, Sweden, August 1996.
  +
  +
;[http://cs-www.cs.yale.edu/homes/nilsson/Publications/ause1997.pdf The evaluation dependence tree as a basis for lazy functional debugging]
  +
:Henrik Nilsson and Jan Sparud. Automated Software Engineering, 4(2):121 - 150, April 1997.
  +
  +
;[ftp://ftp.ida.liu.se/pub/labs/pelab/papers/thesis-henni.ps.gz Declarative Debugging for Lazy Functional Languages]
  +
:Henrik Nilsson. PhD Thesis No. 430, Department of Computer and Information Science, Linkpings universitet, S-581 83, Linkping, Sweden, May 1998.
  +
  +
;[http://cs-www.cs.yale.edu/homes/nilsson/Publications/icfp1999.pdf Tracing piece by piece: affordable debugging for lazy functional languages]
  +
:Henrik Nilsson. Proceedings of the 1999 ACM SIGPLAN International Conference on Functional Programming, pages 36 - 47, Paris, France, September 1999.
  +
  +
;[http://cs-www.cs.yale.edu/homes/nilsson/Publications/jfp2001.pdf How to look busy while being as lazy as ever: the implementation of a lazy functional debugger]
  +
:Henrik Nilsson. Journal of Functional Programming, 11(6):629 - 671, November 2001
  +
  +
===Testing===
  +
  +
;[http://www.cs.chalmers.se/~rjmh/Papers/QuickCheckST.ps Testing Monadic Programs with QuickCheck]
  +
:Koen Claessen, John Hughes. SIGPLAN Notices 37(12): 47-59 (2002)
  +
  +
===Software reliability===
  +
  +
;[http://www.informatik.uni-bonn.de/~ralf/publications/Contract.pdf Typed Contracts for Functional Programming]
  +
:Ralf Hinze, Johan Jeuring and Andres Lh. In Philip Wadler and Masimi Hagiya, editors, Proceedings of the Eighth International Symposium on Functional and Logic Programming (FLOPS 2006), 24-26 April 2006, Fuji Susono, Japan.
  +
  +
==Program Development==
  +
   
 
===Editors===
 
===Editors===
Line 269: Line 553:
   
 
;[http://www.haskell.org/~simonmar/papers/haddock.pdf Haddock, A Haskell Documentation Tool]
 
;[http://www.haskell.org/~simonmar/papers/haddock.pdf Haddock, A Haskell Documentation Tool]
;Simon Marlow. Proceedings of the ACM SIGPLAN workshop on Haskell, Pittsburgh Pennsylvania, USA, ACM Press, October 2002
+
:Simon Marlow. Proceedings of the ACM SIGPLAN workshop on Haskell, Pittsburgh Pennsylvania, USA, ACM Press, October 2002
   
 
===Lexers and Parsers===
 
===Lexers and Parsers===
Line 275: Line 559:
 
;[http://www.cse.unsw.edu.au/~chak/papers/Cha99.html Lazy Lexing is Fast]
 
;[http://www.cse.unsw.edu.au/~chak/papers/Cha99.html Lazy Lexing is Fast]
 
:Manuel M. T. Chakravarty. In A. Middeldorp and T. Sato, editors, Fourth Fuji International Symposium on Functional and Logic Programming, Springer-Verlag, LNCS 1722, pages 68-84, 1999.
 
:Manuel M. T. Chakravarty. In A. Middeldorp and T. Sato, editors, Fourth Fuji International Symposium on Functional and Logic Programming, Springer-Verlag, LNCS 1722, pages 68-84, 1999.
  +
  +
===Pretty printing===
  +
  +
;[http://www.cs.chalmers.se/~rjmh/Papers/pretty.ps The Design of a Pretty-printing Library]
  +
:John Hughes. Advanced Functional Programming 1995. 53-96
  +
  +
===Functional reactive programming===
  +
  +
;[http://cs-www.cs.yale.edu/homes/nilsson/Publications/hw2003.pdf The Yampa Arcade]
  +
:Antony Courtney and Henrik Nilsson and John Peterson. In Proceedings of the 2003 ACM SIGPLAN Haskell Workshop (Haskell'03), pages 7 - 18, Uppsala, Sweden, August 2003. ACM Press.
  +
  +
;[http://cs-www.cs.yale.edu/homes/nilsson/Publications/icfp2003.pdf Functional Automatic Differentiation with Dirac Impulses]
  +
:Henrik Nilsson. In Proceedings of the Eight ACM SIGPLAN International Conference on Functional Programming, pages 159 - 187, Uppsala, Sweden, August 2003. ACM Press.
  +
  +
;[http://cs-www.cs.yale.edu/homes/nilsson/Publications/afp2002.pdf Arrows, robots, and functional reactive programming]
  +
:Paul Hudak, Antony Courtney, Henrik Nilsson, and John Peterson. In Summer Shcool on Advanced Functional Programming 2002, Oxford University, volume 2638 of Lecture Notes in Computer Science, pages 159 - 187, 2003. Springer-Verlag.
  +
  +
;[http://cs-www.cs.yale.edu/homes/nilsson/Publications/ppdp2002.pdf System presentation - Functional reactive robotics: an excercise in principled integration of domain-specific languages]
  +
Izzet Pembeci, Henrik Nilsson, and Gregory Hager. In Principles and Practice of Declarative Programming (PPDP'02), pages 168 - 179, Pittsburgh, Pennsylvania, USA, October 2002.
  +
  +
==Foreign language interfaces==
  +
  +
;[http://research.microsoft.com/copyright/accept.asp?path=/users/simonpj/papers/hdirect.ps.gz&pub=ACM H/Direct: A Binary Foreign Language Interface for Haskell]
  +
:SO Finne, D Leijen, E Meijer, SL Peyton Jones, ICFP'98.
  +
  +
;[http://research.microsoft.com/~simonpj/Papers/com.ps.gz Scripting COM components in Haskell]
  +
:SL Peyton Jones, E Meijer, and D Leijen, Software Reuse 1998.
  +
  +
;[http://research.microsoft.com/~simonpj/Papers/comserve.htm Calling hell from heaven and heaven from hell]
  +
:Sigbjorn Finne, Daan Leijen, Erik Meijer, and Simon Peyton Jones. ICFP '99.
  +
  +
;[http://research.microsoft.com/~simonpj/Papers/green-card-1.ps.gz Green Card: a foreign-language interface for Haskell]
  +
:T Nordin and SL Peyton Jones, Proceedings of the Haskell Workshop, Amsterdam, June 1997.
  +
  +
===Interface tools===
  +
  +
;[http://www.cse.unsw.edu.au/~chak/papers/Cha99b.html C -> Haskell, or Yet Another Interfacing Tool]
  +
:Manuel M. T. Chakravarty. In Pieter Koopman and Chris Clack, editors, Implementation of Functional Languages, 11th. International Workshop (IFL'99), Springer-Verlag, LNCS 1868, 2000.
  +
  +
  +
Disclaimer: the documents referenced here are included as a means to ensure timely dissemination of scholarly and technical work on a non-commercial basis. Copyright and all rights therein are maintained by the authors or by other copyright holders.

Revision as of 05:41, 8 April 2006

A lot of documentation exists about Haskell, and its foundations, in the form of research papers written by those investigating language design. And it is this enormous research effort that goes into making Haskell such a sane language. In general, if a feature is not well understood, it isn't going to become part of the language.

Here is a selection of those papers, with the goal of making the wealth of material published on Haskell more available to the casual user, and not just researchers. Some of the papers are highly technical, others, not so. These papers are not suitable for those trying to learn the language from scratch, but more for those looking for a deeper understanding of the theoretical and practical aspects of Haskell.

If you know of Haskell (or related) papers that are missing, please add them. There's a lot out there.

Contents


1 Functional programming

Why Functional Programming Matters
John Hughes. Comput. J. 32(2): 98-107 (1989)
Wearing the hair shirt: a retrospective on Haskell
Slides of an invited talk at POPL'03.

2 Runtime Systems

Implementing lazy functional languages on stock hardware: the Spineless Tagless G-machine
SL Peyton Jones, Journal of Functional Programming 2(2), Apr 1992, pp127-202.
How to make a fast curry: push/enter vs eval/apply
Simon Marlow and Simon Peyton Jones, Proc International Conference on Functional Programming, Snowbird, Sept 2004, pp4-15.
The New GHC/Hugs Runtime System
Simon Marlow and Simon Peyton Jones. (Unpublished.)
The interactive Lazy ML System
Lennart Augustsson, J. Funct. Program. 3(1): 77-92 (1993)

2.1 Weak pointers

Stretching the storage manager: weak pointers and stable names in Haskell
Simon Peyton Jones, Simon Marlow, and Conal Elliott. Proc Workshop on Implementing Functional Languages, 1999.

2.2 Optimistic Evaluation

Optimistic Evaluation: an adaptive evaluation strategy for non-strict programs
Robert Ennals and Simon Peyton Jones, Proc ACM International Conference on Functional Programming, Uppsala, Aug 2003 (ICFP'03).

2.3 Profiling

Formally-based profiling for higher-order functional languages
PM Sansom and SL Peyton Jones, ACM Transactions on Programming Languages and Systems, 19(2), March 1997, pp 334-385.
Time and space profiling for non-strict functional languages
P Sansom and SL Peyton Jones, 22nd ACM Symposium on Principles of Programming Languages (POPL'95), San Francisco, Jan 1995, pp355-366.
Execution profiling for non-strict functional languages
P Sansom, PhD thesis, University of Glasgow, Nov 1994.

2.4 Garbage collection

Exploring the Barrier to Entry: Incremental Generational Garbage Collection for Haskell
Andy Cheadle, Tony Field, Simon Marlow, Simon Peyton Jones, and Lyndon While, International Symposium on Memory Management, Vancouver, 2004.
Non-stop Haskell, Andy Cheadle, Tony Field, Simon Marlow, Simon Peyton Jones, and Lyndon While
ICFP 2000.
Generational garbage collection for Haskell, P Sansom and SL Peyton Jones
Proc Functional Programming Languages and Computer Architecture (FPCA'93), Copenhagen, June 1993, pp106-116.
An Incremental Garbage Collector for Embedded Real-Time Systems,
Malcolm Wallace and Colin Runciman. Proceedings of Chalmers Winter Meeting, June 1993.

2.5 Dynamic linking

Plugging Haskell In
Andr Pang, Don Stewart, Sean Seefried, and Manuel M. T. Chakravarty. In Proceedings of the ACM SIGPLAN Workshop on Haskell, pages 10-21. ACM Press, 2004
Dynamic Applications From the Ground Up
Don Stewart and Manuel M. T. Chakravarty. In Proceedings of the ACM SIGPLAN Workshop on Haskell, pages 27-38. ACM Press, 2005.

2.6 Loop detection

A Loop-detecting Interpreter for Lazy, Higher-order Programs
Alex Ferguson and John Hughes. The 1992 Glasgow Workshop on Functional Programming. 85-101

3 Paralllel and Concurrent Haskell

3.1 Concurrency

Extending the Haskell Foreign Function Interface with Concurrency
Simon Marlow, Simon Peyton Jones, and Wolfgang Thaller, Proceedings of the Haskell Workshop, Snowbird, Sept 2004.
Concurrent Haskell
SL Peyton Jones, A Gordon, S Finne, 23rd ACM Symposium on Principles of Programming Languages, St Petersburg Beach, Florida, Jan 1996, pp295-308.
Tackling the awkward squad: monadic input/output, concurrency, exceptions, and foreign-language calls in Haskell
In "Engineering theories of software construction", ed Tony Hoare, Manfred Broy, Ralf Steinbruggen, IOS Press, ISBN 1 58603 1724, 2001, pp47-96.
Developing a high-performance web server in Concurrent Haskell
Simon Marlow. Journal of Functional Programming, 12(4+5):359--374, July 2002

3.2 Parallel Haskell

Haskell on a Shared-Memory Multiprocessor
Tim Harris, Simon Marlow, Simon Peyton Jones) Haskell '05: Proceedings of the 2005 ACM SIGPLAN workshop on Haskell, pages 49--61, Tallinn, Estonia, ACM Press, September 2005

3.3 Software Transactional Memory

Composable Memory Transactions
Tim Harris, Simon Marlow, Simon Peyton Jones, Maurice Herlihy. PPoPP'05: ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming, Chicago, Illinois, June 2005
Lock Free Data Structures using STMs in Haskell
Anthony Discolo, Tim Harris, Simon Marlow, Simon Peyton Jones, Satnam Singh) FLOPS 2006: Eighth International Symposium on Functional and Logic Programming, Fuji Susono, JAPAN, April 2006

4 Compiler technology

4.1 Compiler Analyses

4.1.1 CPR

Constructed Product Result Analysis for Haskell
Clem Baker-Finch, Kevin Glynn, and Simon Peyton Jones, Journal of Functional Programming 14(2), March 2004, pp 211-245.

4.1.2 Usage analysis

Simple Polymorphic Usage Analysis
Keith Wansbrough (2002), PhD thesis, Computer Laboratory, University of Cambridge.
Simple Usage Polymorphism
Keith Wansbrough and Simon Peyton Jones; Workshop on Types In Compilation 2000.
Once Upon a Polymorphic Type Keith
Wansbrough and Simon Peyton Jones, POPL'99.

4.1.3 Inlining

Secrets of the Glasgow Haskell Compiler inliner
Simon Peyton Jones and Simon Marlow. IDL'99; revised version Journal of Functional Programming 12(4), July 2002, pp393-434.

4.1.4 Laziness

Avoiding Unnecessary Updates
John Hughes, John Launchbury, Andy Gill, Simon Marlow, Simon Peyton Jones, and Philip Wadler. 1993 Glasgow Workshop on Functional Programming.

4.1.5 Strictness

Implementing Projection-based Strictness Analysis
Ryszard Kubiak, John Hughes, John Launchbury. Functional Programming 1991: 207-224
Projections for Polymorphic First-Order Strictness Analysis
John Hughes, John Launchbury. Mathematical Structures in Computer Science 2(3): 301-326 (1992)
the effectiveness of a simple strictness analyser
SL Peyton Jones and WD Partain, Functional Programming, Glasgow 1993, ed Hammond and O'Donnell, Springer Verlag Workshops in Computing, 1993, pp201-220.
Compiling Laziness using Projections
Ross Paterson, Static Analysis Symposium, LNCS, vol. 1145, pp. 255-269, Springer, Aachen, Germany, 1996.
Projection-based Strictness Analysis - Theoretical and Practical Aspects
Ralf Hinze. Inauguraldissertation, Universitt Bonn, November 1995.

4.1.6 Abstract interpretation

Fast Abstract Interpretation Using Sequential Algorithms
John Hughes and Alex Ferguson. The Workshop on Static Analysis, WSA 1993: 45-59

4.1.7 Lambda lifting

A modular fully-lazy lambda lifter in Haskell
SL Peyton Jones and D Lester, Software Practice and Experience 21(5), May 1991, pp479-506.

4.1.8 Let floating

Let-floating: moving bindings to give faster programs
(ICFP '96), SL Peyton Jones, WD Partain, A Santos, Proc International Conference on Functional Programming, Philadelphia (ICFP'96), May 1996.

4.1.9 Deforestation

Cheap deforestation for non-strict functional languages
A Gill, PhD thesis, University of Glasgow, Jan 1996.
A short cut to deforestation
A Gill, SL Peyton Jones, J Launchbury, Proc Functional Programming Languages and Computer Architecture (FPCA'93), Copenhagen, June 1993, pp223-232.

4.2 Compiler construction

The Glasgow Haskell compiler: a technical overview
SL Peyton Jones, CV Hall, K Hammond, WD Partain, PL Wadler, Proceedings of Joint Framework for Information Technology Technical Conference, Keele, March 1993, pp249-257.

4.3 Intermediate languages

Henk: a typed intermediate language
SL Peyton Jones and E Meijer, Proceedings of the Types in Compilation Workshop, Amsterdam, June 1997.
Bridging the gulf: a common intermediate language for ML and Haskell
SL Peyton Jones, J Launchbury, MB Shields, and AP Tolmach, POPL98.

4.4 Compilation by transformation

A transformation-based optimiser for Haskell
SL Peyton Jones and A Santos, Science of Computer Programming 32(1-3), pp3-47, September 1998.
Compiling Haskell by program transformation: a report from the trenches
SL Peyton Jones Proc European Symposium on Programming (ESOP'96), Linkping, Sweden, Springer Verlag LNCS 1058, Jan 1996.
Compilation by transformation in non-strict functional languages
A Santos, PhD thesis, University of Glasgow, Sept 1995.
Pattern Guards and Transformational Patterns
Martin Erwig and Simon Peyton Jones; Haskell Workshop 2000.
Playing by the rules: rewriting as a practical optimisation technique in GHC
Simon Peyton Jones, Andrew Tolmach and Tony Hoare, Haskell Workshop 2001.
Transforming Lazy Functions using Comportment Properties
Ross Paterson, Programming Languages: Implementations, Logics and Programs, LNCS, vol. 1292, pp. 111-125, Springer, Southampton, UK, 1997.

5 Type systems

A static semantics for Haskell, SL Peyton Jones and PL Wadler
unpublished draft, Department of Computing Science, University of Glasgow, 1992.

5.1 Pure type systems

Henk: a typed intermediate language
SL Peyton Jones and E Meijer, Proceedings of the Types in Compilation Workshop, Amsterdam, June 1997.

5.2 Unboxed values

Parametricity and Unboxing with Unpointed Types
John Launchbury and Ross Paterson, European Symposium on Programming, LNCS, vol. 1058, pp. 204-218, Springer, Linkping, Sweden, 1996.
Unboxed values as first class citizens
SL Peyton Jones and J Launchbury, Functional Programming Languages and Computer Architecture (FPCA'91), Boston, LNCS 523, Springer Verlag, Sept 1991, pp636-666.

5.3 Functional dependencies

Sound and Decidable Type Inference for Functional Dependencies
Gregory J. Duck, Simon Peyton Jones, Peter J. Stuckey, and Martin Sulzmann, European Symposium on Programming 2004 (ESOP'04).

5.4 Generic programming

Scrap your boilerplate: a practical approach to generic programming
Ralf Laemmel and Simon Peyton Jones, Proc ACM SIGPLAN Workshop on Types in Language Design and Implementation (TLDI 2003), New Orleans, pp26-37, Jan 2003.
Scrap more boilerplate: reflection, zips, and generalised casts
Ralf Laemmel and Simon Peyton Jones. appeared in Proceedings of ICFP 2004, ACM Press
Scrap your boilerplate with class: extensible generic functions
Ralf Laemmel and Simon Peyton Jones. appeared in Proceedings of ICFP 2005, ACM Press
"Scrap Your Boilerplate" Reloaded
Ralf Hinze, Andres Lh and Bruno C. d. S. Oliveira. In Philip Wadler and Masimi Hagiya, editors, Proceedings of the Eighth International Symposium on Functional and Logic Programming (FLOPS 2006), 24-26 April 2006, Fuji Susono, Japan.
Generics for the masses
Ralf Hinze. In Kathleen Fisher, editor, Proceedings of the 2004 International Conference on Functional Programming, Snowbird, Utah, September 19-22, 2004.
A Lightweight Implementation of Generics and Dynamics
James Cheney and Ralf Hinze. In Manuel Chakravarty, editor, Proceedings of the ACM SIGPLAN 2002 Haskell Workshop, Pittsburgh, PA, USA, October 3, 2002, pp 90-104.
Type-indexed data types
Ralf Hinze, Johan Jeuring, Andres Lh. In Eerke Boiten, Bernhard Mller, editors, Proceedings of the Sixth International Conference on Mathematics of Program Construction (MPC 2002), Dagstuhl, Germany, July 8-10, 2002. Lecture Notes in Computer Science 2386, pp. 148-174.
Memo functions, polytypically!
Ralf Hinze. In Johan Jeuring, editor, Proceedings of the Second Workshop on Generic Programming, WGP 2000, Ponte de Lima, Portugal, 6th July 2000.
Efficient Generalized Folds
Ralf Hinze. In Johan Jeuring, editor, Proceedings of the Second Workshop on Generic Programming, WGP 2000, Ponte de Lima, Portugal, 6th July 2000.
Polytypic values possess polykinded types
Ralf Hinze. In Roland Backhouse, J.N. Oliveira, editors, Proceedings of the Fifth International Conference on Mathematics of Program Construction (MPC 2000), Ponte de Lima, Portugal, July 3-5, 2000.
A New Approach to Generic Functional Programming
Ralf Hinze. In Proceedings of the 27th Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, Boston, Massachusetts, January 19-21, 2000.
Polytypic Programming with Ease
Ralf Hinze. In 4th Fuji International Symposium on Functional and Logic Programming (FLOPS'99), Tsukuba, Japan, November 1999, pp. 21-36. Lecture Notes in Computer Science 1722.
A Generic Programming Extension for Haskell
Ralf Hinze. In Erik Meijer, editor, Proceedings of the Third Haskell Workshop, Paris, France, September 1999. The proceedings appear as a technical report of Universiteit Utrecht, UU-CS-1999-28.
Polytypic Functions Over Nested Datatypes
Ralf Hinze. In Rafael Dueire Lins, editor, 3rd Latin-American Conference on Functional Programming (CLaPF'99), March 1999.
Generic Programs and Proofs
Ralf Hinze. Habilitationsschrift, Universitt Bonn, October 2000.
Generic Haskell: Applications
Ralf Hinze and Johan Jeuring. Technical Report UU-CS-2003-16, Department of Computer Science, Utrecht University, 2003.
Type-indexed data types
Ralf Hinze, Johan Jeuring, and Andres Lh. Technical Report UU-CS-2002-11, Department of Computer Science, Utrecht University, 2002.
Combining generics and dynamics
Peter Achten and Ralf Hinze. Technical Report NIII-R0206, Nijmegen Institute for Computing and Information Sciences, University of Nijmegen, July 2002.

5.5 Modules

First class modules for Haskell
Mark Shields and Simon Peyton Jones; FOOL'02.
An exploration of modular programs
Electronic proceedings of the 1996 Glasgow Functional Programming Workshop, J Nicklisch and SL Peyton Jones, Ullapool, July 1996.

5.6 Exceptions

Imprecise Exceptions, Co-Inductively
Andy Moran, Soeren Lassen, and Simon Peyton Jones. HOOTS'99.
A semantics for imprecise exceptions
Simon Peyton Jones, Alastair Reid, Tony Hoare, Simon Marlow, Fergus Henderson. Proc Programming Language Design and Implementation (PLDI'99), Atlanta.
Asynchronous exceptions in Haskell
Simon Marlow, Simon Peyton Jones, Andy Moran and John Reppy, PLDI'01.

5.7 Records

Lightweight Extensible Records for Haskell
Mark Jones and Simon Peyton Jones, Haskell Workshop 1999.

5.8 Meta programming

Dynamic typing as staged type inference
MB Shields, T Sheard, and SL Peyton Jones, POPL98.
Template meta-programming for Haskell
Tim Sheard and Simon Peyton Jones, Proceedings of the Haskell Workshop, Pittsburgh, 2002
Optimising Embedded DSLs using Template Haskell
Sean Seefried, Manuel M. T. Chakravarty, and Gabriele Keller. In Gabor Karsai and Eelco Visser, editors, Third International Conference on Generative Programming and Component Engineering (GPCE'04), LNCS 3286, Springer-Verlag, pages 186-205, 2004. [An earlier draft was presented at the IFL 2003 - 15th International Workshop on the Implementation of Functional Languages, 2003.

5.9 Type classes

Type classes: exploring the design space
Simon Peyton Jones, Mark Jones, Erik Meijer, Haskell Workshop 1997.
Type classes in Haskell, CV Hall, K Hammond, SL Peyton Jones, and PL Wadler
European Symposium On Programming, LNCS 788, Springer Verlag, pp. 241-256, April 1994.
Bulk types with class
SL Peyton Jones, Electronic proceedings of the 1996 Glasgow Functional Programming Workshop, Ullapool, July 1996.
Derivable Type classes, Ralf Hinze and Simon Peyton Jones
Haskell Workshop 2000.
Implementing Haskell overloading
Lennart Augustsson, 1993. FPCA. 65-73

5.10 Object oriented Haskell

Object-Oriented Style Overloading for Haskell
Mark Shields and Simon Peyton Jones; BABEL workshop '01.
Interfacing Haskell with Object-Oriented Languages
Andr T. H. Pang and Manuel M. T. Chakravarty. In Greg Michaelson and Phil Trinder, editors, Implementation of Functional Languages: 15th International Workshop, IFL 2003, Edinburgh, UK, September 8-11, 2003, Revised Papers, LNCS 3145, Springer-Verlag, pages 20-36, 2004.
Haskell++: An Object-Oriented Extension of Haskell
Jan Sparud and John Hughes. Haskell Workshop 1995

5.11 Associated types

Associated types with class
Manuel M. T. Chakravarty, Gabriele Keller, Simon Peyton Jones, Simon Marlow) POPL '05: Proceedings of the 32nd ACM SIGPLAN-SIGACT sysposium on Principles of programming languages, pages 1--13, Long Beach, California, USA, ACM Press, 2005
Associated Type Synonyms
Manuel M. T. Chakravarty, Gabriele Keller, and Simon Peyton Jones. In Proceedings of The Tenth ACM SIGPLAN International Conference on Functional Programming, ACM Press, pages 241-253, 2005.
ML Modules and Haskell Type Classes: A Constructive Comparison
Stefan Wehr Diplomarbeit. Albert-Ludwigs-Universitt Freiburg, Fakultt fr Angewandte Wissenschaften, Institut fr Informatik, November 2005.

5.12 Phantom types

First-class phantom types
James Cheney and Ralf Hinze. Technical Report TR2003-1901, Cornell University, 2003.

5.13 Implicit parameters

Global variables in Haskell
John Hughes. J. Funct. Program. 14(5): 489-502 (2004)

5.14 Monads and state

Tackling the awkward squad: monadic input/output, concurrency, exceptions, and foreign-language calls in Haskell
In "Engineering theories of software construction", ed Tony Hoare, Manfred Broy, Ralf Steinbruggen, IOS Press, ISBN 1 58603 1724, 2001, pp47-96.
State in Haskell
SL Peyton Jones and J Launchbury, Lisp and Symbolic Computation 8(4), Dec 1995, pp293-341.
Lazy functional state threads
SL Peyton Jones and J Launchbury, SIGPLAN Symposium on Programming Language Design and Implementation (PLDI'94), Orlando, June 1994, pp24-35.
Imperative functional programming
SL Peyton Jones and PL Wadler, 20th ACM Symposium on Principles of Programming Languages (POPL'93), Charleston, Jan 1993, pp71-84.
Deriving Backtracking Monad Transformers
Ralf Hinze. In Phil Wadler, editor, Proceedings of the 2000 International Conference on Functional Programming, Montreal, Canada, September 18-20, 2000.
Prological features in a functional setting - axioms and implementations
Ralf Hinze. In Masahiko Sato, Yoshihito Toyama, editors, Third Fuji International Symposium on Functional and Logic Programming (FLOPS'98), Kyoto University, Japan, April 1998, pp. 98-122. World Scientific, Singapore, New Jersey, London, Hong Kong.
Deriving monad transformers
Ralf Hinze. Technical Report IAI-TR-99-1, Institut fr Informatik III, Universitt Bonn, January 1999.
Monadic-style backtracking
Ralf Hinze. Technical Report IAI-TR-96-9, Institut fr Informatik III, Universitt Bonn, October 1996.

5.15 Arrows

5.15.1 Arrows

Generalising Monads to Arrows,
John Hughes, in Science of Computer Programming 37, pp67-111, May 2000. (draft online)
A New Notation for Arrows
Ross Paterson. In ICFP 2001, Firenze, Italy, pp229-240]
Arrows and Computation
Ross Paterson, in The Fun of Programming (Jeremy Gibbons and Oege de Moor, Eds.), pp201-222, Palgrave, 2003.

5.15.2 Applications of arrows

Genuinely Functional User Interfaces
Anthony Courtney and Conal Elliott, in Haskell Workshop 2001, Firenze, Italy, pp41-69.
Arrows, Robots, and Functional Reactive Programming
Paul Hudak, Henrik Nilsson, Anthony Courtney and Jon Peterson, in Advanced Functional Programming, 4th International School, (Johan Jeuring and Simon Peyton Jones eds.), Oxford, Springer LNCS 2638, 2003.
Polytypic compact printing and parsing
Patrik Jansson and Johan Jeuring, In Proceedings European Symposium on Programming, LNCS 1576, pp273-287, Springer, 1999.
Polytypic data conversion programs
Patrik Jansson and Johan Jeuring, Science of Computer Programming 43(1), pp35-75, 2002.
Hyperfunctions
Sava Krstic, John Launchbury and Dusko Pavlovic, Workshop on Fixed Points in Computer Science, Sep 2001.
Functional Reactive Programming, Continued
Henrik Nilsson, Antony Courtney, and John Peterson. Proceedings of the 2002 ACM SIGPLAN Haskell Workshop (Haskell'02), pages 51 - 64, Pittsburgh, Pennsylvania, USA, October 2002. ACM Press.

5.15.3 Arrow theory

Categories for Computation in Context and Unified Logic
Richard Blute, J.R.B. Cockett and R.A.G. Seely. In Journal of Pure and Applied Algebra 116:49-98, 1997.
Premonoidal Categories and Notions of Computation
John Power and Edmund Robinson. In Mathematical Structures in Computer Science 7(5):453-468, 1997.
Environments, Continuation Semantics and Indexed Categories
John Power and Hayo Thielecke. In Proc. Theoretical Aspects of Computer Science, LNCS 1281, pp 391-414, 1997.
Closed Freyd- and kappa-categories
John Power and Hayo Thielecke. ICALP'99, LNCS 1644, Springer, 1999.

5.16 Restricted Datatypes

Restricted datatypes
John Hughes. 1999 Haskell workshop

6 Data Structures

Functional pearl: Trouble shared is trouble halved
Richard Bird and Ralf Hinze. In Johan Jeuring, editor, Proceedings of the ACM SIGPLAN 2003 Haskell Workshop, Uppsala, Sweden, August 28, 2003, pp 1-6.
Manufacturing datatypes
Ralf Hinze. In Chris Okasaki, editor, Proceedings of the Workshop on Algorithmic Aspects of Advanced Programming Languages, WAAAPL'99, Paris, France, September 1999, pp. 1-16.

6.1 Arrays

An Approach to Fast Arrays in Haskell
Manuel M. T. Chakravarty and Gabriele Keller. In Johan Jeuring and Simon Peyton Jones, editors, lecture notes for The Summer School and Workshop on Advanced Functional Programming 2002. LNCS 2638, Springer-Verlag, pages 27-58, 2003.
Functional Array Fusion
Manuel M. T. Chakravarty and Gabriele Keller. In Xavier Leroy, editor, Proceedings of the Sixth ACM SIGPLAN International Conference on Functional Programming, ACM Press, pp205-216, 2001.
Bootstrapping One-sided Flexible Arrays
Ralf Hinze. In Simon Peyton Jones, editor, Proceedings of the 2002 International Conference on Functional Programming, Pittsburgh, PA, USA, October 4-6, 2002, pp. 2-13.
Numerical Representations as Higher-Order Nested Datatypes
Ralf Hinze. Technical Report IAI-TR-98-12, Institut fr Informatik III, Universitt Bonn, December 1998.

6.2 Queues

A Simple Implementation Technique for Priority Search Queues
Ralf Hinze. In Xavier Leroy, editor, Proceedings of the 2001 International Conference on Functional Programming, Firenze, Italy, September 3-5, 2001.

6.3 Trees

Constructing red-black trees
Ralf Hinze. In Chris Okasaki, editor, Proceedings of the Workshop on Algorithmic Aspects of Advanced Programming Languages, WAAAPL'99, Paris, France, September 1999, pp. 89-99. The proceedings appear as a technical report of Columbia University, CUCS-023-99.
Perfect trees and bit-reversal permutations
Ralf Hinze. Technical Report IAI-TR-99-4, Institut fr Informatik III, Universitt Bonn, March 1999.

6.4 Tries

Generalizing Generalized Tries
Ralf Hinze. Technical Report IAI-TR-98-11, Institut fr Informatik III, Universitt Bonn, November 1998.

6.5 Binary

Heap Compression and Binary I/O in Haskell
Malcolm Wallace and Colin Runciman, Proceedings of the 2nd ACM Haskell Workshop, Amsterdam, the Netherlands, June 1997.
The Bits Between The Lambdas: Binary Data in a Lazy Functional Language
Malcolm Wallace and Colin Runciman. proceedings of the International Symposium on Memory Management, Vancouver, Canada, Oct 1998.

6.6 Nested Datatypes

Finger Trees: A Simple General-purpose Data Structure
Ralf Hinze and Ross Paterson, Journal of Functional Programming
De Bruijn Notation as a Nested Datatype
Richard Bird and Ross Paterson. Journal of Functional Programming, vol. 9(1), pp. 77-91, 1999.
Generalised Folds for Nested Datatypes
Richard Bird and Ross Paterson, Formal Aspects of Computing, vol. 11(2), pp. 200-222, 1999.
Polytypic Functions Over Nested Datatypes
Ralf Hinze. In Rafael Dueire Lins, editor, 3rd Latin-American Conference on Functional Programming (CLaPF'99), March 1999.

7 Program derivation

An algebra of scans
Ralf Hinze. In Dexter Kozen, editor, Proceedings of the Seventh International Conference on Mathematics of Program Construction (MPC 2004), Stirling, Scotland, UK, July 12-14, 2004.
Constructing tournament representations: An exercise in pointwise relational programming
Ralf Hinze. In Eerke Boiten, Bernhard Mller, editors, Proceedings of the Sixth International Conference on Mathematics of Program Construction (MPC 2002), Dagstuhl, Germany, July 8-10, 2002. Lecture Notes in Computer Science 2386, pp. 131-147.

8 Testing, reliability and correctness

8.1 Tracing and debugging

Freja, Hat and Hood - A Comparative Evaluation of Three Systems for Tracing and Debugging Lazy Functional Programs
Olaf Chitil, Colin Runciman, and Malcolm Wallace. Proceedings of the 12th International Workshop on Implementation of Functional Languages, Aachen, Germany, September 4th - 7th 2000, LNCS 2011, 2001, pp. 176--193
Multiple-View Tracing for Haskell - a New Hat
Malcolm Wallace, Olaf Chitil, Thorsten Brehm, and Colin Runciman. (draft)
Lazy algorithmic debugging: ideas for practical implementation.
Henrik Nilsson and Peter Fritzson. In Peter Fritzson, editor, Automated and Algorithmic Debugging, volume 749 of Lecture Notes in Computer Science, pages 117 - 134, Linkping, Sweden, May 1993.
Henrik Nilsson and Peter Fritzson.
Algorithmic debugging for lazy functional languages. Journal of Functional Programming, 4(3):337 - 370, July 1994.
A declarative approach to debugging for lazy functional languages.
Henrik Nilsson. Licentiate Thesis No. 450, Department of Computer and Information Science, Linkpings universitet, S-581 83, Linkping, Sweden, September 1994.
The architecture of a debugger for lazy functional languages.
Jan Sparud and Henrik Nilsson. In Mireille Ducass, editor, Proceedings of AADEBUG '95, 2nd Internatinal Workshop on Automated and Algorithmic Debugging, Saint-Malo, France, May 1995, IRISA, Campus Universitaire de Beaulieu, 35042 Rennes, Cedex, France.
The evaluation dependence tree: an execution record for lazy functional debugging
Henrik Nilsson and Jan Sparud. Research Report LiTH-IDA-R-96-23, Department of Computer and Information Science, Linkpings universitet, S-581 83, Linkping, Sweden, August 1996.
The evaluation dependence tree as a basis for lazy functional debugging
Henrik Nilsson and Jan Sparud. Automated Software Engineering, 4(2):121 - 150, April 1997.
Declarative Debugging for Lazy Functional Languages
Henrik Nilsson. PhD Thesis No. 430, Department of Computer and Information Science, Linkpings universitet, S-581 83, Linkping, Sweden, May 1998.
Tracing piece by piece: affordable debugging for lazy functional languages
Henrik Nilsson. Proceedings of the 1999 ACM SIGPLAN International Conference on Functional Programming, pages 36 - 47, Paris, France, September 1999.
How to look busy while being as lazy as ever: the implementation of a lazy functional debugger
Henrik Nilsson. Journal of Functional Programming, 11(6):629 - 671, November 2001

8.2 Testing

Testing Monadic Programs with QuickCheck
Koen Claessen, John Hughes. SIGPLAN Notices 37(12): 47-59 (2002)

8.3 Software reliability

Typed Contracts for Functional Programming
Ralf Hinze, Johan Jeuring and Andres Lh. In Philip Wadler and Masimi Hagiya, editors, Proceedings of the Eighth International Symposium on Functional and Logic Programming (FLOPS 2006), 24-26 April 2006, Fuji Susono, Japan.

9 Program Development

9.1 Editors

Visual Haskell: A full-featured Haskell development environment
Krasimir Angelov, Simon Marlow. Haskell '05: Proceedings of the 2005 ACM SIGPLAN workshop on Haskell, pages 5--16, Tallinn, Estonia, ACM Press, September 2005
Dynamic Applications From the Ground Up
Don Stewart and Manuel M. T. Chakravarty. In Proceedings of the ACM SIGPLAN Workshop on Haskell, pages 27-38. ACM Press, 2005.

9.2 Documentation

Haddock, A Haskell Documentation Tool
Simon Marlow. Proceedings of the ACM SIGPLAN workshop on Haskell, Pittsburgh Pennsylvania, USA, ACM Press, October 2002

9.3 Lexers and Parsers

Lazy Lexing is Fast
Manuel M. T. Chakravarty. In A. Middeldorp and T. Sato, editors, Fourth Fuji International Symposium on Functional and Logic Programming, Springer-Verlag, LNCS 1722, pages 68-84, 1999.

9.4 Pretty printing

The Design of a Pretty-printing Library
John Hughes. Advanced Functional Programming 1995. 53-96

9.5 Functional reactive programming

The Yampa Arcade
Antony Courtney and Henrik Nilsson and John Peterson. In Proceedings of the 2003 ACM SIGPLAN Haskell Workshop (Haskell'03), pages 7 - 18, Uppsala, Sweden, August 2003. ACM Press.
Functional Automatic Differentiation with Dirac Impulses
Henrik Nilsson. In Proceedings of the Eight ACM SIGPLAN International Conference on Functional Programming, pages 159 - 187, Uppsala, Sweden, August 2003. ACM Press.
Arrows, robots, and functional reactive programming
Paul Hudak, Antony Courtney, Henrik Nilsson, and John Peterson. In Summer Shcool on Advanced Functional Programming 2002, Oxford University, volume 2638 of Lecture Notes in Computer Science, pages 159 - 187, 2003. Springer-Verlag.
System presentation - Functional reactive robotics: an excercise in principled integration of domain-specific languages

Izzet Pembeci, Henrik Nilsson, and Gregory Hager. In Principles and Practice of Declarative Programming (PPDP'02), pages 168 - 179, Pittsburgh, Pennsylvania, USA, October 2002.

10 Foreign language interfaces

H/Direct: A Binary Foreign Language Interface for Haskell
SO Finne, D Leijen, E Meijer, SL Peyton Jones, ICFP'98.
Scripting COM components in Haskell
SL Peyton Jones, E Meijer, and D Leijen, Software Reuse 1998.
Calling hell from heaven and heaven from hell
Sigbjorn Finne, Daan Leijen, Erik Meijer, and Simon Peyton Jones. ICFP '99.
Green Card: a foreign-language interface for Haskell
T Nordin and SL Peyton Jones, Proceedings of the Haskell Workshop, Amsterdam, June 1997.

10.1 Interface tools

C -> Haskell, or Yet Another Interfacing Tool
Manuel M. T. Chakravarty. In Pieter Koopman and Chris Clack, editors, Implementation of Functional Languages, 11th. International Workshop (IFL'99), Springer-Verlag, LNCS 1868, 2000.


Disclaimer: the documents referenced here are included as a means to ensure timely dissemination of scholarly and technical work on a non-commercial basis. Copyright and all rights therein are maintained by the authors or by other copyright holders.