{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2024,9,11]],"date-time":"2024-09-11T08:44:12Z","timestamp":1726044252317},"publisher-location":"Cham","reference-count":46,"publisher":"Springer International Publishing","isbn-type":[{"type":"print","value":"9783030289560"},{"type":"electronic","value":"9783030289577"}],"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-28957-7_17","type":"book-chapter","created":{"date-parts":[[2019,9,11]],"date-time":"2019-09-11T19:06:24Z","timestamp":1568228784000},"page":"191-209","update-policy":"http:\/\/dx.doi.org\/10.1007\/springer_crossmark_policy","source":"Crossref","is-referenced-by-count":1,"title":["Type-Driven Cross-Programming for Android and LEGO Mindstorms Interoperability"],"prefix":"10.1007","author":[{"given":"Alvise","family":"Span\u00f2","sequence":"first","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Agostino","family":"Cortesi","sequence":"additional","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Giulio","family":"Zausa","sequence":"additional","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"297","published-online":{"date-parts":[[2019,8,11]]},"reference":[{"doi-asserted-by":"crossref","unstructured":"Barendregt, H.P.: Functional programming and lambda calculus. In: Formal Models and Semantics, pp. 321\u2013363. Elsevier (1990)","key":"17_CR1","DOI":"10.1016\/B978-0-444-88074-1.50012-3"},{"unstructured":"Bloch, J.: Effective Java. Pearson Education India (2016)","key":"17_CR2"},{"unstructured":"Bracha, G.: Generics in the Java Programming Language (2004)","key":"17_CR3"},{"issue":"10","key":"17_CR4","doi-asserted-by":"publisher","first-page":"183","DOI":"10.1145\/286942.286957","volume":"33","author":"G Bracha","year":"1998","unstructured":"Bracha, G., Odersky, M., Stoutamire, D., Wadler, P.: Making the future safe for the past: adding genericity to the Java programming language. ACM SIGPLAN Not. 33(10), 183\u2013200 (1998)","journal-title":"ACM SIGPLAN Not."},{"key":"17_CR5","doi-asserted-by":"publisher","first-page":"133","DOI":"10.1145\/2544174.2500581","volume":"48","author":"E Brady","year":"2013","unstructured":"Brady, E.: Programming and reasoning with algebraic effects and dependent types. ACM SIGPLAN Not. 48, 133\u2013144 (2013)","journal-title":"ACM SIGPLAN Not."},{"unstructured":"Brady, E.: Type-Driven Development with Idris. Manning (2016)","key":"17_CR6"},{"unstructured":"Cardelli, L.: Typeful programming. In: Formal Description of Programming Concepts, pp. 431\u2013507 (1991)","key":"17_CR7"},{"key":"17_CR8","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"227","DOI":"10.1007\/978-3-540-73589-2_12","volume-title":"ECOOP 2007 \u2013 Object-Oriented Programming","author":"P Chalin","year":"2007","unstructured":"Chalin, P., James, P.R.: Non-null references by default in Java: alleviating the nullity annotation burden. In: Ernst, E. (ed.) ECOOP 2007. LNCS, vol. 4609, pp. 227\u2013247. Springer, Heidelberg (2007). \n                      https:\/\/doi.org\/10.1007\/978-3-540-73589-2_12"},{"issue":"6","key":"17_CR9","doi-asserted-by":"publisher","first-page":"515","DOI":"10.1049\/iet-sen:20080010","volume":"2","author":"P Chalin","year":"2008","unstructured":"Chalin, P., James, P.R., Rioux, F.: Reducing the use of nullable types through non-null by default and monotonic non-null. IET Softw. 2(6), 515\u2013531 (2008)","journal-title":"IET Softw."},{"key":"17_CR10","first-page":"207","volume":"82","author":"L Damas","year":"1982","unstructured":"Damas, L., Milner, R.: Principal type-schemes for functional programs. POPL 82, 207\u2013212 (1982)","journal-title":"POPL"},{"unstructured":"Ehringer, D.: The Dalvik virtual machine architecture. Tech. Rep. 4(8) (2010)","key":"17_CR11"},{"doi-asserted-by":"crossref","unstructured":"Ellis, B., Stylos, J., Myers, B.: The factory pattern in API design: a usability evaluation. In: Proceedings of the 29th International Conference on Software Engineering, pp. 302\u2013312. IEEE Computer Society (2007)","key":"17_CR12","DOI":"10.1109\/ICSE.2007.85"},{"key":"17_CR13","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"406","DOI":"10.1007\/3-540-47910-4_21","volume-title":"ECOOP\u2019 93 \u2014 Object-Oriented Programming","author":"E Gamma","year":"1993","unstructured":"Gamma, E., Helm, R., Johnson, R., Vlissides, J.: Design patterns: abstraction and reuse of object-oriented design. In: Nierstrasz, O.M. (ed.) ECOOP 1993. LNCS, vol. 707, pp. 406\u2013431. Springer, Heidelberg (1993). \n                      https:\/\/doi.org\/10.1007\/3-540-47910-4_21"},{"doi-asserted-by":"crossref","unstructured":"Gibbons, J.: Design patterns as higher-order datatype-generic programs. In: Proceedings of the 2006 ACM SIGPLAN Workshop on Generic Programming, pp. 1\u201312. ACM (2006)","key":"17_CR14","DOI":"10.1145\/1159861.1159863"},{"unstructured":"Goetz, B.: State of the Lambda, 4th edn. (2011). \n                      http:\/\/cr.openjdk.java.net\/~briangoetz\/lambda\/lambda-state-4.html","key":"17_CR15"},{"unstructured":"Google Inc.: Android Executor Interface Documentation (2012). \n                      https:\/\/developer.android.com\/reference\/java\/util\/concurrent\/Executor","key":"17_CR16"},{"unstructured":"Google Inc.: Android FutureTask Class Documentation (2012). \n                      https:\/\/developer.android.com\/reference\/java\/util\/concurrent\/FutureTask","key":"17_CR17"},{"unstructured":"Google Inc.: Understand the Activity Lifecycle (Android documentation) (2014). \n                      https:\/\/developer.android.com\/guide\/components\/activities\/activity-lifecycle","key":"17_CR18"},{"unstructured":"Google Inc.: Android Studio download page (2019). \n                      https:\/\/developer.android.com\/studio\/","key":"17_CR19"},{"key":"17_CR20","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"520","DOI":"10.1007\/978-3-642-03013-0_24","volume-title":"ECOOP 2009 \u2013 Object-Oriented Programming","author":"C Haack","year":"2009","unstructured":"Haack, C., Poll, E.: Type-based object immutability with flexible initialization. In: Drossopoulou, S. (ed.) ECOOP 2009. LNCS, vol. 5653, pp. 520\u2013545. Springer, Heidelberg (2009). \n                      https:\/\/doi.org\/10.1007\/978-3-642-03013-0_24"},{"unstructured":"Haller, P., Prokopec, A., Miller, H., Klang, V., Kuhn, R., Jovanovic, V.: Futures and promises (2012). \n                      http:\/\/docs.scala-lang.org\/overviews\/core\/futures.html","key":"17_CR21"},{"unstructured":"Kestelyn, J.: How Apache Spark, Scala, and Functional Programming Made Hard Problems Easy at Barclays (2015). \n                      https:\/\/blog.cloudera.com\/blog\/2015\/08\/","key":"17_CR22"},{"unstructured":"McClean, J.: Lambdas are not functional programming (2018). \n                      https:\/\/medium.com\/@johnmcclean\/lambdas-are-not-functional-programming-63533ce2eb74","key":"17_CR23"},{"key":"17_CR24","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"217","DOI":"10.1007\/3-540-12925-1_41","volume-title":"International Symposium on Programming","author":"A Mycroft","year":"1984","unstructured":"Mycroft, A.: Polymorphic type schemes and recursive definitions. In: Paul, M., Robinet, B. (eds.) Programming 1984. LNCS, vol. 167, pp. 217\u2013228. Springer, Heidelberg (1984). \n                      https:\/\/doi.org\/10.1007\/3-540-12925-1_41"},{"key":"17_CR25","doi-asserted-by":"publisher","first-page":"21","DOI":"10.1145\/331795.331803","volume":"32","author":"D Nguyen","year":"2000","unstructured":"Nguyen, D., Wong, S.B.: Design patterns for lazy evaluation. ACM SIGCSE Bull. 32, 21\u201325 (2000)","journal-title":"ACM SIGCSE Bull."},{"doi-asserted-by":"crossref","unstructured":"Odersky, M., Wadler, P.: Pizza into Java: translating theory into practice. In: POPL (1997)","key":"17_CR26","DOI":"10.1145\/263699.263715"},{"unstructured":"Oracle Corp: JDK 8 Documentation: Package java.util.function (2010). \n                      https:\/\/docs.oracle.com\/javase\/8\/docs\/api\/java\/util\/function\/package-summary.html","key":"17_CR27"},{"unstructured":"Oracle Corp: Method References (Java Documentation) (2017). \n                      https:\/\/docs.oracle.com\/javase\/tutorial\/java\/javaOO\/methodreferences.html","key":"17_CR28"},{"unstructured":"Petricek, T.: Type-First Development (2015). \n                      http:\/\/tomasp.net\/blog\/type-first-development.aspx\/","key":"17_CR29"},{"doi-asserted-by":"crossref","unstructured":"Pratikakis, P., Spacco, J., Hicks, M.: Transparent proxies for java futures. In: Proceedings of the 19th Annual ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications, OOPSLA 2004, pp. 206\u2013223. ACM, New York (2004)","key":"17_CR30","DOI":"10.1145\/1028976.1028994"},{"unstructured":"Seemann, M.: Type Driven Development (2015). \n                      https:\/\/blog.ploeh.dk\/2015\/08\/10\/type-driven-development\/","key":"17_CR31"},{"unstructured":"Seemann, M.: Type Driven Development (2015). \n                      https:\/\/blog.ploeh.dk\/2016\/02\/10\/types-properties-software\/","key":"17_CR32"},{"key":"17_CR33","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"279","DOI":"10.1007\/3-540-39185-1_16","volume-title":"Types for Proofs and Programs","author":"A Setzer","year":"2003","unstructured":"Setzer, A.: Java as a functional programming language. In: Geuvers, H., Wiedijk, F. (eds.) TYPES 2002. LNCS, vol. 2646, pp. 279\u2013298. Springer, Heidelberg (2003). \n                      https:\/\/doi.org\/10.1007\/3-540-39185-1_16"},{"unstructured":"Subramaniam, V.: Functional programming in Java: harnessing the power of Java 8 Lambda expressions. In: Pragmatic Bookshelf (2014)","key":"17_CR34"},{"unstructured":"The Lego Group: LEGO Mindstorms NXT Education Kit (2011). \n                      https:\/\/www.generationrobots.com\/media\/Lego-Mindstorms-NXT-Education-Kit.pdf","key":"17_CR35"},{"unstructured":"The Lego Group: EV3 Communication Developer Kit (2013). \n                      https:\/\/le-www-live-s.legocdn.com\/sc\/media\/files\/ev3-developer-kit\/lego","key":"17_CR36"},{"unstructured":"The Lego Group: EV3 Firmware Developer Kit (2013). \n                      https:\/\/le-www-live-s.legocdn.com\/sc\/media\/files\/ev3-developer-kit\/lego","key":"17_CR37"},{"unstructured":"The Lego Group: ROBOLAB Reference Guide (2013). \n                      http:\/\/www.legoengineering.com\/robolab-programming-references\/","key":"17_CR38"},{"key":"17_CR39","volume-title":"Java 8 Lambdas: Pragmatic Functional Programming","author":"R Warburton","year":"2014","unstructured":"Warburton, R.: Java 8 Lambdas: Pragmatic Functional Programming. O\u2019Reilly Media Inc., Sebastopol (2014)"},{"doi-asserted-by":"crossref","unstructured":"Welc, A., Jagannathan, S., Hosking, A.: Safe futures for Java. In: Proceedings of the 20th Annual ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications, OOPSLA 2005, pp. 439\u2013453. ACM, New York (2005)","key":"17_CR40","DOI":"10.1145\/1094811.1094845"},{"unstructured":"Wlaschin, S.: Designing with Types (2013). \n                      https:\/\/fsharpforfunandprofit.com\/series\/designing-with-types.html","key":"17_CR41"},{"unstructured":"Wlaschin, S.: Designing with Types: Making illegal states unrepresentable (2013). \n                      https:\/\/fsharpforfunandprofit.com\/posts\/designing-with-types-making-illegal-states-unrepresentable","key":"17_CR42"},{"doi-asserted-by":"crossref","unstructured":"Xi, H., Pfenning, F.: Dependent types in practical programming. In: Proceedings of the 26th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, pp. 214\u2013227. ACM (1999)","key":"17_CR43","DOI":"10.1145\/292540.292560"},{"doi-asserted-by":"crossref","unstructured":"Zhang, L., Krintz, C., Nagpurkar, P.: Language and virtual machine support for efficient fine-grained futures in Java. In: Proceedings of the 16th International Conference on Parallel Architecture and Compilation Techniques, PACT 2007, pp. 130\u2013139. IEEE Computer Society, Washington, DC (2007)","key":"17_CR44","DOI":"10.1109\/PACT.2007.4336206"},{"unstructured":"Zhang, L., Krintz, C., Soman, S.: Efficient support of fine-grained futures in Java. In: International Conference on Parallel and Distributed Computing Systems (PDCS). Citeseer (2006)","key":"17_CR45"},{"doi-asserted-by":"crossref","unstructured":"Zibin, Y., Potanin, A., Ali, M., Artzi, S., et al.: Object and reference immutability using java generics. In: Proceedings of the 6th Joint Meeting of the European Software Engineering Conference and the ACM SIGSOFT Symposium on the Foundations of Software Engineering, pp. 75\u201384. ACM (2007)","key":"17_CR46","DOI":"10.1145\/1287624.1287637"}],"container-title":["Lecture Notes in Computer Science","Computer Information Systems and Industrial Management"],"original-title":[],"language":"en","link":[{"URL":"http:\/\/link.springer.com\/content\/pdf\/10.1007\/978-3-030-28957-7_17","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2019,9,11]],"date-time":"2019-09-11T19:09:24Z","timestamp":1568228964000},"score":1,"resource":{"primary":{"URL":"http:\/\/link.springer.com\/10.1007\/978-3-030-28957-7_17"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2019]]},"ISBN":["9783030289560","9783030289577"],"references-count":46,"URL":"https:\/\/doi.org\/10.1007\/978-3-030-28957-7_17","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":"11 August 2019","order":1,"name":"first_online","label":"First Online","group":{"name":"ChapterHistory","label":"Chapter History"}},{"value":"CISIM","order":1,"name":"conference_acronym","label":"Conference Acronym","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"IFIP International Conference on Computer Information Systems and Industrial Management","order":2,"name":"conference_name","label":"Conference Name","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"Belgrade","order":3,"name":"conference_city","label":"Conference City","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"Serbia","order":4,"name":"conference_country","label":"Conference Country","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"2019","order":5,"name":"conference_year","label":"Conference Year","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"19 September 2019","order":7,"name":"conference_start_date","label":"Conference Start Date","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"21 September 2019","order":8,"name":"conference_end_date","label":"Conference End Date","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"18","order":9,"name":"conference_number","label":"Conference Number","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"cisim2019","order":10,"name":"conference_id","label":"Conference ID","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"http:\/\/cisim2019.wi.pb.edu.pl\/","order":11,"name":"conference_url","label":"Conference URL","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"Double-blind","order":1,"name":"type","label":"Type","group":{"name":"ConfEventPeerReviewInformation","label":"Peer Review Information (provided by the conference organizers)"}},{"value":"EasyChair","order":2,"name":"conference_management_system","label":"Conference Management System","group":{"name":"ConfEventPeerReviewInformation","label":"Peer Review Information (provided by the conference organizers)"}},{"value":"70","order":3,"name":"number_of_submissions_sent_for_review","label":"Number of Submissions Sent for Review","group":{"name":"ConfEventPeerReviewInformation","label":"Peer Review Information (provided by the conference organizers)"}},{"value":"43","order":4,"name":"number_of_full_papers_accepted","label":"Number of Full Papers Accepted","group":{"name":"ConfEventPeerReviewInformation","label":"Peer Review Information (provided by the conference organizers)"}},{"value":"0","order":5,"name":"number_of_short_papers_accepted","label":"Number of Short Papers Accepted","group":{"name":"ConfEventPeerReviewInformation","label":"Peer Review Information (provided by the conference organizers)"}},{"value":"61% - The value is computed by the equation \"Number of Full Papers Accepted \/ Number of Submissions Sent for Review * 100\" and then rounded to a whole number.","order":6,"name":"acceptance_rate_of_full_papers","label":"Acceptance Rate of Full Papers","group":{"name":"ConfEventPeerReviewInformation","label":"Peer Review Information (provided by the conference organizers)"}},{"value":"2-3","order":7,"name":"average_number_of_reviews_per_paper","label":"Average Number of Reviews per Paper","group":{"name":"ConfEventPeerReviewInformation","label":"Peer Review Information (provided by the conference organizers)"}},{"value":"3","order":8,"name":"average_number_of_papers_per_reviewer","label":"Average Number of Papers per Reviewer","group":{"name":"ConfEventPeerReviewInformation","label":"Peer Review Information (provided by the conference organizers)"}},{"value":"Yes","order":9,"name":"external_reviewers_involved","label":"External Reviewers Involved","group":{"name":"ConfEventPeerReviewInformation","label":"Peer Review Information (provided by the conference organizers)"}}]}}