Haskell Boards the Ferry - Database-Supported Program Execution for Haskell

Relational database management systems can be used as a coprocessor for general-purpose programming languages, especially for those program fragments that carry out data-intensive and data-parallel computations. In this paper we present a Haskell library for database-supported program execution. Data-intensive and data-parallel computations are expressed using familiar combinators from the standard list prelude and are entirely executed on the database coprocessor. Programming with the expressive list comprehension notation is also supported. The library, in addition to queries of basic types, supports computations over arbitrarily nested tuples and lists. The implementation avoids unnecessary data transfer and context switching between the database coprocessor and the programming language runtime by ensuring that the number of generated relational queries is only determined by the program fragment’s type and not by the database size.

[1]  Marcello M. Bonsangue,et al.  Formal Methods for Components and Objects - 8th International Symposium, FMCO 2009, Eindhoven, The Netherlands, November 4-6, 2009. Revised Selected Papers , 2010, FMCO.

[2]  Ralf Hinze,et al.  Haskell 98 — A Non−strict‚ Purely Functional Language , 1999 .

[3]  Guy E. Blelloch,et al.  Compiling Collection-Oriented Languages onto Massively Parallel Computers , 1990, J. Parallel Distributed Comput..

[4]  Limsoon Wong,et al.  Kleisli, a functional query system , 2000, J. Funct. Program..

[5]  Morten Rhiger A Foundation for Embedded Languages , 2002 .

[6]  Henrik Nilsson,et al.  Mixed-Level Embedding and JIT Compilation for an Iteratively Staged DSL , 2010, WFLP.

[7]  Simon L. Peyton Jones,et al.  Template meta-programming for Haskell , 2002, Haskell '02.

[8]  Simon L. Peyton Jones,et al.  Comprehensive comprehensions , 2007, Haskell '07.

[9]  Martin L. Kersten,et al.  MIL primitives for querying a fragmented world , 1999, The VLDB Journal.

[10]  Geoffrey Mainland,et al.  Nikola: embedding compiled GPU functions in Haskell , 2010 .

[11]  Andrew Kennedy,et al.  Proceedings of the 2006 workshop on ML , 2006, ICFP 2006.

[12]  Brian Beckman,et al.  LINQ: reconciling object, relations and XML in the .NET framework , 2006, SIGMOD Conference.

[13]  Torsten Grust,et al.  FERRY: database-supported program execution , 2009, SIGMOD Conference.

[14]  Philip Wadler,et al.  Links: Web Programming Without Tiers , 2006, FMCO.

[15]  Philip Wadler,et al.  Views: a way for pattern matching to cohabit with data abstraction , 1987, POPL '87.

[16]  Peyton Jones,et al.  Haskell 98 language and libraries : the revised report , 2003 .

[17]  Simon L. Peyton Jones,et al.  Data parallel Haskell: a status report , 2007, DAMP '07.

[18]  Jeremy Gibbons Proceedings of the third ACM Haskell symposium on Haskell , 2010, ICFP 2010.

[19]  Manuel M. T. Chakravarty,et al.  More types for nested data parallel programming , 2000, ICFP '00.

[20]  Geoffrey Mainland Why it's nice to be quoted: quasiquoting for haskell , 2007, Haskell '07.

[21]  Philip Wadler,et al.  Comprehending monads , 1990, LISP and Functional Programming.

[22]  Torsten Grust,et al.  Avalanche-safe LINQ compilation , 2010, Proc. VLDB Endow..

[23]  Mario Rodríguez-Artalejo,et al.  Functional and Constraint Logic Programming , 2001, CCL.

[24]  Torsten Grust,et al.  Let SQL drive the XQuery workhorse (XQuery join graph isolation) , 2010, EDBT '10.

[25]  Don Syme,et al.  Leveraging .NET meta-programming components from F#: integrated queries and interoperable heterogeneous execution , 2006, ML '06.

[26]  Daan Leijen,et al.  Domain specific embedded compilers , 1999, DSL '99.

[27]  Sherif Sakr,et al.  A SQL: 1999 code generator for the pathfinder xquery compiler , 2007, SIGMOD '07.

[28]  Paul Hudak,et al.  Modular domain specific languages and tools , 1998, Proceedings. Fifth International Conference on Software Reuse (Cat. No.98TB100203).

[29]  Jan Van den Bussche,et al.  Simulation of the nested relational algebra by the flat relational algebra, with an application to the complexity of evaluating powerset algebra expressions , 2001, Theor. Comput. Sci..

[30]  Simon L. Peyton Jones Harnessing the Multicores: Nested Data Parallelism in Haskell , 2008, APLAS.