Skip to main content

Writing Composable Software with InterpreterLib

  • Conference paper
Book cover Software Composition (SC 2009)

Part of the book series: Lecture Notes in Computer Science ((LNPSE,volume 5634))

Included in the following conference series:

Abstract

InterpreterLib is a Haskell library for building and composing modular syntactic and semantic definitions. We identify two forms of composition within this domain. Composition along syntax combines semantics for denoting differing term spaces to a common denotational domain. Composition along semantics combines semantics for denoting a common term space to differing domains. We demonstrate these composition mechanisms by applying InterpreterLib to examples and then relate our experiences with InterpreterLib implementing tools for the Rosetta language.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 39.99
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 54.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. Cartwright, R., Felleisen, M.: Extensible denotational language specifications. In: Hagiya, M., Mitchell, J.C. (eds.) TACS 1994. LNCS, vol. 789, pp. 244–272. Springer, Heidelberg (1994)

    Chapter  Google Scholar 

  2. Deursen, A.v., Heering, J., Klint, P. (eds.): Language Prototyping: An Algebraic Specification Approach. AMAST Series in Computing, vol. 5. World Scientific Publishing Co., Singapore (1996)

    MATH  Google Scholar 

  3. Espinosa, D.: Semantic Lego. PhD thesis, Columbia University (1995)

    Google Scholar 

  4. Gayo, J.E.L., Lovelle, J.M.C., Díez, M.C.L., del Río, A.C.: Modular development of interpreters from semantic building blocks. Nordic J. of Computing 8(3), 391–407 (2001)

    MathSciNet  MATH  Google Scholar 

  5. Heering, J., Hendriks, P.R.H., Klint, P., Rekers, J.: The syntax definition formalism sdf—reference manual—. SIGPLAN Not. 24(11), 43–75 (1989), http://doi.acm.org/10.1145/71605.71607

    Article  Google Scholar 

  6. Jones, M.P.: Qualified types: theory and practice. Cambridge University Press, Cambridge (1995)

    MATH  Google Scholar 

  7. Kimmell, G.: System Synthesis from a Monadic Functional Language. PhD thesis, University of Kansas (2008)

    Google Scholar 

  8. Komp, E., Kimmell, G., Ward, J., Alexander, P.: The Raskell Evaluation Environment. Technical report, The University of Kansas Information and Telecommunications Technology Center, 2335 Irving Hill Rd, Lawrence, KS, USA (November 2003)

    Google Scholar 

  9. Lämmel, R.: Typed Generic Traversal With Term Rewriting Strategies. Journal of Logic and Algebraic Programming, 54 (2003); arXiv technical report cs.PL/0205018

    Google Scholar 

  10. Lämmel, R., Visser, J.: A Strafunski application letter. In: Dahl, V., Wadler, P. (eds.) PADL 2003. LNCS, vol. 2562, pp. 357–375. Springer, Heidelberg (2003)

    Chapter  Google Scholar 

  11. Lämmel, R., Visser, J., Kort, J.: Dealing with large bananas. In: Jeuring, J. (ed.), Proceedings of WGP 2000, Technical Report, Universiteit Utrecht, pp. 46–59 (July 2000)

    Google Scholar 

  12. Leijen, D.: Parsec, a fast combinator parser (2001)

    Google Scholar 

  13. Liang, S., Hudak, P., Jones, M.: Monad transformers and modular interpreters. In: ACM (ed.) 22nd ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, San Francisco, California, January 22–25, 1995, pp. 333–343. ACM Press, New York (1995)

    Chapter  Google Scholar 

  14. Mosses, P.D.: Modular structural operational semantics. J. Log. Algebr. Program. 60-61, 195–228 (2004)

    Article  MathSciNet  MATH  Google Scholar 

  15. Peyton Jones, S. (ed.): Haskell 98 Language and Libraries – The Revised Report. Cambridge University Press, Cambridge (2003)

    MATH  Google Scholar 

  16. Pierce, B.C.: Types and Programming Languages. The MIT Press, Cambridge (2002)

    MATH  Google Scholar 

  17. Plotkin, G.: The origins of structural operational semantics (2003), http://citeseer.ist.psu.edu/plotkin03origins.html

  18. Plotkin, G.D.: A structural approach to operational semantics (1981)

    Google Scholar 

  19. Reps, T., Teitelbaum, T.: The synthesizer generator. SIGSOFT Softw. Eng. Notes 9(3), 42–48 (1984), http://doi.acm.org/10.1145/390010.808247

    Article  MATH  Google Scholar 

  20. Rodriguez, A., Jeuring, J., Jansson, P., Gerdes, A., Kiselyov, O., Oliveira, B.C.d.S.: Comparing libraries for generic programming in haskell. In: Haskell 2008: Proceedings of the first ACM SIGPLAN symposium on Haskell, pp. 111–122. ACM, New York (2008)

    Chapter  Google Scholar 

  21. Sheard, T., Peyton Jones, S.: Template metaprogramming for Haskell. In: Chakravarty, M.M.T. (ed.) ACM SIGPLAN Haskell Workshop 2002, pp. 1–16. ACM Press, New York (2002)

    Google Scholar 

  22. Steele, G.L.: Building interpreters by composing monads. In: ACM (ed.) 21st ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, Portland, Oregon, January 17–21, 1994, pp. 472–492. ACM Press, New York (1994)

    Chapter  Google Scholar 

  23. van den Brand, M., Heering, J., de Jong, H., de Jonge, M., Kuipers, T., Klint, P., Moonen, L., Olivier, P., Scheerder, J., Vinju, J., Visser, E., Visser, J.: The ASF+SDF Meta-Environment: a Component-Based Language Development Environment. In: Wilhelm, R. (ed.) CC 2001. LNCS, vol. 2027, p. 365. Springer, Heidelberg (2001)

    Chapter  Google Scholar 

  24. Visser, E.: Language independent traversals for program transformation. In: Jeuring, J. (ed.) Workshop on Generic Programming (WGP 2000), Ponte de Lima, Portugal, Technical Report UU-CS-2000-19, Department of Information and Computing Sciences, Universiteit Utrecht (July 2000)

    Google Scholar 

  25. Wadler, P.: The essence of functional programming. In: Conference Record of the Nineteenth Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, Albequerque, New Mexico, pp. 1–14 (1992)

    Google Scholar 

  26. Wadler, P., Blott, S.: How to make ad-hoc polymorphism less ad hoc. In: POPL 1989: Proceedings of the 16th ACM SIGPLAN-SIGACT symposium on Principles of programming languages, pp. 60–76. ACM Press, New York (1989)

    Google Scholar 

  27. Weaver, P., Kimmell, G., Frisby, N., Alexander, P.: Modular and generic programming with interpreterlib. In: Stirewalt, R.E.K., Egyed, A., Fischer, B. (eds.) ASE, pp. 473–476. ACM, New York (2007)

    Chapter  Google Scholar 

  28. Weaver, P., Kimmell, G., Frisby, N., Alexander, P.: Constructing language processors with algebra combinators. In: GPCE 2007: Proceedings of the 6th international conference on Generative programming and component engineering, pp. 155–164. ACM Press, New York (2007)

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2009 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper

Snyder, M., Frisby, N., Kimmell, G., Alexander, P. (2009). Writing Composable Software with InterpreterLib. In: Bergel, A., Fabry, J. (eds) Software Composition. SC 2009. Lecture Notes in Computer Science, vol 5634. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-02655-3_12

Download citation

  • DOI: https://doi.org/10.1007/978-3-642-02655-3_12

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-642-02654-6

  • Online ISBN: 978-3-642-02655-3

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics