{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,5,26]],"date-time":"2026-05-26T23:05:31Z","timestamp":1779836731735,"version":"3.53.1"},"reference-count":0,"publisher":"Cambridge University Press (CUP)","issue":"6","license":[{"start":{"date-parts":[[2004,10,27]],"date-time":"2004-10-27T00:00:00Z","timestamp":1098835200000},"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":[[2004,11]]},"abstract":"<jats:p>\n                    Using Haskell as a digital circuit description language, we transform a ripple carry adder that requires\n                    <jats:inline-formula id=\"ffm001\">$O(n)$<\/jats:inline-formula>\n                    time to add two\n                    <jats:inline-formula id=\"ffm002\">$n$<\/jats:inline-formula>\n                    -bit words into a parallel carry lookahead adder that requires\n                    <jats:inline-formula id=\"ffm003\">$O(\\log n)$<\/jats:inline-formula>\n                    time. The ripple carry adder uses a scan function to calculate carry bits, but this scan cannot be parallelized directly since it is applied to a non-associative function. Several techniques are applied in order to introduce parallelism, including partial evaluation and symbolic function representation. The derivation given here constitutes a semi-formal correctness proof, and it also brings out explicitly each of the ideas underlying the algorithm.\n                  <\/jats:p>","DOI":"10.1017\/s0956796804005180","type":"journal-article","created":{"date-parts":[[2004,10,27]],"date-time":"2004-10-27T07:19:58Z","timestamp":1098861598000},"page":"697-713","source":"Crossref","is-referenced-by-count":8,"title":["FUNCTIONAL PEARL\n                    <i>Derivation of a logarithmic time carry lookahead addition circuit<\/i>"],"prefix":"10.1017","volume":"14","author":[{"given":"JOHN T.","family":"O'DONNELL","sequence":"first","affiliation":[],"role":[{"vocabulary":"crossref","role":"author"}]},{"given":"GUDULA","family":"R\u00dcNGER","sequence":"additional","affiliation":[],"role":[{"vocabulary":"crossref","role":"author"}]}],"member":"56","published-online":{"date-parts":[[2004,10,27]]},"container-title":["Journal of Functional Programming"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/www.cambridge.org\/core\/services\/aop-cambridge-core\/content\/view\/S0956796804005180","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2026,5,26]],"date-time":"2026-05-26T22:35:49Z","timestamp":1779834949000},"score":1,"resource":{"primary":{"URL":"https:\/\/www.cambridge.org\/core\/product\/identifier\/S0956796804005180\/type\/journal_article"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2004,10,27]]},"references-count":0,"journal-issue":{"issue":"6","published-print":{"date-parts":[[2004,11]]}},"alternative-id":["S0956796804005180"],"URL":"https:\/\/doi.org\/10.1017\/s0956796804005180","relation":{},"ISSN":["0956-7968","1469-7653"],"issn-type":[{"value":"0956-7968","type":"print"},{"value":"1469-7653","type":"electronic"}],"subject":[],"published":{"date-parts":[[2004,10,27]]}}}