skip to main content
Skip header Section
Purely Functional Data StructuresJune 1999
Publisher:
  • Cambridge University Press
  • 40 W. 20 St. New York, NY
  • United States
ISBN:978-0-521-66350-2
Published:01 June 1999
Pages:
230
Skip Bibliometrics Section
Bibliometrics
Skip Abstract Section
Abstract

From the Publisher:

Most books on data structures assume an imperative language like C or C++. However, data structures for these languages do not always translate well to functional languages such as Standard ML, Haskell, or Scheme. This book describes data structures from the point of view of functional languages, with examples, and presents design techniques so that programmers can develop their own functional data structures. It includes both classical data structures, such as red-black trees and binomial queues, and a host of new data structures developed exclusively for functional languages. All source code is given in Standard ML and Haskell, and most of the programs can easily be adapted to other functional languages. This handy reference for professional programmers working with functional languages can also be used as a tutorial or for self-study.

Cited By

  1. Brodal G, Rysgaard C, Schou J and Svenning R Space-Efficient Functional Offline-Partially-Persistent Trees with Applications to Planar Point Location Algorithms and Data Structures, (644-659)
  2. ACM
    Charguéraud A (2023). Review on Functional Algorithms, Verified!, Formal Aspects of Computing, 35:2, (1-2), Online publication date: 30-Jun-2023.
  3. ACM
    Pedersen J and Conradt J AEStream: Accelerated event-based processing with coroutines Proceedings of the 2023 Annual Neuro-Inspired Computational Elements Conference, (86-91)
  4. ACM
    Aksenov V, Brown T, Fedorov A and Kokorin I Unexpected Scaling in Path Copying Trees Proceedings of the 28th ACM SIGPLAN Annual Symposium on Principles and Practice of Parallel Programming, (438-440)
  5. ACM
    Nelson-Slivon J, Hassan A and Palmieri R Bundling linked data structures for linearizable range queries Proceedings of the 27th ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming, (368-384)
  6. ACM
    Biernacka M, Charatonik W and Drab T A Derived Reasonable Abstract Machine for Strong Call by Value Proceedings of the 23rd International Symposium on Principles and Practice of Declarative Programming, (1-14)
  7. Leutgeb L, Moser G and Zuleger F ATLAS: Automated Amortised Complexity Analysis of Self-adjusting Data Structures Computer Aided Verification, (99-122)
  8. Pitzer E and Affenzeller M Cheating Like The Neighbors: Logarithmic Complexity For Fitness Evaluation In Genetic Algorithms 2021 IEEE Congress on Evolutionary Computation (CEC), (1431-1438)
  9. ACM
    Reinking A, Xie N, de Moura L and Leijen D Perceus: garbage free reference counting with reuse Proceedings of the 42nd ACM SIGPLAN International Conference on Programming Language Design and Implementation, (96-111)
  10. Piantadosi S (2021). The Computational Origin of Representation, Minds and Machines, 31:1, (1-58), Online publication date: 1-Mar-2021.
  11. Biernacka M, Biernacki D, Charatonik W and Drab T An Abstract Machine for Strong Call by Value Programming Languages and Systems, (147-166)
  12. Agrawal A, Li Y, Xue J and Janardan R (2020). The most-likely skyline problem for stochastic points, Computational Geometry: Theory and Applications, 88:C, Online publication date: 1-Jun-2020.
  13. ACM
    Ma T, Zhang M, Chen K, Song Z, Wu Y and Qian X AsymNVM Proceedings of the Twenty-Fifth International Conference on Architectural Support for Programming Languages and Operating Systems, (757-773)
  14. ACM
    Haria S, Hill M and Swift M MOD Proceedings of the Twenty-Fifth International Conference on Architectural Support for Programming Languages and Operating Systems, (775-788)
  15. ACM
    Hamza J, Voirol N and Kunčak V (2019). System FR: formalized foundations for the stainless verifier, Proceedings of the ACM on Programming Languages, 3:OOPSLA, (1-30), Online publication date: 10-Oct-2019.
  16. ACM
    Kaki G, Priya S, Sivaramakrishnan K and Jagannathan S (2019). Mergeable replicated data types, Proceedings of the ACM on Programming Languages, 3:OOPSLA, (1-29), Online publication date: 10-Oct-2019.
  17. Sun Y, Blelloch G, Lim W and Pavlo A (2019). On supporting efficient snapshot isolation for hybrid workloads with multi-versioned indexes, Proceedings of the VLDB Endowment, 13:2, (211-225), Online publication date: 1-Oct-2019.
  18. ACM
    Yallop J and White L (2019). Lambda: the ultimate sublanguage (experience report), Proceedings of the ACM on Programming Languages, 3:ICFP, (1-17), Online publication date: 26-Jul-2019.
  19. ACM
    Hackett J and Hutton G (2019). Call-by-need is clairvoyant call-by-value, Proceedings of the ACM on Programming Languages, 3:ICFP, (1-23), Online publication date: 26-Jul-2019.
  20. ACM
    Balakrishnan D, Ziarek L and Kennedy O Fluid data structures Proceedings of the 17th ACM SIGPLAN International Symposium on Database Programming Languages, (3-17)
  21. ACM
    Ben-David N, Blelloch G, Sun Y and Wei Y Multiversion Concurrency with Bounded Delay and Precise Garbage Collection The 31st ACM Symposium on Parallelism in Algorithms and Architectures, (241-252)
  22. Pereira R, Couto M, Cunha J, Melfe G, Saraiva J and Fernandes J Paint Your Programs Green: On the Energy Efficiency of Data Structures Composability, Comprehensibility and Correctness of Working Software, (53-76)
  23. Charguéraud A and Pottier F (2019). Verifying the Correctness and Amortized Complexity of a Union-Find Implementation in Separation Logic with Time Credits, Journal of Automated Reasoning, 62:3, (331-365), Online publication date: 1-Mar-2019.
  24. Pitzer E and Affenzeller M “Incremental” Evaluation for Genetic Crossover Computer Aided Systems Theory – EUROCAST 2019, (396-404)
  25. ACM
    Newton J and Verna D (2019). A Theoretical and Numerical Analysis of the Worst-Case Size of Reduced Ordered Binary Decision Diagrams, ACM Transactions on Computational Logic, 20:1, (1-36), Online publication date: 31-Jan-2019.
  26. ACM
    Steindorfer M and Vinju J (2018). To-many or to-one? all-in-one! efficient purely functional multi-maps with type-heterogeneous hash-tries, ACM SIGPLAN Notices, 53:4, (283-295), Online publication date: 2-Dec-2018.
  27. ACM
    Breitner J, Spector-Zabusky A, Li Y, Rizkallah C, Wiegley J and Weirich S (2018). Ready, set, verify! applying hs-to-coq to real-world Haskell code (experience report), Proceedings of the ACM on Programming Languages, 2:ICFP, (1-16), Online publication date: 30-Jul-2018.
  28. ACM
    Winblad K, Sagonas K and Jonsson B Lock-free Contention Adapting Search Trees Proceedings of the 30th on Symposium on Parallelism in Algorithms and Architectures, (121-132)
  29. ACM
    Steindorfer M and Vinju J To-many or to-one? all-in-one! efficient purely functional multi-maps with type-heterogeneous hash-tries Proceedings of the 39th ACM SIGPLAN Conference on Programming Language Design and Implementation, (283-295)
  30. Wang S, Dinh T, Lin Q, Xie Z, Zhang M, Cai Q, Chen G, Ooi B and Ruan P (2018). Forkbase, Proceedings of the VLDB Endowment, 11:10, (1137-1150), Online publication date: 1-Jun-2018.
  31. ACM
    Peng Y, Guo J, Li F, Qian W and Zhou A Persistent Bloom Filter Proceedings of the 2018 International Conference on Management of Data, (1037-1052)
  32. Peng J, Ge J, He W, Chen Z, Liu C and Chen G (2018). A Fine-Grained Stateful Data Analytics Method Based on Resilient State Table, International Journal of Software Science and Computational Intelligence, 10:2, (66-79), Online publication date: 1-Apr-2018.
  33. ACM
    Sun Y, Ferizovic D and Belloch G (2018). PAM, ACM SIGPLAN Notices, 53:1, (290-304), Online publication date: 23-Mar-2018.
  34. ACM
    Wen H, Izraelevitz J, Cai W, Beadle H and Scott M (2018). Interval-based memory reclamation, ACM SIGPLAN Notices, 53:1, (1-13), Online publication date: 23-Mar-2018.
  35. ACM
    Sun Y, Ferizovic D and Belloch G PAM Proceedings of the 23rd ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming, (290-304)
  36. ACM
    Wen H, Izraelevitz J, Cai W, Beadle H and Scott M Interval-based memory reclamation Proceedings of the 23rd ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming, (1-13)
  37. ACM
    Spector-Zabusky A, Breitner J, Rizkallah C and Weirich S Total Haskell is reasonable Coq Proceedings of the 7th ACM SIGPLAN International Conference on Certified Programs and Proofs, (14-27)
  38. Gawrychowski P, Karczmarz A, Kociumaka T, Łącki J and Sankowski P Optimal dynamic strings Proceedings of the Twenty-Ninth Annual ACM-SIAM Symposium on Discrete Algorithms, (1509-1528)
  39. ACM
    Zhang X and Guo P DS.js Proceedings of the 30th Annual ACM Symposium on User Interface Software and Technology, (691-702)
  40. ACM
    Chrząszcz J and Schubert A Function definitions for compound values in object-oriented languages Proceedings of the 19th International Symposium on Principles and Practice of Declarative Programming, (61-72)
  41. ACM
    Goldstein M, Dayan D, Rabin M, Berlowitz D, Berlowitz O and Yehezkael R Design principles of an embedded language (EFL) enabling well defined order-independent execution Proceedings of the Fifth European Conference on the Engineering of Computer-Based Systems, (1-8)
  42. Blanchette J, Meier F, Popescu A and Traytel D Foundational nonuniform (co)datatypes for higher-order logic Proceedings of the 32nd Annual ACM/IEEE Symposium on Logic in Computer Science, (1-12)
  43. ACM
    Steindorfer M and Vinju J (2016). Towards a software product line of trie-based collections, ACM SIGPLAN Notices, 52:3, (168-172), Online publication date: 12-May-2017.
  44. ACM
    Chang S, Knauth A and Greenman B (2017). Type systems as macros, ACM SIGPLAN Notices, 52:1, (694-705), Online publication date: 11-May-2017.
  45. ACM
    Chang S, Knauth A and Greenman B Type systems as macros Proceedings of the 44th ACM SIGPLAN Symposium on Principles of Programming Languages, (694-705)
  46. ACM
    Mu S, Chiang Y and Lyu Y (2016). Queueing and glueing for optimal partitioning (functional pearl), ACM SIGPLAN Notices, 51:9, (158-167), Online publication date: 5-Dec-2016.
  47. ACM
    Tsesko V and Demidov S YoctoDB Proceedings of the 12th Central and Eastern European Software Engineering Conference in Russia, (1-10)
  48. ACM
    Steindorfer M and Vinju J Towards a software product line of trie-based collections Proceedings of the 2016 ACM SIGPLAN International Conference on Generative Programming: Concepts and Experiences, (168-172)
  49. ACM
    Mu S, Chiang Y and Lyu Y Queueing and glueing for optimal partitioning (functional pearl) Proceedings of the 21st ACM SIGPLAN International Conference on Functional Programming, (158-167)
  50. ACM
    Akkoorath D and Bieniusa A Highly-scalable concurrent objects Proceedings of the 2nd Workshop on the Principles and Practice of Consistency for Distributed Data, (1-4)
  51. ACM
    Steindorfer M and Vinju J Performance Modeling of Maximal Sharing Proceedings of the 7th ACM/SPEC on International Conference on Performance Engineering, (135-146)
  52. ACM
    Charguéraud A Higher-order representation predicates in separation logic Proceedings of the 5th ACM SIGPLAN Conference on Certified Programs and Proofs, (3-14)
  53. ACM
    Steindorfer M and Vinju J (2015). Optimizing hash-array mapped tries for fast and lean immutable JVM collections, ACM SIGPLAN Notices, 50:10, (783-800), Online publication date: 18-Dec-2015.
  54. ACM
    Steindorfer M and Vinju J Optimizing hash-array mapped tries for fast and lean immutable JVM collections Proceedings of the 2015 ACM SIGPLAN International Conference on Object-Oriented Programming, Systems, Languages, and Applications, (783-800)
  55. ACM
    Hofmann M Automatic amortized analysis Proceedings of the 17th International Symposium on Principles and Practice of Declarative Programming, (5-5)
  56. ACM
    Aref M, ten Cate B, Green T, Kimelfeld B, Olteanu D, Pasalic E, Veldhuizen T and Washburn G Design and Implementation of the LogicBlox System Proceedings of the 2015 ACM SIGMOD International Conference on Management of Data, (1371-1382)
  57. ACM
    Green T LogiQL Proceedings of the 34th ACM SIGMOD-SIGACT-SIGAI Symposium on Principles of Database Systems, (59-64)
  58. ACM
    Steindorfer M and Vinju J (2014). Code specialization for memory efficient hash tries (short paper), ACM SIGPLAN Notices, 50:3, (11-14), Online publication date: 12-May-2015.
  59. ACM
    Hackett J and Hutton G (2014). Worker/wrapper/makes it/faster, ACM SIGPLAN Notices, 49:9, (95-107), Online publication date: 26-Nov-2014.
  60. ACM
    Lorenz D and Rosenan B Versionable, Branchable, and Mergeable Application State Proceedings of the 2014 ACM International Symposium on New Ideas, New Paradigms, and Reflections on Programming & Software, (29-42)
  61. ACM
    Steindorfer M and Vinju J Code specialization for memory efficient hash tries (short paper) Proceedings of the 2014 International Conference on Generative Programming: Concepts and Experiences, (11-14)
  62. ACM
    Totoo P and Loidl H Lazy data-oriented evaluation strategies Proceedings of the 3rd ACM SIGPLAN workshop on Functional high-performance computing, (63-74)
  63. ACM
    Hackett J and Hutton G Worker/wrapper/makes it/faster Proceedings of the 19th ACM SIGPLAN international conference on Functional programming, (95-107)
  64. ACM
    Kemme B, Schiper A, Ramalingam G and Shapiro M (2014). Dagstuhl seminar review, ACM SIGACT News, 45:1, (67-89), Online publication date: 17-Mar-2014.
  65. ACM
    Solodkyy Y, Dos Reis G and Stroustrup B (2013). Open pattern matching for C++, ACM SIGPLAN Notices, 49:3, (33-42), Online publication date: 5-Mar-2014.
  66. ACM
    Kneuss E, Kuraj I, Kuncak V and Suter P (2013). Synthesis modulo recursive functions, ACM SIGPLAN Notices, 48:10, (407-426), Online publication date: 12-Nov-2013.
  67. ACM
    Kneuss E, Kuraj I, Kuncak V and Suter P Synthesis modulo recursive functions Proceedings of the 2013 ACM SIGPLAN international conference on Object oriented programming systems languages & applications, (407-426)
  68. ACM
    Solodkyy Y, Dos Reis G and Stroustrup B Open pattern matching for C++ Proceedings of the 12th international conference on Generative programming: concepts & experiences, (33-42)
  69. ACM
    O'Donnell J Extensible sparse functional arrays with circuit parallelism Proceedings of the 15th Symposium on Principles and Practice of Declarative Programming, (133-144)
  70. ACM
    Holdermans S Random testing of purely functional abstract datatypes Proceedings of the 15th Symposium on Principles and Practice of Declarative Programming, (275-284)
  71. ACM
    Bloom B and Hirzel M (2012). Robust scripting via patterns, ACM SIGPLAN Notices, 48:2, (29-40), Online publication date: 23-Jan-2013.
  72. ACM
    Bloom B and Hirzel M Robust scripting via patterns Proceedings of the 8th symposium on Dynamic languages, (29-40)
  73. ACM
    Prokopec A, Bronson N, Bagwell P and Odersky M (2012). Concurrent tries with efficient non-blocking snapshots, ACM SIGPLAN Notices, 47:8, (151-160), Online publication date: 11-Sep-2012.
  74. ACM
    Byrd W, Holk E and Friedman D miniKanren, live and untagged Proceedings of the 2012 Annual Workshop on Scheme and Functional Programming, (8-29)
  75. ACM
    Prokopec A, Bronson N, Bagwell P and Odersky M Concurrent tries with efficient non-blocking snapshots Proceedings of the 17th ACM SIGPLAN symposium on Principles and Practice of Parallel Programming, (151-160)
  76. ACM
    Charguéraud A Characteristic formulae for the verification of imperative programs Proceedings of the 16th ACM SIGPLAN international conference on Functional programming, (418-430)
  77. ACM
    Charguéraud A (2011). Characteristic formulae for the verification of imperative programs, ACM SIGPLAN Notices, 46:9, (418-430), Online publication date: 18-Sep-2011.
  78. ACM
    Crosby S and Wallach D (2011). Authenticated Dictionaries, ACM Transactions on Information and System Security, 14:2, (1-30), Online publication date: 1-Sep-2011.
  79. Warth A, Ohshima Y, Kaehler T and Kay A Worlds Proceedings of the 25th European conference on Object-oriented programming, (179-203)
  80. Venkataraman S, Tolia N, Ranganathan P and Campbell R Consistent and durable data structures for non-volatile byte-addressable memory Proceedings of the 9th USENIX conference on File and stroage technologies, (5-5)
  81. ACM
    Pilkiewicz A and Pottier F The essence of monotonic state Proceedings of the 7th ACM SIGPLAN workshop on Types in language design and implementation, (73-86)
  82. ACM
    Straka M (2010). The performance of the Haskell containers package, ACM SIGPLAN Notices, 45:11, (13-24), Online publication date: 17-Nov-2010.
  83. ACM
    Straka M The performance of the Haskell containers package Proceedings of the third ACM Haskell symposium on Haskell, (13-24)
  84. ACM
    Charguéraud A (2010). Program verification through characteristic formulae, ACM SIGPLAN Notices, 45:9, (321-332), Online publication date: 27-Sep-2010.
  85. ACM
    Charguéraud A Program verification through characteristic formulae Proceedings of the 15th ACM SIGPLAN international conference on Functional programming, (321-332)
  86. Crosby S and Wallach D Super-efficient aggregating history-independent persistent authenticated dictionaries Proceedings of the 14th European conference on Research in computer security, (671-688)
  87. ACM
    Bernardy J Lazy functional incremental parsing Proceedings of the 2nd ACM SIGPLAN symposium on Haskell, (49-60)
  88. ACM
    Gazagnaire T and Hanquez V (2009). OXenstored, ACM SIGPLAN Notices, 44:9, (203-214), Online publication date: 31-Aug-2009.
  89. ACM
    Gazagnaire T and Hanquez V OXenstored Proceedings of the 14th ACM SIGPLAN international conference on Functional programming, (203-214)
Contributors
  • The U.S. Military Academy at West Point

Recommendations