Abstract
Domain-specific languages facilitate solving problems in a targeted domain by providing features particular to the domain. Declarative domain-specific languages have the additional benefit that users specify what something means rather than how to do something. As a result, the language compiler is free to choose the best implementation strategies and to generate multiple artifacts from a single description. pads/ml is a declarative data description language designed to facilitate ad hoc data management. From a single description, the compiler generates a myriad of artifacts, including data structures for the in-memory representation of the data and parsers and printers. In this paper, we describe a new generic programming infrastructure for pads/ml that allows third-party developers to define additional useful artifacts without modifying the compiler. We report on two case studies that use this infrastructure. In the first, we build a version of padx for pads/ml, allowing any data source with a pads/ml description to be queried as if it were xml. In the second, we extend Harmony with the ability to synchronize any data with a pads/ml description.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
References
Camlp4 - Gallium, http://brion.inria.fr/gallium/index.php/Camlp4
Gene Ontology Consortium. Gene ontology project, http://www.geneontology.org
Fernández, M., Fisher, K., Gruber, R., Mandelbaum, Y.: PADX: Querying large-scale ad hoc data with XQuery. In: PLAN-X (2006)
Fisher, K., Gruber, R.: PADS: A domain-specific language for processing ad hoc data. In: PLDI (2005)
Nathan Foster, J., Greenwald, M.B., Kirkegaard, C., Pierce, B.C., Schmitt, A.: Exploiting schemas in data synchronization. Journal of Computer and System Sciences 73(4) (June 2007)
Fernández, M.F., Siméon, J., Choi, B., Marian, A., Sur, G.: Implementing XQuery 1.0: The Galax experience. In: VLDB, pp. 1077–1080 (2003)
Hinze, R.: Generics for the masses. In: ICFP (2004)
Karvonen, V.A.J.: Generics for the working ml’er. In: ML Workshop (2007)
Katz, H. (ed.): XQuery from the experts. Addison-Wesley, Reading (2004)
Lämmel, R., Peyton Jones, S.: Scrap your boilerplate: a practical design pattern for generic programming. In: TLDI (2003)
Lämmel, R., Peyton Jones, S.: Scrap more boilerplate: reflection, zips, and generalised casts. In: ICFP (2004)
Lämmel, R., Peyton Jones, S.: Scrap your boilerplate with class: extensible generic functions. In: ICFP (2005)
Mandelbaum, Y.: The Theory and Practice of Data Description. PhD thesis, Princeton University (September 2006)
Mandelbaum, Y., Fisher, K., Walker, D., Fernandez, M., Gleyzer, A.: PADS/ML: A functional data description language. In: POPL (2007)
Mandelbaum, R., Hirata, C.M., Seljak, U., Guzik, J., Padmanabhan, N., Blake, C., Blanton, M.R., Lupton, R., Brinkmann, J.: Systematic errors in weak lensing: application to SDSS galaxy-galaxy weak lensing. Mon. Not. R. Astron. Soc. 361, 1287–1322 (2005)
Pierce, B.C., Bohannon, A., Foster, J.N., Greenwald, M.B., Khanna, S., Kunal, K., Schmitt, A.: Harmony: A synchronization framework for heterogeneous tree-structured data, http://www.seas.upenn.edu/~harmony/
Yallop, J.: Practical generic programming in ocaml. In: ML Workshop (2007)
Yang, Z.: Encoding types in ML-like languages. In: ICFP (1998)
Author information
Authors and Affiliations
Editor information
Rights and permissions
Copyright information
© 2007 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Fernández, M., Fisher, K., Foster, J.N., Greenberg, M., Mandelbaum, Y. (2007). A Generic Programming Toolkit for PADS/ML: First-Class Upgrades for Third-Party Developers. In: Hudak, P., Warren, D.S. (eds) Practical Aspects of Declarative Languages. PADL 2008. Lecture Notes in Computer Science, vol 4902. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-540-77442-6_10
Download citation
DOI: https://doi.org/10.1007/978-3-540-77442-6_10
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-77441-9
Online ISBN: 978-3-540-77442-6
eBook Packages: Computer ScienceComputer Science (R0)