{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,5,26]],"date-time":"2026-05-26T23:05:16Z","timestamp":1779836716484,"version":"3.53.1"},"reference-count":28,"publisher":"Cambridge University Press (CUP)","issue":"3","license":[{"start":{"date-parts":[[2008,11,7]],"date-time":"2008-11-07T00:00:00Z","timestamp":1226016000000},"content-version":"unspecified","delay-in-days":4573,"URL":"https:\/\/www.cambridge.org\/core\/terms"}],"content-domain":{"domain":[],"crossmark-restriction":false},"short-container-title":["J. Funct. Prog."],"published-print":{"date-parts":[[1996,5]]},"abstract":"<jats:title>Abstract<\/jats:title>\n                  <jats:p>\n                    The\n                    <jats:italic>tree-drawing problem<\/jats:italic>\n                    is to produce a \u2018tidy\u2019 mapping from elements of a tree to points in the plane. In this paper, we derive an efficient algorithm for producing tidy drawings of trees. The specification, the starting point for the derivations, consists of a collection of intuitively appealing\n                    <jats:italic>criteria<\/jats:italic>\n                    satisfied by tidy drawings. The derivation shows constructively that these criteria completely determine the drawing. Indeed, the criteria completely determine a simple but inefficient algorithm for drawing a tree, which can be transformed into an efficient algorithm using just standard techniques and a small number of inventive steps.\n                  <\/jats:p>\n                  <jats:p>\n                    The algorithm consists of an\n                    <jats:italic>upwards accumulation<\/jats:italic>\n                    followed by a\n                    <jats:italic>downwards accumulation<\/jats:italic>\n                    on the tree, and is further evidence of the utility of these two higher-order tree operations.\n                  <\/jats:p>","DOI":"10.1017\/s0956796800001842","type":"journal-article","created":{"date-parts":[[2008,11,7]],"date-time":"2008-11-07T11:10:59Z","timestamp":1226056259000},"page":"535-562","source":"Crossref","is-referenced-by-count":8,"title":["Functional Pearls"],"prefix":"10.1017","volume":"6","author":[{"given":"Jeremy","family":"Gibbons","sequence":"first","affiliation":[],"role":[{"vocabulary":"crossref","role":"author"}]}],"member":"56","published-online":{"date-parts":[[2008,11,7]]},"reference":[{"key":"S0956796800001842_ref025","doi-asserted-by":"publisher","DOI":"10.1002\/spe.4380100706"},{"key":"S0956796800001842_ref021","volume-title":"Tidy drawing of M-ary trees","author":"Radack","year":"1988"},{"key":"S0956796800001842_ref020","unstructured":"Meertens Lambert (1986). Algorithmics: Towards programming as a mathematical activity. In de Bakker J. W. , Hazewinkel M. , and Lenstra J. K. , editors, Proc. CWI Symposium on Mathematics and Computer Science, pages 289\u2013334. North-Holland."},{"key":"S0956796800001842_ref019","unstructured":"Malcolm Grant (1990). Algebraic Data Types and Program Transformation. PhD thesis, Rijksuniversiteit Groningen."},{"key":"S0956796800001842_ref018","doi-asserted-by":"publisher","DOI":"10.1145\/322217.322232"},{"key":"S0956796800001842_ref014","doi-asserted-by":"publisher","DOI":"10.1016\/0167-6423(83)90015-1"},{"key":"S0956796800001842_ref012","first-page":"282","volume-title":"LNCS 947: Mathematics of Program Construction","author":"Gibbons","year":"1995"},{"key":"S0956796800001842_ref009","unstructured":"Gibbons Jeremy (1993a). Computing downwards accumulations on trees quickly. In Gupta Gopal , Mohay George , and Topor Rodney , editors, 16th Australian Computer Science Conference, pages 685\u2013691, Brisbane. Revised version to appear in Theoretical Computer Science."},{"key":"S0956796800001842_ref008","unstructured":"Gibbons Jeremy (1991). Algebras for Tree Algorithms. D. Phil. thesis, Programming Research Group, Oxford University. Available as Technical Monograph PRG-94."},{"key":"S0956796800001842_ref005","first-page":"185","volume-title":"TEX: Applications, Uses, Methods","author":"Br\u00fcggemann-Klein","year":"1990"},{"key":"S0956796800001842_ref004","doi-asserted-by":"publisher","DOI":"10.1002\/spe.4380230802"},{"key":"S0956796800001842_ref002","first-page":"3","volume-title":"Logic of Programming and Calculi of Discrete Design","author":"Bird","year":"1987"},{"key":"S0956796800001842_ref026","doi-asserted-by":"publisher","DOI":"10.1002\/spe.4380200705"},{"key":"S0956796800001842_ref023","volume-title":"Parallel evaluation of structured queries in text","author":"Skillicorn","year":"1993"},{"key":"S0956796800001842_ref028","volume-title":"Algorithms + Data Structures = Programs","author":"Wirth","year":"1976"},{"key":"S0956796800001842_ref015","doi-asserted-by":"crossref","DOI":"10.1017\/S0956796800001830","article-title":"Drawing trees","author":"Kennedy","year":"1996","journal-title":"Journal of Functional Programming"},{"key":"S0956796800001842_ref003","volume-title":"Constructive Methods in Computer Science","author":"Bird","year":"1988"},{"key":"S0956796800001842_ref017","doi-asserted-by":"publisher","DOI":"10.1007\/BF00264289"},{"key":"S0956796800001842_ref027","doi-asserted-by":"publisher","DOI":"10.1109\/TSE.1979.234212"},{"key":"S0956796800001842_ref022","doi-asserted-by":"publisher","DOI":"10.1109\/TSE.1981.234519"},{"key":"S0956796800001842_ref010","doi-asserted-by":"publisher","DOI":"10.1007\/3-540-56625-2_11"},{"key":"S0956796800001842_ref016","volume-title":"The Art of Computer Programming","volume":"1","author":"Knuth","year":"1968"},{"key":"S0956796800001842_ref006","volume-title":"LNCS 323: Attribute Grammars\u2014Definitions, Systems and Bibliography","author":"Deransart","year":"1988"},{"key":"S0956796800001842_ref007","doi-asserted-by":"publisher","DOI":"10.1016\/0167-6423(94)00013-1"},{"key":"S0956796800001842_ref001","volume-title":"International Summer School on Constructive Algorithmics, Hollum, Ameland","author":"Backhouse","year":"1989"},{"key":"S0956796800001842_ref011","first-page":"53","volume-title":"Proceedings of Salodays in Auckland","author":"Gibbons","year":"1994"},{"key":"S0956796800001842_ref013","doi-asserted-by":"crossref","DOI":"10.1017\/S0956796800001908","article-title":"The Third Homomorphism Theorem","volume":"6","author":"Gibbons","year":"1996","journal-title":"Journal of Functional Programming"},{"key":"S0956796800001842_ref024","doi-asserted-by":"publisher","DOI":"10.1007\/BF00289576"}],"container-title":["Journal of Functional Programming"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/www.cambridge.org\/core\/services\/aop-cambridge-core\/content\/view\/S0956796800001842","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2026,5,26]],"date-time":"2026-05-26T22:35:24Z","timestamp":1779834924000},"score":1,"resource":{"primary":{"URL":"https:\/\/www.cambridge.org\/core\/product\/identifier\/S0956796800001842\/type\/journal_article"}},"subtitle":["Deriving tidy drawings of trees"],"short-title":[],"issued":{"date-parts":[[1996,5]]},"references-count":28,"journal-issue":{"issue":"3","published-print":{"date-parts":[[1996,5]]}},"alternative-id":["S0956796800001842"],"URL":"https:\/\/doi.org\/10.1017\/s0956796800001842","relation":{},"ISSN":["0956-7968","1469-7653"],"issn-type":[{"value":"0956-7968","type":"print"},{"value":"1469-7653","type":"electronic"}],"subject":[],"published":{"date-parts":[[1996,5]]}}}