Difference between revisions of "Research papers"

From HaskellWiki
Jump to navigation Jump to search
(typo)
(Added a link to dohaskell)
(24 intermediate revisions by 7 users not shown)
Line 1: Line 1:
  +
[[Category:Research]]
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.
 
  +
  +
__NOTOC__
  +
  +
A lot of documentation exists about Haskell, and its foundations, in the form of research papers written by those investigating language design. An enormous research effort, by hundreds of researchers over the past 20 years, has gone into making Haskell such a great 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.
 
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.
   
  +
More links to papers can be found at [http://www.dohaskell.com/ dohaskell].
If you know of Haskell (or related) papers that are missing, please add them. There's a lot out there.
 
   
  +
==Overview==
__TOC__
 
   
  +
;[http://www.cs.kent.ac.uk/people/staff/dat/miranda/whyfp90.pdf Why Functional Programming Matters] ∷ PDF
==Functional programming==
 
 
;[http://www.cs.chalmers.se/~rjmh/Papers/whyfp.html Why Functional Programming Matters]
 
 
:John Hughes. Comput. J. 32(2): 98-107 (1989)
 
:John Hughes. Comput. J. 32(2): 98-107 (1989)
   
  +
;[http://www.cs.kent.ac.uk/pubs/1997/224/index.html Higher-order + Polymorphic = Reusable]
;[http://research.microsoft.com/~simonpj/Papers/haskell-retrospective/index.htm Wearing the hair shirt: a retrospective on Haskell]
 
  +
:Simon Thompson, 1997.
:Simon Peyton Jones. Slides of an invited talk at POPL'03.
 
 
;[http://homepages.inf.ed.ac.uk/wadler/papers/hot/hot.ps.gz A HOT opportunity]
 
:Philip Wadler. Journal of Functional Programming, 7(2):127--128, March 1997.
 
 
==Runtime Systems==
 
 
;[http://research.microsoft.com/copyright/accept.asp?path=/users/simonpj/papers/spineless-tagless--gmachine.ps.gz&pub=34 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.
 
 
;[http://research.microsoft.com/~simonpj/Papers/eval-apply/index.htm 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.
 
 
;[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]
 
:Lennart Augustsson, J. Funct. Program. 3(1): 77-92 (1993)
 
 
;[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===
 
 
;[http://research.microsoft.com/copyright/accept.asp?path=/users/simonpj/papers/1997_profiling_TOPLAS.ps.gz&pub=ACM 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.
 
 
;[http://research.microsoft.com/~simonpj/Papers/profiling.ps.gz 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.
 
 
;[http://research.microsoft.com/~simonpj/Papers/1994_nonstrict-profiling_THESIS.ps.gz Execution profiling for non-strict functional languages]
 
:P Sansom, PhD thesis, University of Glasgow, Nov 1994.
 
 
===Garbage collection===
 
 
;[http://research.microsoft.com/~simonpj/Papers/non-stop/index.htm 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.
 
 
;[http://research.microsoft.com/~simonpj/Papers/inc-gc.htm Non-stop Haskell]
 
:Andy Cheadle, Tony Field, Simon Marlow, Simon Peyton Jones, and Lyndon While. ICFP 2000.
 
 
;[http://research.microsoft.com/~simonpj/Papers/gen-gc-for-haskell.ps.gz 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.
 
 
;[ftp://ftp.cs.york.ac.uk/pub/malcolm/rtgc.html An Incremental Garbage Collector for Embedded Real-Time Systems],
 
:Malcolm Wallace and Colin Runciman. Proceedings of Chalmers Winter Meeting, June 1993.
 
 
;[http://homepages.inf.ed.ac.uk/wadler/papers/leak/leak.ps.gz Fixing some space leaks with a garbage collector]
 
:Philip Wadler. Software Practice and Experience, 17(9):595-608, September 1987.
 
 
===Dynamic linking===
 
 
;[http://www.cse.unsw.edu.au/~dons/papers/PSSC04.html Plugging Haskell In]
 
:Andre 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
 
 
;[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.
 
 
===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 Analyses===
 
 
====CPR====
 
 
;[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.
 
 
====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.
 
 
;[http://research.microsoft.com/~simonpj/Papers/usage-types/usage.htm Simple Usage Polymorphism]
 
:Keith Wansbrough and Simon Peyton Jones; Workshop on Types In Compilation 2000.
 
 
;[http://research.microsoft.com/~simonpj/Papers/usage-types/usage.htm Once Upon a Polymorphic Type]
 
:Keith 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]
 
: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.
 
 
;[http://homepages.inf.ed.ac.uk/wadler/papers/stricttime/stricttime.ps.gz Strictness analysis aids time analysis]
 
:Philip Wadler. 15'th ACM Symposium on Principles of Programming Languages, San Diego, California, January 1988.
 
 
;[http://homepages.inf.ed.ac.uk/wadler/papers/strictnonflat/strictnonflat.ps.gz Strictness analysis on non-flat domains (by abstract interpretation over finite domains)]
 
:Philip Wadler. Chapter in Samson Abramsky and Chris Hankin, editors, Abstract Interpretation, Ellis Horwood, 1987.
 
 
====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.
 
 
;[http://homepages.inf.ed.ac.uk/wadler/papers/deforest/deforest.ps.gz Deforestation: transforming programs to eliminate trees]
 
:Philip Wadler. Theoretical Computer Science, (Special issue of selected papers from 2'nd European Symposium on Programming), 73: 231-248, 1990.
 
 
===Compiler construction===
 
 
;[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.
 
 
===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.
 
 
;[http://haskell.org/ghc/docs/papers/core.ps.gz An External Representation for the GHC Core Language]
 
:Andrew Tolmach
 
 
;[http://www.cse.unsw.edu.au/~chak/papers/SCP06.html System F with Type Equality Coercions]
 
:Martin Sulzmann, Manuel M. T. Chakravarty, and Simon Peyton Jones.
 
 
===Compilation by transformation===
 
 
;[http://research.microsoft.com/~simonpj/Papers/comp-by-trans-scp.ps.gz A transformation-based optimiser for Haskell]
 
:SL Peyton Jones and A Santos, Science of Computer Programming 32(1-3), pp3-47, September 1998.
 
 
;[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.
 
 
;[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.
 
 
;[http://research.microsoft.com/~simonpj/Papers/rules.htm Playing by the rules: rewriting as a practical optimisation technique in GHC]
 
:Simon Peyton Jones, Andrew Tolmach and Tony Hoare, Haskell Workshop 2001.
 
 
;[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.
 
 
==Type systems==
 
 
;[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.
 
 
;[http://www.cse.ogi.edu/~mpj/pubs/thih.html Typing Haskell in Haskell]
 
:Mark P. Jones, In Proceedings of the 1999 Haskell Workshop, Paris, France, October 1999. Published in Technical Report UU-CS-1999-28, Department of Computer Science, University of Utrecht.
 
 
===Pure type systems===
 
 
;[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.
 
 
===Unboxed values===
 
 
;[http://www.soi.city.ac.uk/~ross/papers/pointed.html 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.
 
 
;[http://research.microsoft.com/~simonpj/Papers/unboxed-values.ps.Z 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.
 
 
===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 2003), New Orleans, pp26-37, Jan 2003.
 
 
;[http://www.cwi.nl/~ralf/syb2/ Scrap more boilerplate: reflection, zips, and generalised casts]
 
:Ralf Laemmel and Simon Peyton Jones. appeared in Proceedings of ICFP 2004, ACM Press
 
 
;[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
 
 
;[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.
 
 
;[http://www.cs.uu.nl/research/projects/generic-haskell/ Generic Haskell: a language for generic programming]
 
:Johan Jeuring et al
 
 
===Modules===
 
 
;[http://research.microsoft.com/~simonpj/Papers/first-class-modules/index.htm First class modules for Haskell]
 
:Mark Shields and Simon Peyton Jones; FOOL'02.
 
 
;[http://research.microsoft.com/~simonpj/Papers/Nicklisch-modules.ps.gz An exploration of modular programs]
 
:Electronic proceedings of the 1996 Glasgow Functional Programming Workshop, J Nicklisch and SL Peyton Jones, Ullapool, July 1996.
 
 
===Exceptions===
 
 
;[http://research.microsoft.com/~simonpj/Papers/imprecise-exn-sem.htm Imprecise Exceptions, Co-Inductively]
 
:Andy Moran, Soeren Lassen, and Simon Peyton Jones. HOOTS'99.
 
 
;[http://research.microsoft.com/~simonpj/Papers/imprecise-exn.htm 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.
 
 
;[http://research.microsoft.com/~simonpj/Papers/asynch-exns.htm Asynchronous exceptions in Haskell]
 
:Simon Marlow, Simon Peyton Jones, Andy Moran and John Reppy, PLDI'01.
 
 
===Records===
 
 
;[http://research.microsoft.com/~simonpj/Papers/records.htm Lightweight Extensible Records for Haskell]
 
:Mark Jones and Simon Peyton Jones, Haskell Workshop 1999.
 
 
;[http://www.cs.uu.nl/~daan/download/papers/scopedlabels.pdf Extensible records with scoped labels]
 
:Daan Leijen. The 2005 Symposium on Trends in Functional Programming (TFP'05), Tallin, Estonia, September 2005.
 
 
;[http://www.cs.uu.nl/~daan/download/papers/fclabels.pdf First-class labels for extensible rows]
 
:Daan Leijen. Technical Report UU-CS-2004-51, Departement of Computer Science, Universiteit Utrecht, 2004.
 
 
===Meta programming===
 
 
;[http://research.microsoft.com/copyright/accept.asp?path=/users/simonpj/papers/dyntyping.ps.gz&pub=ACM Dynamic typing as staged type inference]
 
:MB Shields, T Sheard, and SL Peyton Jones, POPL98.
 
 
;[http://research.microsoft.com/~simonpj/Papers/meta-haskell/index.htm Template meta-programming for Haskell]
 
:Tim Sheard and Simon Peyton Jones, Proceedings of the Haskell Workshop, Pittsburgh, 2002
 
 
;[http://www.cse.unsw.edu.au/~chak/papers/SCK04.html 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.
 
 
===Parametricity===
 
 
;[http://homepages.inf.ed.ac.uk/wadler/papers/free/free.ps.gz Theorems for free!]
 
:Philip Wadler. 4'th International Conference on Functional Programming and Computer Architecture, London, September 1989.
 
 
===Type classes===
 
 
;[http://www.cse.ogi.edu/~mpj/pubs/springschool.html Functional Programming with Overloading and Higher-Order Polymorphism]
 
:Mark P. Jones, First International Spring School on Advanced Functional Programming Techniques, Baastad, Sweden, Springer-Verlag Lecture Notes in Computer Science 925, May 1995.
 
 
;[http://research.microsoft.com/~simonpj/Papers/type-class-design-space Type classes: exploring the design space]
 
:Simon Peyton Jones, Mark Jones, Erik Meijer, Haskell Workshop 1997.
 
 
;[http://research.microsoft.com/~simonpj/Papers/classhask.ps.gz 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.
 
 
;[http://research.microsoft.com/~simonpj/Papers/derive.htm Derivable Type classes, Ralf Hinze and Simon Peyton Jones]
 
:Haskell Workshop 2000.
 
 
;[http://www.cs.chalmers.se/pub/cs-reports/papers/overload-fpca-93.ps.Z Implementing Haskell overloading]
 
:Lennart Augustsson, 1993. FPCA. 65-73
 
 
;[http://www.cse.ogi.edu/~mpj/pubs/fpca93.html A system of constructor classes: overloading and implicit higher-order polymorphism]
 
:Mark P. Jones, In FPCA '93: Conference on Functional Programming Languages and Computer Architecture, Copenhagen, Denmark, June 1993.
 
 
;[http://www.cse.ogi.edu/~mpj/pubs/pldi93.html Implementing Type Classes]
 
:John Peterson and Mark P. Jones, In Proceedings of ACM SIGPLAN Symposium on Programming Language Design and Implementation, ACM SIGPLAN, June 1993.
 
 
;[http://homepages.inf.ed.ac.uk/wadler/papers/overload2/overload2.ps.gz A second look at overloading]
 
:Martin Odersky, Philip Wadler, Martin Wehr. 7'th International Conference on Functional Programming and Computer Architecture, ACM Press, San Diego, California, June 1995.
 
 
;[http://homepages.inf.ed.ac.uk/wadler/papers/class/class.ps.gz How to make ad-hoc polymorphism less ad hoc]
 
:Philip Wadler and Stephen Blott. 16'th Symposium on Principles of Programming Languages, ACM Press, Austin, Texas, January 1989.
 
 
===Functional dependencies===
 
 
;[http://research.microsoft.com/~simonpj/Papers/fd-chr/index.htm 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).
 
 
;[http://www.cse.ogi.edu/~mpj/pubs/fundeps.html Type Classes with Functional Dependencies]
 
:Mark P. Jones, In Proceedings of the 9th European Symposium on Programming, ESOP 2000, Berlin, Germany, March 2000, Springer-Verlag LNCS 1782.
 
 
===Generalised Algebraic Data Types===
 
 
;[http://research.microsoft.com/~simonpj/papers/gadt/index.htm Simple unification-based type inference for GADTs]
 
:Simon Peyton Jones, Dimitrios Vytiniotis, Stephanie Weirich, and Geoffrey Washburn. Submitted to PLDI 2005
 
 
;[http://www.cis.upenn.edu/~geoffw/research/papers/MS-CIS-05-26.pdf Wobbly types: type inference for generalised algebraic data types]
 
:S Peyton Jones, G. Washburn, and S. Weirich. 2004.
 
 
===Associated types===
 
 
;[http://www.haskell.org/~simonmar/papers/assoc.pdf 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
 
 
;[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.
 
 
;[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.
 
 
;[http://www.cse.unsw.edu.au/~chak/papers/SCP06.html System F with Type Equality Coercions]
 
:Martin Sulzmann, Manuel M. T. Chakravarty, and Simon Peyton Jones.
 
 
===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)
 
 
===Object oriented Haskell===
 
 
;[http://research.microsoft.com/~simonpj/Papers/oo-haskell/index.htm Object-Oriented Style Overloading for Haskell]
 
:Mark Shields and Simon Peyton Jones; BABEL workshop '01.
 
 
;[http://www.cse.unsw.edu.au/~chak/papers/PC03.html 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.
 
 
;[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
 
 
===Restricted Datatypes===
 
 
;[http://www.cs.chalmers.se/~rjmh/Papers/restricted-datatypes.ps Restricted datatypes]
 
:John Hughes. 1999 Haskell workshop
 
 
===Pattern matching===
 
 
====Pattern guards====
 
 
;[http://research.microsoft.com/~simonpj/Papers/pat.htm Pattern Guards and Transformational Patterns]
 
:Martin Erwig and Simon Peyton Jones; Haskell Workshop 2000.
 
 
====Views====
 
 
;[http://www.haskell.org/development/views.html Views: An Extension to Haskell Pattern Matching]
 
:Warren Burton, Erik Meijer, Patrick Sansom, Simon Thompson and Phil Wadler.
 
 
;[http://homepages.inf.ed.ac.uk/wadler/papers/view/view.ps.gz Views: A way for pattern matching to cohabit with data abstraction]
 
:POPL 14 (1987), 307-313.
 
 
==Monads==
 
 
;[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.
 
 
;[http://www.cse.ogi.edu/~mpj/pubs/modinterp.html Monad Transformers and Modular Interpreters]
 
:Sheng Liang, Paul Hudak, and Mark P. Jones, In Conference Record of POPL'95: 22nd ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, San Francisco, CA, January 1995
 
 
;[http://www.cse.ogi.edu/~mpj/pubs/composing.html Composing Monads]
 
:Mark P. Jones and Luc Duponcheel Research Report YALEU/DCS/RR-1004, Yale University, New Haven, Connecticut, USA, December 1993.
 
 
;[http://homepages.inf.ed.ac.uk/wadler/papers/effectstocl/effectstocl.ps.gz The marriage of effects and monads]
 
:Philip Wadler and Peter Thiemann. Submitted to ACM Transactions on Computational Logic.
 
 
;[http://homepages.inf.ed.ac.uk/wadler/papers/monadsdeclare/monadsdeclare.ps.gz How to declare an imperative]
 
:Philip Wadler. ACM Computing Surveys, 29(3):240--263, September 1997. A shorter version was an invited paper at ILPS 95, appearing in John Lloyd, editor, International Logic Programming Symposium, MIT Press, December 1995.
 
 
;[http://homepages.inf.ed.ac.uk/wadler/papers/composable/composable.ps.gz Monads and composable continuations]
 
:Philip Wadler. Lisp and Symbolic Computation, Special issue on continuations, 7(1):39-56, January 1994.
 
 
;[http://homepages.inf.ed.ac.uk/wadler/papers/marktoberdorf/marktoberdorf.ps.gz Monads for functional programming]
 
:Philip Wadler. In M. Broy, editor, Marktoberdorf Summer School on Program Design Calculi, Springer Verlag, NATO ASI Series F: Computer and systems sciences, Volume 118, August 1992. Also in J. Jeuring and E. Meijer, editors, Advanced Functional Programming, Springer Verlag, LNCS 925, 1995.
 
 
;[http://homepages.inf.ed.ac.uk/wadler/papers/monads/monads.ps.gz Comprehending monads]
 
:Philip Wadler. Mathematical Structures in Computer Science, Special issue of selected papers from 6'th Conference on Lisp and Functional Programming, 2:461-493, 1992.
 
 
;[http://homepages.inf.ed.ac.uk/wadler/papers/monadscomb/monadscomb.ps.gz Combining monads]
 
:David King and Philip Wadler. Glasgow Workshop on Functional Programming, Springer Verlag Workshops in Computing Series, Ayr, July 1992.
 
 
;[http://homepages.inf.ed.ac.uk/wadler/papers/essence/essence.ps.gz The essence of functional programming]
 
:Philip Wadler. Invited talk, 19'th Symposium on Principles of Programming Languages, ACM Press, Albuquerque, January 1992.
 
 
==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.
 
 
==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.
 
 
===Lists===
 
 
;[http://homepages.inf.ed.ac.uk/wadler/papers/vanish/vanish.ps.gz The concatenate vanishes]
 
:Philip Wadler. Note. December 1987
 
 
;[http://foxnet.cs.cmu.edu/people/cokasaki/papers.html#random-access Purely Functional Random-Access Lists]
 
:Chris Okasaki. Functional Programming Languages and Computer Architecture, June 1995, pages 86-95.
 
 
===Arrays===
 
 
;[http://www.cse.unsw.edu.au/~chak/papers/CK03.html 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.
 
 
;[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.
 
 
;[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.
 
 
;[http://homepages.inf.ed.ac.uk/wadler/papers/array/array.ps.gz A new array operation]
 
:Philip Wadler. Proceedings of the Workshop on Graph Reduction, Santa Fe, New Mexico, J. Fasel and R. Keller, editors, Springer-Verlag, October 1986.
 
 
;[http://www.iis.sinica.edu.tw/~trc/lfp94.ps A randomized implementation of multiple functional arrays]
 
:Tyng-Ruey Chuang, In Proceedings of the 1994 ACM Conference on Lisp and Functional Programming, pages 173-184. Orlando, Florida, USA, June 1994.
 
 
===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.
 
 
;[http://foxnet.cs.cmu.edu/people/cokasaki/papers.html#queues Simple and Efficient Purely Functional Queues and Deques]
 
:Chris Okasaki. Journal of Functional Programming, 5(4):583-592, October 1995.
 
 
;[http://foxnet.cs.cmu.edu/people/cokasaki/papers.html#priority Optimal Purely Functional Priority Queues]
 
:Gerth Stølting Brodal and Chris Okasaki, Journal of Functional Programming, 6(6), December 1996.
 
 
===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.
 
 
===Graphs===
 
 
;[http://www.cse.ogi.edu/~jl/biblio-functional.html Structuring Depth First Search Algorithms in Haskell]
 
:David King and John Launchbury. Proc. ACM Principles of Programming Languages, San Francisco, 1995.
 
 
;[http://www.cse.ogi.edu/~jl/ Graph Algorithms with a Functional Flavour]
 
:John Launchbury, Advanced Functional Programming, First International Spring School on Advanced Functional Programming Techniques, Bastad, Sweden, LNCS 925,p. 308-331, 1995 (editors: J. Jeuring, E. Meijer).
 
 
;[http://www.cs.orst.edu/~erwig/papers/abstracts.html#JFP01 Inductive Graphs and Functional Graph Algorithms]
 
Martin Erwig
 
 
===Collections===
 
 
;[http://research.microsoft.com/~simonpj/Papers/collections.ps.gz Bulk types with class]
 
:SL Peyton Jones, Electronic proceedings of the 1996 Glasgow Functional Programming Workshop, Ullapool, July 1996.
 
 
===Matrices===
 
 
[http://www.dcs.glasgow.ac.uk/jfp/bibliography/References/grantswz1996:143.html Sparse matrix representations in a functional language]
 
:P.W. Grant, J.A. Sharp, M.F. Webster and X. Zhang, Journal of Functional Programming, 6(1):143-170, January 1996.
 
 
===Binary===
 
 
;[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 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]
 
:Malcolm Wallace and Colin Runciman. proceedings of the International Symposium on Memory Management, Vancouver, Canada, Oct 1998.
 
 
===Nested Datatypes===
 
 
;[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.
 
 
==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]
 
: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
 
 
;[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)
 
 
;[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==
 
 
===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.
 
 
===Editors===
 
 
;[http://www.haskell.org/~simonmar/papers/vshaskell.pdf 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
 
 
;[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.
 
 
===Documentation===
 
 
;[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
 
 
===Lexers===
 
 
;[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.
 
 
===Parsers===
 
 
;[http://www.cs.uu.nl/~daan/download/papers/parsec-paper.pdf Parsec: Direct Style Monadic Parser Combinators for the Real World]
 
:Daan Leijen and Erik Meijer. Technical Report UU-CS-2001-35, Departement of Computer Science, Universiteit Utrecht, 2001.
 
 
===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
 
 
;[http://homepages.inf.ed.ac.uk/wadler/papers/prettier/prettier.pdf A prettier printer]
 
:Philip Wadler. The Fun of Programming. A symposium in honour of Professor Richard Bird's 60th birthday Examination Schools, Oxford, 24-25 March 2003.
 
 
===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.
 
 
;[http://conal.net/papers/icfp97/ Functional Reactive Animation]
 
:Conal Elliott and Paul Hudak. In the proceedings of the 1997 ACM SIGPLAN International Conference on Functional Programming (ICFP '97).
 
 
;[http://conal.net/papers/padl99/ From Functional Animation to Sprite-Based Display]
 
:Conal Elliott, In the Proceedings of PADL '99.
 
 
;[http://research.microsoft.com/scripts/pubDB/pubsasp.asp?RecordID=187 A "Fifteen Puzzle" in Fran]
 
:Conal Elliott. October, 1998.
 
 
;[http://research.microsoft.com/scripts/pubDB/pubsasp.asp?RecordID=191 Two-handed Image Navigation in Fran]
 
:Conal Elliott. 1998 Glasgow Functional Programming Workshop.
 
 
;[http://conal.net/papers/plilpalp98/ Functional Implementations of Continuous Modeled Animation]
 
:Conal Elliott. In the Proceedings of PLILP/ALP '98.
 
 
===Robots===
 
 
;[http://haskell.org/frob/padl99/padl99.ps Lambda in Motion: Controlling Robots With Haskell]
 
:John Peterson, Paul Hudak, and Conal Elliott In the proceedings of PADL '99.
 
 
===Graphics===
 
 
;[http://conal.net/papers/Vertigo/ Programming Graphics Processors Functionally]
 
:Conal Elliott. Proceedings of the 2004 Haskell Workshop.
 
 
===User Interfaces===
 
 
;[http://www.galois.com/~sof/papers/thesis.ps.gz Composing graphical user interfaces in a purely functional language]
 
:PhD Thesis, Department of Computing Science, University of Glasgow, June 1998.
 
 
;[http://www.galois.com/~sof/papers/haggis-tutorial.ps.gz Composing the User Interface with Haggis]
 
:Sigbjorn Finne and Simon Peyton Jones Proceedings of the Second International School on Advanced Functional Programming, Olympia, WA, USA, August 26-30, 1996. LNCS 1129.
 
 
;[http://www.cs.uu.nl/~daan/download/papers/wxhaskell.pdf wxHaskell: A portable and concise GUI library for Haskell]
 
:Daan Leijen. The ACM SIGPLAN Haskell workshop, Snowbird, Utah, September 22, 2004.
 
 
==Domain Specific Languages==
 
 
;[http://www.cs.uu.nl/~daan/download/papers/dsec.ps Domain Specific Embedded Compilers]
 
:Daan Leijen and Erik Meijer. 2nd USENIX Conference on Domain-Specific Languages (DSL'99), Austin, Texas, October 1999. Also appeared in ACM SIGPLAN Notices 35, 1, January 2000.
 
 
===Hardware Description===
 
   
;[http://www.cs.chalmers.se/~koen/Papers/lava.ps Lava: Hardware Design in Haskell]
+
;[http://research.microsoft.com/~simonpj/papers/history-of-haskell/index.htm The History of Haskell]
  +
:Simon Peyton Jones, Paul Hudak, John Hughes, and Philip Wadler, 2006
:Per Bjesse, Koen Claessen, Mary Sheeran, Satnam Singh
 
   
  +
==Categories==
;[http://www.cs.chalmers.se/~koen/Papers/lic.ps An Embedded Language Approach to Hardware Description and Verification]
 
:Koen Claessen
 
   
  +
*[[/Runtime systems|Runtime systems]]
==Foreign language interfaces==
 
  +
*[[/Parallelism and concurrency|Parallelism and concurrency]]
  +
*[[/Compilation|Compilation]]
  +
*[[/Type systems|Type systems]]
  +
*[[/Data structures|Data structures]]
  +
*[[/Monads and arrows|Monads and arrows]]
  +
*[[/Generics|Generic programming]]
  +
*[[/Testing and correctness|Proofs, verification and testing]]
  +
*[[/Program development|Software application development]]
  +
*[[/Domain specific languages|Domain specific languages]]
  +
*[[/Functional reactive programming|Functional reactive programming]]
  +
*[[/Functional pearls|Functional pearls: beautiful design]]
   
  +
== Authors ==
;[http://research.microsoft.com/~simonpj/Papers/com.ps.gz Scripting COM components in Haskell]
 
  +
[[/Authors|Authors Index]]
:SL Peyton Jones, E Meijer, and D Leijen, Software Reuse 1998.
 
   
  +
== Top 10 ==
;[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.
 
   
  +
[[/Top_10|Most cited]] Haskell papers
;[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.
 
   
  +
== Bibliography ==
;[http://www.research.microsoft.com/users/simonpj/papers/comserve.ps.gz Calling heaven from hell, and hell from heaven]
 
:Sigbjorn Finne, Daan Leijen, Erik Meijer and Simon Peyton Jones. ICFP'99
 
   
  +
[http://www.catamorphism.net/ Functional Programming Bibliography]
;[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.
 
   
  +
A searchable bibliographic database, concentrating on Haskell, with over 1,500 citations.
;[http://www.galois.com/~sof/papers/hdirect.ps.gz H/Direct: A Binary Foreign Language Interface for Haskell]
 
:Sigbjorn Finne, Daan Leijen, Erik Meijer and Simon Peyton Jones. Presented at the International Conference on Functional Programming, Baltimore, M
 

Revision as of 15:12, 19 June 2014



A lot of documentation exists about Haskell, and its foundations, in the form of research papers written by those investigating language design. An enormous research effort, by hundreds of researchers over the past 20 years, has gone into making Haskell such a great 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.

More links to papers can be found at dohaskell.

Overview

Why Functional Programming Matters ∷ PDF
John Hughes. Comput. J. 32(2): 98-107 (1989)
Higher-order + Polymorphic = Reusable
Simon Thompson, 1997.
The History of Haskell
Simon Peyton Jones, Paul Hudak, John Hughes, and Philip Wadler, 2006

Categories

Authors

Authors Index

Top 10

Most cited Haskell papers

Bibliography

Functional Programming Bibliography

A searchable bibliographic database, concentrating on Haskell, with over 1,500 citations.