{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,1,12]],"date-time":"2025-01-12T00:10:24Z","timestamp":1736640624741,"version":"3.32.0"},"reference-count":26,"publisher":"Wiley","issue":"1","license":[{"start":{"date-parts":[[2006,10,30]],"date-time":"2006-10-30T00:00:00Z","timestamp":1162166400000},"content-version":"vor","delay-in-days":4320,"URL":"http:\/\/onlinelibrary.wiley.com\/termsAndConditions#vor"}],"content-domain":{"domain":[],"crossmark-restriction":false},"short-container-title":["Softw Pract Exp"],"published-print":{"date-parts":[[1995,1]]},"abstract":"<jats:title>Abstract<\/jats:title><jats:p>Functional languages do not usually mesh well with embedded applications because of the need for special I\/O device\u2010handling. By introducing a process model to a language, however, it becomes possible to express register\u2010level device operations and interrupts in a modular manner. This paper describes such a model, its implementation by extension to the Gofer programming system, and examples of its use. Performance results indicate that even this prototype interpretive system is adequate for small applications. The major gain of using a functional language is the ease with which abstraction can be layered over low\u2010level detail, improving both the readability of code and its tractability.<\/jats:p>","DOI":"10.1002\/spe.4380250105","type":"journal-article","created":{"date-parts":[[2006,11,17]],"date-time":"2006-11-17T17:17:12Z","timestamp":1163783832000},"page":"73-96","source":"Crossref","is-referenced-by-count":10,"title":["Extending a functional programming system for embedded applications"],"prefix":"10.1002","volume":"25","author":[{"given":"Malcolm","family":"Wallace","sequence":"first","affiliation":[]},{"given":"Colin","family":"Runciman","sequence":"additional","affiliation":[]}],"member":"311","published-online":{"date-parts":[[2006,10,30]]},"reference":[{"key":"e_1_2_1_2_2","doi-asserted-by":"crossref","unstructured":"P. Hudak S. L. Peyton Jones and P. Wadler (eds) \u2018Report on the programming language Haskell version 1.2\u2019 ACM SIGPLAN Notices 27 (5) (1992).","DOI":"10.1145\/130697.130699"},{"volume-title":"Nebula: a functional operating system","year":"1981","author":"Karlsson Kent","key":"e_1_2_1_3_2"},{"volume-title":"Real\u2010time Systems and their Programming Languages","year":"1989","author":"Burns A.","key":"e_1_2_1_4_2"},{"key":"e_1_2_1_5_2","doi-asserted-by":"crossref","unstructured":"J. R.KennawayandM. R.Sleep \u2018Expressions as processes\u2019 ACM Symposium on LISP and Functional Programming Pittsburgh Pennsylvania August1982 pp.21\u201328.","DOI":"10.1145\/800068.802131"},{"key":"e_1_2_1_6_2","first-page":"92","volume-title":"Proc. Workshop on Implementation of Functional Languages","author":"Clack Chris","year":"1985"},{"key":"e_1_2_1_7_2","doi-asserted-by":"publisher","DOI":"10.1093\/comjnl\/32.2.175"},{"key":"e_1_2_1_8_2","doi-asserted-by":"crossref","unstructured":"CliffordWalinskyandDebBanerjee \u2018A functional programming language compiler for massively parallel computers\u2019 ACM Conference on LISP and Functional Programming Nice France 1990 pp.131\u2013138.","DOI":"10.1145\/91556.91610"},{"key":"e_1_2_1_9_2","doi-asserted-by":"publisher","DOI":"10.1093\/comjnl\/32.2.162"},{"key":"e_1_2_1_10_2","doi-asserted-by":"publisher","DOI":"10.1016\/0167-6423(86)90028-6"},{"key":"e_1_2_1_11_2","doi-asserted-by":"publisher","DOI":"10.1007\/3-540-17945-3_3"},{"key":"e_1_2_1_12_2","unstructured":"JohnCupitt \u2018The design and implementation of an operating system in a functional language\u2019 Ph. D. Thesis Computing Laboratory University of Kent at Canterbury October1990."},{"key":"e_1_2_1_13_2","doi-asserted-by":"publisher","DOI":"10.1002\/spe.4380070104"},{"key":"e_1_2_1_14_2","unstructured":"PaulHudakandRaman S.Sundaresh \u2018On the expressiveness of purely functional I\/O systems\u2019 Yale University Department of Computer Science YALEU\/DCS\/RR\u2010665 December1988."},{"key":"e_1_2_1_15_2","unstructured":"Andrew D.Gordon \u2018Functional programming and input\/output\u2019 Ph. D. Thesis Computing Laboratory University of Cambridge August1992."},{"key":"e_1_2_1_16_2","doi-asserted-by":"publisher","DOI":"10.1145\/130697.130698"},{"key":"e_1_2_1_17_2","unstructured":"Mark P.Jones \u2018The GOFER functional programming environment v2.28\u2019 Yale University ftp fromftp:\/\/nebula.cs.yale.edu:\/pub\/haskell\/gofer May1993."},{"key":"e_1_2_1_18_2","doi-asserted-by":"publisher","DOI":"10.1093\/comjnl\/32.2.127"},{"key":"e_1_2_1_19_2","doi-asserted-by":"publisher","DOI":"10.1049\/sej.1991.0015"},{"key":"e_1_2_1_20_2","doi-asserted-by":"publisher","DOI":"10.1145\/321738.321743"},{"key":"e_1_2_1_21_2","doi-asserted-by":"crossref","unstructured":"John H.Reppy \u2018CML: a higher\u2010order concurrent language\u2019 SIGPLAN Conference on Programming Language Design and Implementation June1991 pp.293\u2013305.","DOI":"10.1145\/113446.113470"},{"key":"e_1_2_1_22_2","unstructured":"J. L.Armstrong B. O.Dacker S. R.VirdingandM. C.Williams \u2018Implementing a functional language for highly parallel real time applications\u2019 Proc. SETSS 92 Florence April1992."},{"volume-title":"Concurrent Programming in Erlang","year":"1993","author":"Armstrong Joe","key":"e_1_2_1_23_2"},{"key":"e_1_2_1_24_2","unstructured":"D. H.FijmaandR. T.Udink \u2018A case study in functional real\u2010time programming\u2019 Department of Computer Science University of Twente Enschede the Netherlands Memoranda Informatica 91\u201362August1991."},{"volume-title":"Proc. Winter Meeting","year":"1993","author":"Wallace Malcolm","key":"e_1_2_1_25_2"},{"key":"e_1_2_1_26_2","doi-asserted-by":"crossref","unstructured":"MalcolmWallaceandColinRunciman \u2018Type\u2010checked message passing between functional processes\u2019.Draft Proceedings of the Glasgow Functional Programming Workshop September1994.","DOI":"10.1007\/978-1-4471-3573-9_17"},{"key":"e_1_2_1_27_2","doi-asserted-by":"publisher","DOI":"10.1145\/165180.165190"}],"container-title":["Software: Practice and Experience"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/api.wiley.com\/onlinelibrary\/tdm\/v1\/articles\/10.1002%2Fspe.4380250105","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/onlinelibrary.wiley.com\/doi\/pdf\/10.1002\/spe.4380250105","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,1,11]],"date-time":"2025-01-11T23:53:41Z","timestamp":1736639621000},"score":1,"resource":{"primary":{"URL":"https:\/\/onlinelibrary.wiley.com\/doi\/10.1002\/spe.4380250105"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[1995,1]]},"references-count":26,"journal-issue":{"issue":"1","published-print":{"date-parts":[[1995,1]]}},"alternative-id":["10.1002\/spe.4380250105"],"URL":"https:\/\/doi.org\/10.1002\/spe.4380250105","archive":["Portico"],"relation":{},"ISSN":["0038-0644","1097-024X"],"issn-type":[{"type":"print","value":"0038-0644"},{"type":"electronic","value":"1097-024X"}],"subject":[],"published":{"date-parts":[[1995,1]]}}}