{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,11,28]],"date-time":"2025-11-28T21:18:18Z","timestamp":1764364698831,"version":"3.40.3"},"publisher-location":"Cham","reference-count":24,"publisher":"Springer Nature Switzerland","isbn-type":[{"type":"print","value":"9783031745577"},{"type":"electronic","value":"9783031745584"}],"license":[{"start":{"date-parts":[[2025,1,1]],"date-time":"2025-01-01T00:00:00Z","timestamp":1735689600000},"content-version":"tdm","delay-in-days":0,"URL":"https:\/\/www.springernature.com\/gp\/researchers\/text-and-data-mining"},{"start":{"date-parts":[[2025,1,1]],"date-time":"2025-01-01T00:00:00Z","timestamp":1735689600000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/www.springernature.com\/gp\/researchers\/text-and-data-mining"}],"content-domain":{"domain":["link.springer.com"],"crossmark-restriction":false},"short-container-title":[],"published-print":{"date-parts":[[2025]]},"DOI":"10.1007\/978-3-031-74558-4_10","type":"book-chapter","created":{"date-parts":[[2025,1,9]],"date-time":"2025-01-09T04:34:07Z","timestamp":1736397247000},"page":"220-240","update-policy":"https:\/\/doi.org\/10.1007\/springer_crossmark_policy","source":"Crossref","is-referenced-by-count":1,"title":["Flattening Combinations of\u00a0Arrays and\u00a0Records"],"prefix":"10.1007","author":[{"given":"Reg","family":"Huijben","sequence":"first","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]},{"ORCID":"https:\/\/orcid.org\/0009-0001-3018-5152","authenticated-orcid":false,"given":"Jordy","family":"Aaldering","sequence":"additional","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]},{"ORCID":"https:\/\/orcid.org\/0000-0002-3585-7165","authenticated-orcid":false,"given":"Peter","family":"Achten","sequence":"additional","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]},{"ORCID":"https:\/\/orcid.org\/0000-0002-8663-1043","authenticated-orcid":false,"given":"Sven-Bodo","family":"Scholz","sequence":"additional","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"297","published-online":{"date-parts":[[2025,1,10]]},"reference":[{"doi-asserted-by":"publisher","unstructured":"Aaldering, J., Scholz, S.B., Van\u00a0Gastel, B.: Type patterns: pattern matching on shape-carrying array types. In: Proceedings of the 35st Symposium on Implementation and Application of Functional Languages. IFL 2023, Association for Computing Machinery, New York, NY, USA (2024). https:\/\/doi.org\/10.1145\/3652561.3652572","key":"10_CR1","DOI":"10.1145\/3652561.3652572"},{"unstructured":"Aho, A., Sethi, R., Ullman, J.: Compilers \u2013 Principles, Techniques, and Tools. Addison-Wesley (1986). iSBN 0-201-10194-7","key":"10_CR2"},{"doi-asserted-by":"publisher","unstructured":"Bayliss, J.D.: Developing games with data-oriented design. In: Proceedings of the 6th International ICSE Workshop on Games and Software Engineering: Engineering Fun, Inspiration, and Motivation, pp. 30\u201336. GAS 2022, Association for Computing Machinery, New York, NY, USA (2022). https:\/\/doi.org\/10.1145\/3524494.3527626","key":"10_CR3","DOI":"10.1145\/3524494.3527626"},{"doi-asserted-by":"publisher","unstructured":"Bell, N., Hoberock, J.: Thrust: a productivity-oriented library for CUDA. In: mei W.\u00a0Hwu, W. (ed.) GPU Computing Gems Jade Edition, pp. 359\u2013371. Applications of GPU Computing Series, Morgan Kaufmann, Boston (2012). https:\/\/doi.org\/10.1016\/B978-0-12-385963-1.00026-5","key":"10_CR4","DOI":"10.1016\/B978-0-12-385963-1.00026-5"},{"doi-asserted-by":"publisher","unstructured":"Chakravarty, M.M., Keller, G., Lee, S., McDonell, T.L., Grover, V.: Accelerating Haskell array codes with multicore GPUs, pp. 3\u201314. DAMP 2011, Association for Computing Machinery, New York, NY, USA (2011). https:\/\/doi.org\/10.1145\/1926354.1926358","key":"10_CR5","DOI":"10.1145\/1926354.1926358"},{"doi-asserted-by":"publisher","unstructured":"Dijkstra, E.W., Lamport, L., Martin, A.J., Scholten, C.S., Steffens, E.F.M.: On-the-fly garbage collection: an exercise in cooperation. Commun. ACM 21(11), 966\u2013975 (1978). https:\/\/doi.org\/10.1145\/359642.359655","key":"10_CR6","DOI":"10.1145\/359642.359655"},{"key":"10_CR7","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-642-32096-5","volume-title":"Central European Functional Programming School","year":"2012","unstructured":"Zs\u00f3k, V., Horv\u00e1th, Z., Plasmeijer, R. (eds.): CEFP 2011. LNCS, vol. 7241. Springer, Heidelberg (2012). https:\/\/doi.org\/10.1007\/978-3-642-32096-5"},{"issue":"4","key":"10_CR8","doi-asserted-by":"publisher","first-page":"383","DOI":"10.1007\/s10766-006-0018-x","volume":"34","author":"C Grelck","year":"2006","unstructured":"Grelck, C., Scholz, S.B.: SaC - A functional array language for efficient multi-threaded execution. Int. J. Parallel Prog. 34(4), 383\u2013427 (2006). https:\/\/doi.org\/10.1007\/s10766-006-0018-x","journal-title":"Int. J. Parallel Prog."},{"doi-asserted-by":"publisher","unstructured":"Henriksen, T., Serup, N.G.W., Elsman, M., Henglein, F., Oancea, C.E.: Futhark: Purely functional GPU-programming with nested parallelism and in-place array updates. SIGPLAN Not. 52(6), 556\u2013571 (2017). https:\/\/doi.org\/10.1145\/3140587.3062354","key":"10_CR9","DOI":"10.1145\/3140587.3062354"},{"unstructured":"Herhut, S., Scholz, S.B.: Generic programming on the structure of homogeneously nested arrays (2006). https:\/\/sac-home.org\/_media\/publications:pdf:gpotsohna.pdf","key":"10_CR10"},{"key":"10_CR11","doi-asserted-by":"publisher","first-page":"325","DOI":"10.1016\/j.cpc.2017.11.015","volume":"224","author":"H Homann","year":"2018","unstructured":"Homann, H., Laenen, F.: SoAx: a generic C++ structure of arrays for handling particles in HPC codes. Comput. Phys. Commun. 224, 325\u2013332 (2018). https:\/\/doi.org\/10.1016\/j.cpc.2017.11.015","journal-title":"Comput. Phys. Commun."},{"doi-asserted-by":"publisher","unstructured":"Jubertie, S., Masliah, I., Falcou, J.: Data layout and SIMD abstraction layers: decoupling interfaces from implementations. In: 2018 International Conference on High Performance Computing & Simulation (HPCS), pp. 531\u2013538 (2018). https:\/\/doi.org\/10.1109\/HPCS.2018.00089","key":"10_CR12","DOI":"10.1109\/HPCS.2018.00089"},{"key":"10_CR13","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"263","DOI":"10.1007\/978-3-662-48096-0_21","volume-title":"Euro-Par 2015: Parallel Processing","author":"K Kofler","year":"2015","unstructured":"Kofler, K., Cosenza, B., Fahringer, T.: Automatic data layout optimizations for GPUs. In: Tr\u00e4ff, J.L., Hunold, S., Versaci, F. (eds.) Euro-Par 2015. LNCS, vol. 9233, pp. 263\u2013274. Springer, Heidelberg (2015). https:\/\/doi.org\/10.1007\/978-3-662-48096-0_21"},{"key":"10_CR14","doi-asserted-by":"publisher","first-page":"100","DOI":"10.4204\/eptcs.153.8","volume":"153","author":"D Leijen","year":"2014","unstructured":"Leijen, D.: Koka: Programming with row polymorphic effect types. Electron. Proc. Theor. Comput. Sci. 153, 100\u2013126 (2014). https:\/\/doi.org\/10.4204\/eptcs.153.8","journal-title":"Electron. Proc. Theor. Comput. Sci."},{"doi-asserted-by":"publisher","unstructured":"Lieberman, H., Hewitt, C.: A real-time garbage collector based on the lifetimes of objects. Commun. ACM 26(6), 419\u2013429 (1983). https:\/\/doi.org\/10.1145\/358141.358147","key":"10_CR15","DOI":"10.1145\/358141.358147"},{"doi-asserted-by":"publisher","unstructured":"Lorenzen, A., Leijen, D., Swierstra, W.: FP2: Fully in-place functional programming. Proc. ACM Program. Lang. 7(ICFP) (2023). https:\/\/doi.org\/10.1145\/3607840","key":"10_CR16","DOI":"10.1145\/3607840"},{"unstructured":"Luyat, H.: A lightweight implementation of records in functional array language SaC (2009), bachelor thesis, University of Amsterdam (2009)","key":"10_CR17"},{"key":"10_CR18","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"269","DOI":"10.1007\/3-540-09981-6_19","volume-title":"International Symposium on Programming","author":"A Mycroft","year":"1980","unstructured":"Mycroft, A.: The theory and practice of transforming call-by-need into call-by-value. In: Robinet, B. (ed.) Programming 1980. LNCS, vol. 83, pp. 269\u2013281. Springer, Heidelberg (1980). https:\/\/doi.org\/10.1007\/3-540-09981-6_19"},{"doi-asserted-by":"publisher","unstructured":"Scholz, S.B., \u0160inkarovs, A.: Tensor comprehensions in SaC. In: Proceedings of the 31st Symposium on Implementation and Application of Functional Languages. IFL 2019, Association for Computing Machinery, New York, NY, USA (2021). https:\/\/doi.org\/10.1145\/3412932.3412947","key":"10_CR19","DOI":"10.1145\/3412932.3412947"},{"doi-asserted-by":"publisher","unstructured":"Springer, M., Masuhara, H.: Ikra-Cpp: A C++\/CUDA DSL for object-oriented programming with structure-of-arrays layout. In: Proceedings of the 2018 4th Workshop on Programming Models for SIMD\/Vector Processing. WPMVP 2018, Association for Computing Machinery, New York, NY, USA (2018). https:\/\/doi.org\/10.1145\/3178433.3178439","key":"10_CR20","DOI":"10.1145\/3178433.3178439"},{"doi-asserted-by":"publisher","unstructured":"Strzodka, R.: Abstraction for AoS and SoA layout in C++. In: mei W.\u00a0Hwu, W. (ed.) GPU Computing Gems Jade Edition, pp. 429\u2013441. Applications of GPU Computing Series, Morgan Kaufmann, Boston (2012). https:\/\/doi.org\/10.1016\/B978-0-12-385963-1.00031-9","key":"10_CR21","DOI":"10.1016\/B978-0-12-385963-1.00031-9"},{"doi-asserted-by":"publisher","unstructured":"\u0160inkarovs, A., Scholz, S.B.: Parallel scan as a multidimensional array problem. In: Proceedings of the 8th ACM SIGPLAN International Workshop on Libraries, Languages and Compilers for Array Programming, pp. 1\u201311. ARRAY 2022, Association for Computing Machinery, New York, NY, USA (2022). https:\/\/doi.org\/10.1145\/3520306.3534500","key":"10_CR22","DOI":"10.1145\/3520306.3534500"},{"doi-asserted-by":"publisher","unstructured":"Wadler, P., Hughes, R.J.M.: Projections for strictness analysis. In: Proceedings of the Functional Programming Languages and Computer Architecture, pp. 385\u2013407. Springer-Verlag, Heidelberg (1987). https:\/\/doi.org\/10.1007\/3-540-18317-5_21","key":"10_CR23","DOI":"10.1007\/3-540-18317-5_21"},{"doi-asserted-by":"publisher","unstructured":"Weiser, M.: Program slicing. IEEE Trans. Softw. Eng. SE-10(4), 352\u2013357 (1984). https:\/\/doi.org\/10.1109\/TSE.1984.5010248","key":"10_CR24","DOI":"10.1109\/TSE.1984.5010248"}],"container-title":["Lecture Notes in Computer Science","Trends in Functional Programming"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/link.springer.com\/content\/pdf\/10.1007\/978-3-031-74558-4_10","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,1,9]],"date-time":"2025-01-09T05:04:13Z","timestamp":1736399053000},"score":1,"resource":{"primary":{"URL":"https:\/\/link.springer.com\/10.1007\/978-3-031-74558-4_10"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2025]]},"ISBN":["9783031745577","9783031745584"],"references-count":24,"URL":"https:\/\/doi.org\/10.1007\/978-3-031-74558-4_10","relation":{},"ISSN":["0302-9743","1611-3349"],"issn-type":[{"type":"print","value":"0302-9743"},{"type":"electronic","value":"1611-3349"}],"subject":[],"published":{"date-parts":[[2025]]},"assertion":[{"value":"10 January 2025","order":1,"name":"first_online","label":"First Online","group":{"name":"ChapterHistory","label":"Chapter History"}},{"value":"TFP","order":1,"name":"conference_acronym","label":"Conference Acronym","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"International Symposium on Trends in Functional Programming","order":2,"name":"conference_name","label":"Conference Name","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"South Orange, NJ","order":3,"name":"conference_city","label":"Conference City","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"USA","order":4,"name":"conference_country","label":"Conference Country","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"2024","order":5,"name":"conference_year","label":"Conference Year","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"8 January 2024","order":7,"name":"conference_start_date","label":"Conference Start Date","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"11 January 2024","order":8,"name":"conference_end_date","label":"Conference End Date","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"25","order":9,"name":"conference_number","label":"Conference Number","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"tfp2024","order":10,"name":"conference_id","label":"Conference ID","group":{"name":"ConferenceInfo","label":"Conference Information"}}]}}