{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,5,26]],"date-time":"2026-05-26T23:05:06Z","timestamp":1779836706294,"version":"3.53.1"},"reference-count":0,"publisher":"Cambridge University Press (CUP)","issue":"5","license":[{"start":{"date-parts":[[1997,9,1]],"date-time":"1997-09-01T00:00:00Z","timestamp":873072000000},"content-version":"unspecified","delay-in-days":0,"URL":"https:\/\/www.cambridge.org\/core\/terms"}],"content-domain":{"domain":[],"crossmark-restriction":false},"short-container-title":["J. Funct. Prog."],"published-print":{"date-parts":[[1997,9]]},"abstract":"<jats:p>\n                    Arrays are probably the most widely used data structure \n\nin imperative programming languages, yet functional languages \n\ntypically only support arrays in a limited manner, or prohibit \n\nthem entirely. This is not too surprising, since most other \n\nmutable data structures, such as \n\ntrees, have elegant immutable analogues in the functional world, \n\nwhereas arrays do not. Previous attempts at addressing the \n\nproblem have suffered from one of three weaknesses, either \n\nthat they don't support arrays as a persistent data \n\nstructure (unlike the functional analogues \n\nof other imperative data structures), or that the range of \n\noperations is too restrictive to \n\nsupport some common array algorithms efficiently, or that they \n\nhave performance problems. \n\nOur technique provides arrays as a true functional analogue of \n\nimperative arrays with the \n\nproperties that functional programmers have come to expect \n\nfrom their data structures. To \n\nefficiently support array algorithms from the imperative world, \n\nwe provide\n                    <jats:italic>O<\/jats:italic>\n                    (1) operations for \n\nsingle-threaded array use. Fully persistent array use can also \n\nbe provided at\n                    <jats:italic>O<\/jats:italic>\n                    (1) amortized \n\ncost, provided that the algorithm satisfies a simple \n\nrequirement as to uniformity of access. \n\nFor those algorithms which do not access the array uniformly \n\nor single-threadedly, array \n\nreads or updates take at most\n                    <jats:italic>O<\/jats:italic>\n                    (log\n                    <jats:italic>n<\/jats:italic>\n                    ) \n\namortized time, where n is the size of the array. \n\nExperimental results indicate that the overheads of our \n\ntechnique are acceptable in practice for many applications.\n                  <\/jats:p>","DOI":"10.1017\/s0956796897002852","type":"journal-article","created":{"date-parts":[[2002,7,27]],"date-time":"2002-07-27T09:26:15Z","timestamp":1027761975000},"page":"487-513","source":"Crossref","is-referenced-by-count":15,"title":["A new method for functional arrays"],"prefix":"10.1017","volume":"7","author":[{"given":"MELISSA E.","family":"O'NEILL","sequence":"first","affiliation":[],"role":[{"vocabulary":"crossref","role":"author"}]},{"given":"F. WARREN","family":"BURTON","sequence":"additional","affiliation":[],"role":[{"vocabulary":"crossref","role":"author"}]}],"member":"56","published-online":{"date-parts":[[1997,9,1]]},"container-title":["Journal of Functional Programming"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/www.cambridge.org\/core\/services\/aop-cambridge-core\/content\/view\/S0956796897002852","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2026,5,26]],"date-time":"2026-05-26T22:34:48Z","timestamp":1779834888000},"score":1,"resource":{"primary":{"URL":"https:\/\/www.cambridge.org\/core\/product\/identifier\/S0956796897002852\/type\/journal_article"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[1997,9]]},"references-count":0,"journal-issue":{"issue":"5","published-print":{"date-parts":[[1997,9]]}},"alternative-id":["S0956796897002852"],"URL":"https:\/\/doi.org\/10.1017\/s0956796897002852","relation":{},"ISSN":["0956-7968","1469-7653"],"issn-type":[{"value":"0956-7968","type":"print"},{"value":"1469-7653","type":"electronic"}],"subject":[],"published":{"date-parts":[[1997,9]]}}}