{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2024,9,11]],"date-time":"2024-09-11T07:58:18Z","timestamp":1726041498827},"publisher-location":"Cham","reference-count":40,"publisher":"Springer International Publishing","isbn-type":[{"type":"print","value":"9783030283452"},{"type":"electronic","value":"9783030283469"}],"license":[{"start":{"date-parts":[[2019,1,1]],"date-time":"2019-01-01T00:00:00Z","timestamp":1546300800000},"content-version":"tdm","delay-in-days":0,"URL":"http:\/\/www.springer.com\/tdm"}],"content-domain":{"domain":["link.springer.com"],"crossmark-restriction":false},"short-container-title":[],"published-print":{"date-parts":[[2019]]},"DOI":"10.1007\/978-3-030-28346-9_8","type":"book-chapter","created":{"date-parts":[[2019,8,13]],"date-time":"2019-08-13T00:28:34Z","timestamp":1565656114000},"page":"283-340","update-policy":"http:\/\/dx.doi.org\/10.1007\/springer_crossmark_policy","source":"Crossref","is-referenced-by-count":0,"title":["Type-Safe Functions and Tasks in a Shallow Embedded DSL for Microprocessors"],"prefix":"10.1007","author":[{"given":"Pieter","family":"Koopman","sequence":"first","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Rinus","family":"Plasmeijer","sequence":"additional","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"297","published-online":{"date-parts":[[2019,8,14]]},"reference":[{"key":"8_CR1","unstructured":"Ada, L.: adafruit\/DHT-sensor-library (2017). \n                    https:\/\/github.com\/adafruit\/DHT-sensor-library"},{"key":"8_CR2","unstructured":"Arduino.cc: (2015). \n                    https:\/\/www.arduino.cc"},{"key":"8_CR3","unstructured":"Arduino.cc: Arduino LiquidCrystal Library (2015). \n                    https:\/\/www.arduino.cc\/en\/Reference\/LiquidCrystal"},{"key":"8_CR4","unstructured":"Arduino.cc: Arduino NewPing Library (2015). \n                    http:\/\/playground.arduino.cc\/Code\/NewPing"},{"key":"8_CR5","unstructured":"Arduino.cc: Arduino Servo Library (2015). \n                    https:\/\/www.arduino.cc\/en\/Reference\/Servo"},{"key":"8_CR6","unstructured":"Arduino.org (2015). \n                    http:\/\/www.arduino.org\/"},{"issue":"5","key":"8_CR7","doi-asserted-by":"publisher","first-page":"509","DOI":"10.1017\/S0956796809007205","volume":"19","author":"J Carette","year":"2009","unstructured":"Carette, J., Kiselyov, O., Shan, C.: Finally tagless, partially evaluated: tagless staged interpreters for simpler typed languages. J. Funct. Program. 19(5), 509\u2013543 (2009). \n                    https:\/\/doi.org\/10.1017\/S0956796809007205","journal-title":"J. Funct. Program."},{"key":"8_CR8","unstructured":"D-Robotics: DHT11 humidity & temperature sensor (2010). \n                    http:\/\/www.micro4you.com\/files\/sensor\/DHT11.pdf"},{"issue":"4","key":"8_CR9","doi-asserted-by":"publisher","first-page":"35","DOI":"10.1145\/1713254.1713263","volume":"43","author":"PE Dagand","year":"2010","unstructured":"Dagand, P.E., Baumann, A., Roscoe, T.: Filet-o-fish: practical and dependable domain-specific languages for OS development. SIGOPS Oper. Syst. Rev. 43(4), 35\u201339 (2010). \n                    https:\/\/doi.org\/10.1145\/1713254.1713263","journal-title":"SIGOPS Oper. Syst. Rev."},{"key":"8_CR10","doi-asserted-by":"publisher","unstructured":"Damas, L., Milner, R.: Principal type-schemes for functional programs. In: Proceedings of the 9th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, POPL 1982, pp. 207\u2013212. ACM, New York (1982). \n                    https:\/\/doi.org\/10.1145\/582153.582176","DOI":"10.1145\/582153.582176"},{"key":"8_CR11","doi-asserted-by":"publisher","unstructured":"Danvy, O., Nielsen, L.R.: Defunctionalization at work. In: Proceedings of the 3rd ACM SIGPLAN International Conference on Principles and Practice of Declarative Programming, PPDP 2001, pp. 162\u2013174. ACM, New York (2001). \n                    https:\/\/doi.org\/10.1145\/773184.773202","DOI":"10.1145\/773184.773202"},{"key":"8_CR12","unstructured":"Erkok, L.: hArduino (2014). \n                    https:\/\/hackage.haskell.org\/package\/hArduino"},{"key":"8_CR13","unstructured":"Feeley, M., Miller, J.S., Rozas, G.J., Wilson, J.A.: Compiling higher-order languages into fully tail-recursive portable C. Technical report (1997)"},{"key":"8_CR14","volume-title":"Domain Specific Languages","author":"M Fowler","year":"2010","unstructured":"Fowler, M.: Domain Specific Languages, 1st edn. Addison-Wesley Professional, Boston (2010)","edition":"1"},{"key":"8_CR15","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"1","DOI":"10.1007\/978-3-319-15940-9_1","volume-title":"Central European Functional Programming School","author":"J Gibbons","year":"2015","unstructured":"Gibbons, J.: Functional programming for domain-specific languages. In: Zs\u00f3k, V., Horv\u00e1th, Z., Csat\u00f3, L. (eds.) CEFP 2013. LNCS, vol. 8606, pp. 1\u201328. Springer, Cham (2015). \n                    https:\/\/doi.org\/10.1007\/978-3-319-15940-9_1"},{"key":"8_CR16","unstructured":"Hoefs, J.: Firmata protocol (2014). \n                    http:\/\/firmata.org\/wiki\/Main_Page"},{"issue":"4es","key":"8_CR17","doi-asserted-by":"publisher","first-page":"196","DOI":"10.1145\/242224.242477","volume":"28","author":"Paul Hudak","year":"1996","unstructured":"Hudak, P.: Building domain-specific embedded languages. ACM Comput. Surv. 28(4es) (1996). \n                    https:\/\/doi.org\/10.1145\/242224.242477","journal-title":"ACM Computing Surveys"},{"issue":"6","key":"8_CR18","doi-asserted-by":"publisher","first-page":"635","DOI":"10.1002\/(SICI)1097-024X(199606)26:6<635::AID-SPE26>3.0.CO;2-P","volume":"26","author":"R Ierusalimschy","year":"1996","unstructured":"Ierusalimschy, R., de Figueiredo, L.H., Filho, W.C.: Lua - an extensible extension language. Softw. Pract. Exper. 26(6), 635\u2013652 (1996)","journal-title":"Softw. Pract. Exper."},{"key":"8_CR19","unstructured":"Ierusalimschy, R., de Figueiredo, L.H., Celes, W.: Lua 5.1 Reference Manual (2006). \n                    Lua.org"},{"key":"8_CR20","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"168","DOI":"10.1007\/978-3-642-40355-2_12","volume-title":"The Beauty of Functional Code","author":"JM Jansen","year":"2013","unstructured":"Jansen, J.M.: Programming in the \n                    \n                      \n                    \n                    $$\\lambda $$\n                  -calculus: from Church to Scott and back. In: Achten, P., Koopman, P. (eds.) The Beauty of Functional Code. LNCS, vol. 8106, pp. 168\u2013180. Springer, Heidelberg (2013). \n                    https:\/\/doi.org\/10.1007\/978-3-642-40355-2_12"},{"key":"8_CR21","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"286","DOI":"10.1007\/978-3-540-88059-2_8","volume-title":"Central European Functional Programming School","author":"JM Jansen","year":"2008","unstructured":"Jansen, J.M., Koopman, P., Plasmeijer, R.: From interpretation to compilation. In: Horv\u00e1th, Z., Plasmeijer, R., So\u00f3s, A., Zs\u00f3k, V. (eds.) CEFP 2007. LNCS, vol. 5161, pp. 286\u2013301. Springer, Heidelberg (2008). \n                    https:\/\/doi.org\/10.1007\/978-3-540-88059-2_8"},{"issue":"1","key":"8_CR22","doi-asserted-by":"publisher","first-page":"297","DOI":"10.1145\/1328897.1328475","volume":"43","author":"P Johann","year":"2008","unstructured":"Johann, P., Ghani, N.: Foundations for structured programming with GADTs. SIGPLAN Not. 43(1), 297\u2013308 (2008)","journal-title":"SIGPLAN Not."},{"key":"8_CR23","doi-asserted-by":"publisher","unstructured":"Jones, M.P., Diatchki, I.S.: Language and program design for functional dependencies. In: Proceedings of the First ACM SIGPLAN Symposium on Haskell, Haskell 2008, pp. 87\u201398. ACM, New York (2008). \n                    https:\/\/doi.org\/10.1145\/1411286.1411298","DOI":"10.1145\/1411286.1411298"},{"key":"8_CR24","volume-title":"Partial Evaluation and Automatic Program Generation","author":"ND Jones","year":"1993","unstructured":"Jones, N.D., Gomard, C.K., Sestoft, P.: Partial Evaluation and Automatic Program Generation. Prentice-Hall, Inc., Upper Saddle River (1993)"},{"key":"8_CR25","doi-asserted-by":"publisher","unstructured":"Kameyama, Y., Kiselyov, O., Shan, C.: Combinators for impure yet hygienic code generation. In: Proceedings of the ACM SIGPLAN 2014 Workshop on Partial Evaluation and Program Manipulation, pp. 3\u201314, PEPM 2014. ACM, New York (2014). \n                    https:\/\/doi.org\/10.1145\/2543728.2543740","DOI":"10.1145\/2543728.2543740"},{"key":"8_CR26","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"104","DOI":"10.1007\/978-3-319-39110-6_6","volume-title":"Trends in Functional Programming","author":"P Koopman","year":"2016","unstructured":"Koopman, P., Plasmeijer, R.: A shallow embedded type safe extendable DSL for the Arduino. In: Serrano, M., Hage, J. (eds.) TFP 2015. LNCS, vol. 9547, pp. 104\u2013123. Springer, Cham (2016). \n                    https:\/\/doi.org\/10.1007\/978-3-319-39110-6_6"},{"key":"8_CR27","doi-asserted-by":"publisher","unstructured":"L\u00e4mmel, R., Ostermann, K.: Software extension and integration with type classes. In: Proceedings of the 5th International Conference on Generative Programming and Component Engineering, GPCE 2006, pp. 161\u2013170. ACM, New York (2006). \n                    https:\/\/doi.org\/10.1145\/1173706.1173732","DOI":"10.1145\/1173706.1173732"},{"key":"8_CR28","unstructured":"Lindberg, R.: frp-arduino (2015). \n                    https:\/\/github.com\/frp-arduino\/frp-arduino#contributing"},{"key":"8_CR29","volume-title":"Semantics with Applications: A Formal Introduction","author":"HR Nielson","year":"1992","unstructured":"Nielson, H.R., Nielson, F.: Semantics with Applications: A Formal Introduction. Wiley, New York (1992)"},{"key":"8_CR30","series-title":"Prentice-Hall International Series in Computer Science","volume-title":"The Implementation of Functional Programming Languages","author":"SL Peyton Jones","year":"1987","unstructured":"Peyton Jones, S.L.: The Implementation of Functional Programming Languages. Prentice-Hall International Series in Computer Science. Prentice-Hall, Inc., Upper Saddle River (1987)"},{"key":"8_CR31","doi-asserted-by":"crossref","unstructured":"Plasmeijer, R., Achten, P., Koopman, P.: iTasks: executable specifications of interactive work flow systems for the web. In: Hinze, R., Ramsey, N. (eds.) Proceedings of the ICFP 2007, pp. 141\u2013152. ACM, Freiburg (2007)","DOI":"10.1145\/1291151.1291174"},{"key":"8_CR32","doi-asserted-by":"publisher","unstructured":"Plasmeijer, R., Lijnse, B., Michels, S., Achten, P., Koopman, P.: Task-oriented programming in a pure functional language. In: Proceedings of the 14th Symposium on Principles and Practice of Declarative Programming, PPDP 2012, pp. 195\u2013206. ACM, New York (2012). \n                    https:\/\/doi.org\/10.1145\/2370776.2370801","DOI":"10.1145\/2370776.2370801"},{"key":"8_CR33","unstructured":"Plasmeijer, R., van Eekelen, M., van Groningen, J.: Clean language report (version 2.2) (2011). \n                    http:\/\/clean.cs.ru.nl\/Documentation"},{"key":"8_CR34","unstructured":"Raspberrypi.org: Pi zero description (2015). \n                    https:\/\/www.raspberrypi.org\/products\/pi-zero\/"},{"key":"8_CR35","doi-asserted-by":"publisher","unstructured":"Reynolds, J.C.: Definitional interpreters for higher-order programming languages. In: Proceedings of the ACM Annual Conference, ACM 1972, vol. 2, pp. 717\u2013740. ACM, New York (1972). \n                    https:\/\/doi.org\/10.1145\/800194.805852","DOI":"10.1145\/800194.805852"},{"key":"8_CR36","unstructured":"Suchocki, R., Kalvala, S.: MicroScheme: functional programming for the Arduino. In: Scheme Workshop (2014)"},{"key":"8_CR37","doi-asserted-by":"publisher","unstructured":"Sumii, E.: MinCaml: a simple and efficient compiler for a minimal functional language. In: Proceedings of the 2005 Workshop on Functional and Declarative Programming in Education, FDPE 2005, pp. 27\u201338. ACM, New York (2005). \n                    https:\/\/doi.org\/10.1145\/1085114.1085122","DOI":"10.1145\/1085114.1085122"},{"key":"8_CR38","unstructured":"visualmicro.com: Debugging tutorial (2015). \n                    http:\/\/www.visualmicro.com\/page\/User-Guide.aspx?doc=Debugging-Walkthrough-Start.html"},{"key":"8_CR39","unstructured":"Wadler, P.: The expression problem (1998). \n                    http:\/\/www.daimi.au.dk\/~madst\/tool\/papers\/expression.txt"},{"key":"8_CR40","unstructured":"Williams, G.: The espruino project (2015). \n                    http:\/\/www.espruino.com\/"}],"container-title":["Lecture Notes in Computer Science","Central European Functional Programming School"],"original-title":[],"language":"en","link":[{"URL":"http:\/\/link.springer.com\/content\/pdf\/10.1007\/978-3-030-28346-9_8","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2019,8,13]],"date-time":"2019-08-13T00:30:37Z","timestamp":1565656237000},"score":1,"resource":{"primary":{"URL":"http:\/\/link.springer.com\/10.1007\/978-3-030-28346-9_8"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2019]]},"ISBN":["9783030283452","9783030283469"],"references-count":40,"URL":"https:\/\/doi.org\/10.1007\/978-3-030-28346-9_8","relation":{},"ISSN":["0302-9743","1611-3349"],"issn-type":[{"type":"print","value":"0302-9743"},{"type":"electronic","value":"1611-3349"}],"subject":[],"published":{"date-parts":[[2019]]},"assertion":[{"value":"14 August 2019","order":1,"name":"first_online","label":"First Online","group":{"name":"ChapterHistory","label":"Chapter History"}},{"value":"CEFP","order":1,"name":"conference_acronym","label":"Conference Acronym","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"Central European Functional Programming School","order":2,"name":"conference_name","label":"Conference Name","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"Budapest","order":3,"name":"conference_city","label":"Conference City","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"Hungary","order":4,"name":"conference_country","label":"Conference Country","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"2015","order":5,"name":"conference_year","label":"Conference Year","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"6 July 2015","order":7,"name":"conference_start_date","label":"Conference Start Date","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"10 July 2015","order":8,"name":"conference_end_date","label":"Conference End Date","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"6","order":9,"name":"conference_number","label":"Conference Number","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"cefp2015","order":10,"name":"conference_id","label":"Conference ID","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"https:\/\/people.inf.elte.hu\/cefp\/cefp2015\/","order":11,"name":"conference_url","label":"Conference URL","group":{"name":"ConferenceInfo","label":"Conference Information"}}]}}