ABSTRACT
For many years I had been fruitlessly trying to sell functional programming and Haskell to solve real world problems such as scripting and data-intensive three-tier distributed web applications. The lack of widespread adoption of Haskell is a real pity. Functional programming concepts are key to curing many of the headaches that plague the majority of programmers, who today are forced to use imperative languages. If the mountain won't come to Mohammed, Mohammed must go to the mountain, and so I left academia to join industry. Instead of trying to convince imperative programmers to forget everything they already know and learn something completely new, I decided to infuse existing imperative object-oriented programming languages with functional programming features. As a result, functional programming has finally reached the masses, except that it is called Visual Basic 9 instead of Haskell 98.
- http://caml.inria.fr/Google Scholar
- http://docs.google.com/view?docid=ddhp95vd_6hg3qhcGoogle Scholar
- http://docs.google.com/view?docid=k73_1ggr36hGoogle Scholar
- http://dreamsongs.com/worseisbetter.htmlGoogle Scholar
- http://en.wikipedia.org/wiki/pimp_my_rideGoogle Scholar
- http://haskelldb.sourceforge.net/Google Scholar
- http://research.microsoft.com/~toddpro/papers/law.htmGoogle Scholar
- http://research.microsoft.com/fsharp/about.aspxGoogle Scholar
- http://research.microsoft.com/specsharp/Google Scholar
- http://research.sun.com/projects/plrg/fortress.pdfGoogle Scholar
- http://www.artima.com/weblogs/viewpost.jsp?thread=182412Google Scholar
- http://www.cis.upenn.edu/~bcpierce/types/archives/1988/msg00042.htmlGoogle Scholar
- http://www.cs.iastate.edu/~leavens/jml/documentation.shtmlGoogle Scholar
- http://www.doc.ic.ac.uk/~scd/Google Scholar
- http://www.eiffel.com/Google Scholar
- http://www.javac.info/closures-v05.htmlGoogle Scholar
- http://www.jclark.com /xml/xmlns.htmGoogle Scholar
- http://www.plt-scheme.org /publications.htmlGoogle Scholar
- http://www.scala-lang.org/Google Scholar
- http://www.w3.org/tr/xquery/Google Scholar
- http://www.w3.org/xml/schemaGoogle Scholar
- The Haskell 98 Foreign Function Interface 1.0, 2003.Google Scholar
- Joe Armstrong. Programming Erlang: Software for a Concurrent World. Pragmatic Bookshelf, 2007. Google ScholarDigital Library
- Nick Benton, Luca Cardelli, and Cédric Fournet. Modern Concurrency Abstractions for C. ACM TOPLAS, 26(5):769--804, 2004. Google ScholarDigital Library
- Véronique Benzaken, Giuseppe Castagna, and Alain Frisch. CDuce: an XML-Centric General-Purpose Language. In Proceedings ICFP, 2003. Google ScholarDigital Library
- Gavin Bierman. Formalizing and Extending C# Type Inference. In Proceedings FOOL/WOOD, 2007.Google Scholar
- Gavin Bierman, Erik Meijer, and Wolfram Schulte. The essence of Data Access in Cω. In Proceedings ECOOP, volume 3586 of LNCS, 2005. Google ScholarDigital Library
- Gavin Bierman, Erik Meijer, and Mads Torgersen. Lost in Translation: Formalizing Proposed Extensions to C#. In Proceedings OOPSLA, 2007. Google ScholarDigital Library
- Gavin Bierman and Alisdair Wren. First-Class Relationships in an Object-Oriented Language. In Proceedings ECOOP, volume 3586 of LNCS, 2005. Google ScholarDigital Library
- Per Bjesse, Koen Claessen, Mary Sheeran, and Satnam Singh. Lava: hardware design in haskell. SIGPLAN Notices, 34(1):174--184, 1999. Google ScholarDigital Library
- Matthew Bortolin. The Dharma of Star Wars. Wisdom Publishers Inc., Boston, 2005.Google Scholar
- Gilad Bracha. Pluggable Type Systems. In Proceedings OOPSLA Workshop On The Revival Of Dynamic Languages, 2004.Google Scholar
- Gilad Bracha and David Griswold. Strongtalk: typechecking smalltalk in a production environment. ACM SIGPLAN Notices, 28(10):215--230, 1993. Google ScholarDigital Library
- Niklas Broberg. Haskell Server pages Through Dynamic Loading. In Proceedings Haskell Workshop, 2005. Google ScholarDigital Library
- Magnus Carlsson and Thomas Hallgren. FUDGETS - A Graphical User interface in a Lazy Functional Language. In Proceedings FPCA, 1993. Google ScholarDigital Library
- James Cheney and Ralf Hinze. First-Class Phantom Types. Computer and Information Science Technical Report TR2003-1901, Cornell University, 2003.Google Scholar
- Pip Coburn. The Change Function: Why Some Technologies Take Off and Others Crash and Burn. 2006. Google ScholarDigital Library
- Jeffrey Dean and Sanjay Ghemawat. MapReduce: Simplified Data Processing on Large Clusters. In Proceedings OSDI, 2004. Google ScholarDigital Library
- Conal Elliott, Sigbjørn Finne, and Oege de Moor. Compiling embedded languages. Journal of Functional Programming, 13(2), 2003. Updated version of paper by the same name that appeared in SAIG'00 proceedings. Google ScholarDigital Library
- Mary F. Fernandez, Jérôme Siméon, and Philip Wadler. A semi-monad for semi-structured data. In Proceedings of the 8th International Conference on Database Theory, volume 1973 of LNCS, 2001. Google ScholarDigital Library
- Cormac Flanagan. Hybrid type checking. In Proceedings POPL, 2006. Google ScholarDigital Library
- Matthew Fluet and Riccardo Pucella. Phantom types and subtyping. Journal of Functional Programming, 16(6):751--791, 2006. Google ScholarDigital Library
- Matthew Fluet and Riccardo Pucella. Practical datatype specializations with phantom types and recursion schemes. Electronic Notes on Theoretical Computer Science, 148(2):211--237, 2006. Google ScholarDigital Library
- Peter Freyd. Recursive types reduced to inductive types. In Proceedings LICS, 1990.Google ScholarCross Ref
- Jeremy Gibbons and Oege de Moor, editors. The Fun of Programming. Cornerstones in Computing. Palgrave, 2003.Google ScholarCross Ref
- Jim Gray and Andreas Reuter. Transaction Processing: Concepts and Techniques. Morgan Kaufmann Publishers Inc., San Francisco, CA, USA, 1992. Google ScholarDigital Library
- Matthew Harren, Mukund Raghavachari, Oded Shmueli, Michael G. Burke, Rajesh Bordawekar, Igor Pechtchanski, and Vivek Sarkar. XJ: Facilitating XML Processing in Java. In Proceedings WWW, 2005. Google ScholarDigital Library
- Haruo Hosoya, Jérôme Vouillon, and Benjamin C. Pierce. Regular expression types for XML. ACM TOPLAS, 27(1):46--90, 2005. Google ScholarDigital Library
- Paul Hudak. Building domain-specific embedded languages. ACM Computing Surveys, 28(4es):196, 1996. Google ScholarDigital Library
- J. Hughes. Why Functional Programming Matters. Computer Journal, 32(2):98--107, 1989. Google ScholarDigital Library
- Nigel Perry, Jason Smith and Erik Meijer. Mondrian for .NET. DDJ, 2002. Google ScholarDigital Library
- Simon Peyton Jones. Tackling the awkward squad: monadic input/output, concurrency, exceptions, and foreign-language calls in haskell. In Marktoberdorf Summer School, 2000.Google Scholar
- Simon Peyton Jones, Mark Shields, John Launchbury, and Andrew Tolmach. Bridging the Gulf: a Common Intermediate Language for ML and Haskell. In Proceedings POPL, 1998. Google ScholarDigital Library
- Richard Kelsey, William Clinger, and Jonathan Rees (Editors). Revised 5 report on the algorithmic language Scheme. ACM SIGPLAN Notices, 33(9):26--76, 1998. Google ScholarDigital Library
- Donald Kossmann, Michael Carey, Don Chamberlin, Mary Fernandez, Daniela Florescu, Giorgio Ghelli, Jonathan Robie, and Jerome Simeon. Xqueryp: An XML application development language. In Proceedings XML, 2006.Google Scholar
- R. Lämmel and E. Meijer. Mappings make data processing go 'round' -- An inter-paradigmatic mapping tutorial. In Generative and Transformation Techniques in Software Engineering, volume 4143 of LNCS, 2005.Google Scholar
- R. Lämmel and E. Meijer. Revealing the X/O impedance mismatch (Changing lead into gold). In Datatype-Generic Programming, volume 4719 of LNCS, 2007. Google ScholarDigital Library
- Ralf Lämmel and Dave Remy. Functional OO Programming with Triangular Circles. In Proceedings XML, 2006.Google Scholar
- Peter J. Landin. The next 700 programming languages. Communications of the ACM, 9(3):157--166, March 1966. Google ScholarDigital Library
- John Launchbury, Jeffrey R. Lewis, and Byron Cook. On embedding a microarchitectural design language within haskell. In ICFP '99: Proceedings of the fourth ACM SIGPLAN international conference on Functional programming, 1999. Google ScholarDigital Library
- Daan Leijen. Functional Components: COMComponents in Haskell. Master's thesis, Department of Computer Science, University of Amsterdam, September 1998.Google Scholar
- Daan Leijen and Erik Meijer. Domain specific embedded compilers. In Proceedings DSL, 1999. Also appeared in ACM SIGPLAN Notices 35, 1, (Jan. 2000). Google ScholarDigital Library
- Daan Leijen, Erik Meijer, and James Hook. Haskell as an Automation Controller. In The 3rd International Summerschool on Advanced Functional Programming, volume 1608 of LNCS, 1999.Google Scholar
- Sheng Liang. Modular Monadic Semantics and Compilation. 1997.Google Scholar
- Sheng Liang. Java Native Interface: Programmer's Guide and Reference. Addison-Wesley, 1999. Google ScholarDigital Library
- Andres Löh and Ralf Hinze. Open data types and open functions. In Proceedings PPDP, 2006. Google ScholarDigital Library
- Erik Meijer. Server-Side Web Scripting in Haskell. Journal of Functional Programming, 10(1):1--18, january 2000. Google ScholarDigital Library
- Erik Meijer and Brian Beckman. XLINQ: XML Programming Refactored (The Return Of The Monoids). In Proceedings XML, 2005.Google Scholar
- Erik Meijer, Brian Beckman, and Gavin Bierman. Linq: reconciling object, relations and XML in the .net framework. In Proceedings SIGMOD international conference on Management of data, 2006. Google ScholarDigital Library
- Erik Meijer and Koen Claessen. The Design and Implementation of Mondrian. In Proceedings Haskell Workshop, 1997.Google Scholar
- Erik Meijer and Peter Drayton. Static Typing Where Possible, Dynamic Typing When Needed: The End of the Cold War Between Programming Languages. In Proceedings OOPSLA Workshop On The Revival Of Dynamic Languages, 2004.Google Scholar
- Erik Meijer and Sigbjorn Finne. Lambada, Haskell as a Better Java. In Proceedings Haskell Workshop, 2000.Google Scholar
- Erik Meijer, Maarten Fokkinga, and Ross Paterson. Functional Programming with Bananas, Lenses, Envelopes, and Barbed Wire. In Proceedings FPCA, volume 523 of LNCS, 1991. Google ScholarDigital Library
- Erik Meijer and John Gough. Technical overview of the common language runtime, 2000.Google Scholar
- Erik Meijer and Graham Hutton. Bananas in space: extending fold and unfold to exponential types. In Proceedings FPCA, 1995. Google ScholarDigital Library
- Erik Meijer, Daan Leijen, and James Hook. Client-side Web Scripting with HaskellScript. In Proceedings PADL, volume 1551 of LNCS, 1998. Google ScholarDigital Library
- Erik Meijer, Nigel Perry, and Arjan van Yzendoorn. Scripting .NET Using Mondrian. In Proceedings ECOOP, volume 2072 of LNCS, 2001. Google ScholarDigital Library
- Erik Meijer and Wolfram Schulte. XML Types for C#. BillG ThinkWeek Submission Winter 2001.Google Scholar
- Erik Meijer, Wolfram Schulte, and Gavin Bierman. Programming with Circles, Triangles and Rectangles. In Proceedings XML, 2003.Google Scholar
- Erik Meijer, Wolfram Schulte, and Gavin Bierman. Unifying Tables, Objects and Documents. In Proceedings DP-COOL, volume 27 of John von Neumann Institute of Computing, 2005.Google Scholar
- Erik Meijer and Mark Shields. XMLambda: A Functional Programming Language for Constructing and Manipulating XML Documents. Unpublished draft.Google Scholar
- Erik Meijer, Amanda Silver, and Paul Vick. Overview Of Visual Basic 9.0. In Proceedings XML, 2005.Google Scholar
- Erik Meijer and Danny van Velzen. Haskell Server Pages: Functional Programming and the Battle for the Middle Tier. In Proceedings Haskell Workshop, 2000.Google Scholar
- Robin Milner, Mads Tofte, Robert Harper, and David MacQueen. The Definition of Standard ML (Revised). The MIT Press, 1997. Google ScholarDigital Library
- Adriaan Moors, Frank Piessens, and Martin Odersky. Towards equal rights for higher-kinded types. In Proceedings MPOOL, 2007.Google Scholar
- Thomas Nordin and Simon Peyton Jones. Green Card: a Foreign-language Interface for Haskell. In Proceedings Haskell Workshop, 1997.Google Scholar
- Andy Oram and Greg Wilson, editors. Beautiful Code: Leading Programmers Explain How They Think. O'Reilly, 2007. Google ScholarDigital Library
- Matthew Parkinson. Class invariants: The end of the road? In Proceedings IWACO, 2007.Google Scholar
- Benjamin C. Pierce. Types and Programming Languages. The MIT Press, Cambridge, Massachusetts, 2002. Google ScholarDigital Library
- Rob Pike, Sean Dorward, Robert Griesemer, and Sean Quinlan. Interpreting the data: Parallel analysis with sawzall. Science of Computer Programming, 13(4):277--298, 2005. Google ScholarDigital Library
- Riccardo Pucella, Erik Meijer, and Dino Oliva. Aspects de la Programmation d'Applications Win32 avec un Langage Fonctionnel. In Journées Francophones des Langages Applicatifs, 1999.Google Scholar
- Christopher Re, Jerome Simeon, and Mary Fernandez. A complete and efficient algebraic compiler for xquery. In Proceedings ICDE, 2006. Google ScholarDigital Library
- Ben Rudiak-Gould, Alan Mycroft, and Simon Peyton Jones. Haskell is not not ml. In Proceedings ESOP, 2006. Google ScholarDigital Library
- Claudio Russo. The joins concurrency library. In Proceedings PADL, volume 4354 of LNCS, 2007. Google ScholarDigital Library
- Mark Shields and Erik Meijer. Type-Indexed Rows. In Proceedings POPL, 2001. Google ScholarDigital Library
- Jeremy Graham Siek and Walid Taha. Gradual typing for objects. In Proceedings ECOOP, 2007. Google ScholarDigital Library
- Erik Meijer Sigbjorn Finne, Daan Leijen and Simon Peyton Jones. H/Direct: A Binary Foreign Language Interface for Haskell. In Proceedings ICFP, 1998. Google ScholarDigital Library
- Erik Meijer Sigbjorn Finne, Daan Leijen and Simon Peyton Jones. Calling Hell from Heaven and Heaven from Hell. In Proceedings ICFP, 1999. Google ScholarDigital Library
- Erik Meijer Simon Peyton Jones and Daan Leijen. Scripting COM Components in Haskell. In Proceedings Software Reuse, 1998. Google ScholarDigital Library
- P. Thiemann. A Typed Representation for HTML and XML Documents in Haskell. Journal of Functional Programming, 12(5):435--468, July 2002. Google ScholarDigital Library
Index Terms
- Confessions of a used programming language salesman
Recommendations
Confessions of a used programming language salesman
Proceedings of the 2007 OOPSLA conferenceFor many years I had been fruitlessly trying to sell functional programming and Haskell to solve real world problems such as scripting and data-intensive three-tier distributed web applications. The lack of widespread adoption of Haskell is a real pity. ...
Comments