Skip to main content

Stacking Cycles: Functional Transformation of Circular Data

  • Conference paper
  • First Online:

Part of the book series: Lecture Notes in Computer Science ((LNCS,volume 2670))

Abstract

Functional programming is very powerful when applied to tree-shaped data. Real-world software problems often involve circular graph-shaped data. In this paper, we characterize a class of functions on circular data graphs extending the class of primitively corecursive functions. We propose an abstract, effective implementation technique for these functions under an eager evaluation strategy on standard stack machines. The proposed implementation ensures termination and can be tuned either for exactness or for speed. The latter variant is asymptotically as efficient as standard implementations of algebraic recursion, at the price of suboptimal homomorphic result graphs with decently bounded redundancy.

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

Buying options

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

Learn about institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. A.V. Aho, R. Sethi, and J.D. Ullman. Compilers: Principles, Techniques, and Tools. Addison-Wesley, 1986.

    Google Scholar 

  2. R.S. Bird. Tabulation Techniques for Recursive Programs. ACM Comp. Surv., 12(4):403–417, 1980.

    Article  MATH  MathSciNet  Google Scholar 

  3. D.R. Brownbridge. Cyclic reference counting for combinator machines. In LNCS, volume 201. Springer, 1985.

    Google Scholar 

  4. R. Cockett and T. Fukushima. About Charity. Technical Report 92/480/18, University of Calgary, 1992.

    Google Scholar 

  5. M. Erwig. Inductive graphs and functional graph algorithms, 2001.

    Google Scholar 

  6. R. Jones and R. Lins. Garbage Collection. Wiley, Chichester, 1996.

    MATH  Google Scholar 

  7. E. Meijer, M. Fokkinga, and R. Paterson. Functional programming with bananas, lenses, envelopes and barbed wire. In Proceedings of the ACM FPCA’91, LNCS, volume 523. Springer, 1991.

    Google Scholar 

  8. D. Michie. “Memo” functions and machine learning. Nature, 218:19–22, 1968.

    Article  Google Scholar 

  9. P. Pepper. The Programming Language OPAL (5th corrected edition). Technical Report 91-10, TU Berlin, June 1991.

    Google Scholar 

  10. E.J.H. Pepels, M.C.J.D. van Eekelen, and M.J. Plasmeijer. A cyclic reference counting algorithm and its proof. Technical Report 88-10, Computing Science Department, University of Nijmegen, 1988.

    Google Scholar 

  11. J.J.M.M. Rutten. Universal Coalgebra: a Theory of Systems, Technical Report CS-R9652. CWI, Amsterdam, 1996.

    Google Scholar 

  12. J.D. Salkild. Implementation and analysis of two reference counting algorithms. Master’s thesis, University College, London, 1987.

    Google Scholar 

  13. A. Telford and D. Turner. Ensuring streams flow. In Algebraic Methodology and Software Technology, pages 509–523, 1997.

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2003 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper

Trancón y Widemann, B. (2003). Stacking Cycles: Functional Transformation of Circular Data. In: Peña, R., Arts, T. (eds) Implementation of Functional Languages. IFL 2002. Lecture Notes in Computer Science, vol 2670. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-44854-3_10

Download citation

  • DOI: https://doi.org/10.1007/3-540-44854-3_10

  • Published:

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-540-40190-2

  • Online ISBN: 978-3-540-44854-9

  • eBook Packages: Springer Book Archive

Publish with us

Policies and ethics