{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,4,22]],"date-time":"2026-04-22T20:54:01Z","timestamp":1776891241872,"version":"3.51.2"},"reference-count":46,"publisher":"Centre pour la Communication Scientifique Directe (CCSD)","issue":"3","license":[{"start":{"date-parts":[[2008,11,7]],"date-time":"2008-11-07T00:00:00Z","timestamp":1226016000000},"content-version":"unspecified","delay-in-days":4878,"URL":"https:\/\/www.cambridge.org\/core\/terms"}],"content-domain":{"domain":[],"crossmark-restriction":false},"short-container-title":["J. Funct. Prog."],"published-print":{"date-parts":[[1995,7]]},"abstract":"<jats:title>Abstract<\/jats:title>\n                  <jats:p>Solid modelling using constructive solid geometry (CSG) includes many examples of stylised divide-and-conquer algorithms. We identify the sources of these recurrent patterns and describe a Geometric Evaluation Library (GEL) which captures them as higher-order functions. This library then becomes the basis of developing CSG applications quickly and concisely. GEL is currently implemented as a set of separately compiled modules in the pure functional language Hope+. We evaluate our work in terms of performance and general applicability. We also assess the benefits of the functional paradigm in this domain and the merits of programming with a set of higher-order functions.<\/jats:p>","DOI":"10.1017\/s0956796800001416","type":"journal-article","created":{"date-parts":[[2008,11,7]],"date-time":"2008-11-07T11:11:58Z","timestamp":1226056318000},"page":"415-442","source":"Crossref","is-referenced-by-count":0,"title":["A polymorphic library for constructive solid geometry"],"prefix":"10.46298","volume":"5","author":[{"given":"J. R.","family":"Davy","sequence":"first","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"P. M.","family":"Dew","sequence":"additional","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"25203","published-online":{"date-parts":[[2008,11,7]]},"reference":[{"key":"S0956796800001416_ref044","first-page":"455","volume-title":"Proc. CAD 84","author":"Wallis","year":"1984"},{"key":"S0956796800001416_ref043","unstructured":"Tilove R. B. (1981) Exploiting Spatial and Structural Locality in Geometric Modelling. PhD thesis, University of Rochester."},{"key":"S0956796800001416_ref042","doi-asserted-by":"publisher","DOI":"10.1109\/TC.1980.1675470"},{"key":"S0956796800001416_ref040","doi-asserted-by":"publisher","DOI":"10.1002\/cnm.1630040313"},{"key":"S0956796800001416_ref039","unstructured":"Shamos M. I. (1977) Computational Geometry, PhD thesis, Yale University."},{"key":"S0956796800001416_ref036","doi-asserted-by":"publisher","DOI":"10.1145\/356924.356930"},{"key":"S0956796800001416_ref035","volume-title":"The Mathematics of Surfaces II","author":"Saia","year":"1987"},{"key":"S0956796800001416_ref031","unstructured":"Perry N. (1995) Private communication."},{"key":"S0956796800001416_ref030","unstructured":"Perry N. (1989) Hope+. Technical documentation, Department of Computing, Imperial College London."},{"key":"S0956796800001416_ref029","doi-asserted-by":"publisher","DOI":"10.1016\/0010-4485(90)90093-R"},{"key":"S0956796800001416_ref028","unstructured":"Muuss M. J. (1987) RT and REMRT: Shared Memory Parallel and Network Distributed Ray Tracing Programs. In USENIX Association, 4th Computer Graphics Workshop, pp. 86\u201397."},{"key":"S0956796800001416_ref027","doi-asserted-by":"publisher","DOI":"10.1109\/MCG.1984.275931"},{"key":"S0956796800001416_ref026","unstructured":"Meertens L. G. T. (1986) Algorithmics \u2013 Towards Programming as a Mathematical Activity. In Proc. CWI Symposium on Mathematics and Computer Science, North Holland, pp. 289\u2013234."},{"key":"S0956796800001416_ref025","doi-asserted-by":"publisher","DOI":"10.1016\/0146-664X(82)90104-6"},{"key":"S0956796800001416_ref024","doi-asserted-by":"publisher","DOI":"10.1145\/358628.358648"},{"key":"S0956796800001416_ref038","doi-asserted-by":"publisher","DOI":"10.1145\/325165.325211"},{"key":"S0956796800001416_ref022","doi-asserted-by":"publisher","DOI":"10.1016\/0010-4485(89)90002-X"},{"key":"S0956796800001416_ref019","volume-title":"Benchmarking implementations of Lazy Functional Languages II \u2013 Two Years Later","author":"Hartel","year":"1994"},{"key":"S0956796800001416_ref018","doi-asserted-by":"crossref","first-page":"341","DOI":"10.1145\/165180.165230","volume-title":"6th Functional Programming Languages and Computer Architecture","author":"Hartel","year":"1993"},{"key":"S0956796800001416_ref017","first-page":"53","article-title":"Digital Model for Three-dimensional Surface Representation","volume":"1","author":"Gomez","year":"1979","journal-title":"Geo-processing"},{"key":"S0956796800001416_ref016","doi-asserted-by":"publisher","DOI":"10.1016\/0097-8493(84)90054-2"},{"key":"S0956796800001416_ref014","volume-title":"The Performance of Parallel Algorithmic Skeletons","author":"Deldarie","year":"1995"},{"key":"S0956796800001416_ref013","unstructured":"Davy J. R. (1992) Using Divide-and-Conquer for Parallel Geometric Evaluation. PhD thesis, University of Leeds."},{"key":"S0956796800001416_ref009","doi-asserted-by":"publisher","DOI":"10.1177\/027836498900800101"},{"key":"S0956796800001416_ref005","doi-asserted-by":"publisher","DOI":"10.1016\/0004-3702(81)90028-X"},{"key":"S0956796800001416_ref003","doi-asserted-by":"publisher","DOI":"10.1145\/358645.358661"},{"key":"S0956796800001416_ref002","first-page":"244","volume-title":"Proc. CAD 84","author":"Arbab","year":"1984"},{"key":"S0956796800001416_ref037","doi-asserted-by":"crossref","unstructured":"Samet H. (1990) Applications of Spatial Data Structures, Addison Wesley.","DOI":"10.1007\/3-540-52208-5_28"},{"key":"S0956796800001416_ref015","unstructured":"Dunnington D. R. (1989) A Recursive Subdivision Strategy for Solid Modelling with Sculptured Surfaces. PhD thesis, Leeds University."},{"key":"S0956796800001416_ref023","volume-title":"Functional Programming for Loosely-coupled Multiprocessors","author":"Kelly","year":"1989"},{"key":"S0956796800001416_ref041","volume-title":"Abstract Machine Models for Highly Parallel Computers","author":"Skillicorn","year":"1995"},{"key":"S0956796800001416_ref007","doi-asserted-by":"publisher","DOI":"10.1145\/321992.321996"},{"key":"S0956796800001416_ref021","doi-asserted-by":"publisher","DOI":"10.1007\/BF01901686"},{"key":"S0956796800001416_ref046","doi-asserted-by":"publisher","DOI":"10.1007\/BF01901265"},{"key":"S0956796800001416_ref012","volume-title":"Abstract Machine Models for Highly Parallel Computers","author":"Darlington","year":"1995"},{"key":"S0956796800001416_ref011","volume-title":"Algorithmic Skeletons: Structured Management of Parallel Computation.","author":"Cole","year":"1989"},{"key":"S0956796800001416_ref034","doi-asserted-by":"publisher","DOI":"10.1145\/356827.356833"},{"key":"S0956796800001416_ref010","doi-asserted-by":"publisher","DOI":"10.1109\/MCG.1987.276987"},{"key":"S0956796800001416_ref004","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-642-87374-4_1"},{"key":"S0956796800001416_ref006","doi-asserted-by":"publisher","DOI":"10.1145\/78956.78959"},{"key":"S0956796800001416_ref008","first-page":"1167","article-title":"Manipulating Multilinked Data Structures in a Pure Functional Language","volume":"20","author":"Burton","year":"1990","journal-title":"Software - Practice and Experience"},{"key":"S0956796800001416_ref033","doi-asserted-by":"publisher","DOI":"10.1145\/359423.359430"},{"key":"S0956796800001416_ref032","volume-title":"The Implementation of Functional Programming Languages","author":"Peyton Jones","year":"1987"},{"key":"S0956796800001416_ref045","doi-asserted-by":"publisher","DOI":"10.1016\/0010-4485(86)90092-8"},{"key":"S0956796800001416_ref001","doi-asserted-by":"publisher","DOI":"10.1016\/0010-4485(90)90047-G"},{"key":"S0956796800001416_ref020","first-page":"452","volume-title":"Parallel Processing for Computer Vision and Display","author":"Holliman","year":"1989"}],"container-title":["Journal of Functional Programming"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/www.cambridge.org\/core\/services\/aop-cambridge-core\/content\/view\/S0956796800001416","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2026,4,22]],"date-time":"2026-04-22T20:18:06Z","timestamp":1776889086000},"score":1,"resource":{"primary":{"URL":"https:\/\/www.cambridge.org\/core\/product\/identifier\/S0956796800001416\/type\/journal_article"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[1995,7]]},"references-count":46,"journal-issue":{"issue":"3","published-print":{"date-parts":[[1995,7]]}},"alternative-id":["S0956796800001416"],"URL":"https:\/\/doi.org\/10.1017\/s0956796800001416","relation":{},"ISSN":["0956-7968","1469-7653"],"issn-type":[{"value":"0956-7968","type":"print"},{"value":"1469-7653","type":"electronic"}],"subject":[],"published":{"date-parts":[[1995,7]]}}}