{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,4,11]],"date-time":"2026-04-11T02:15:33Z","timestamp":1775873733930,"version":"3.50.1"},"publisher-location":"Cham","reference-count":39,"publisher":"Springer International Publishing","isbn-type":[{"value":"9783319309354","type":"print"},{"value":"9783319309361","type":"electronic"}],"license":[{"start":{"date-parts":[[2016,1,1]],"date-time":"2016-01-01T00:00:00Z","timestamp":1451606400000},"content-version":"unspecified","delay-in-days":0,"URL":"http:\/\/www.springer.com\/tdm"}],"content-domain":{"domain":[],"crossmark-restriction":false},"short-container-title":[],"published-print":{"date-parts":[[2016]]},"DOI":"10.1007\/978-3-319-30936-1_16","type":"book-chapter","created":{"date-parts":[[2016,3,29]],"date-time":"2016-03-29T16:27:44Z","timestamp":1459268864000},"page":"292-317","source":"Crossref","is-referenced-by-count":10,"title":["A Reflection on Types"],"prefix":"10.1007","author":[{"given":"Simon","family":"Peyton Jones","sequence":"first","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Stephanie","family":"Weirich","sequence":"additional","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Richard A.","family":"Eisenberg","sequence":"additional","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Dimitrios","family":"Vytiniotis","sequence":"additional","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"297","published-online":{"date-parts":[[2016,3,25]]},"reference":[{"issue":"2","key":"16_CR1","doi-asserted-by":"publisher","first-page":"237","DOI":"10.1145\/103135.103138","volume":"13","author":"M Abadi","year":"1991","unstructured":"Abadi, M., Cardelli, L., Pierce, B., Plotkin, G.: Dynamic typing in a statically-typed language. ACM Trans. Program. Lang. Syst. 13(2), 237\u2013268 (1991)","journal-title":"ACM Trans. Program. Lang. Syst."},{"issue":"1","key":"16_CR2","doi-asserted-by":"publisher","first-page":"111","DOI":"10.1017\/S095679680000126X","volume":"5","author":"M Abadi","year":"1995","unstructured":"Abadi, M., Cardelli, L., Pierce, B., R\u00e9my, D.: Dynamic typing in polymorphic languages. J. Funct. Program. 5(1), 111\u2013130 (1995)","journal-title":"J. Funct. Program."},{"issue":"10","key":"16_CR3","doi-asserted-by":"crossref","first-page":"183","DOI":"10.1145\/286942.286957","volume":"33","author":"Gilad 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. In: Conference on Object-oriented Programming, Systems, Languages, and Applications, pp. 183\u2013200. ACM (1998)","journal-title":"ACM SIGPLAN Notices"},{"key":"16_CR4","doi-asserted-by":"crossref","unstructured":"Baars, A.I., Swierstra, D.: Typing dynamic typing. In: International Conference on Functional Programming, pp. 157\u2013166. ACM (2002)","DOI":"10.1145\/583852.581494"},{"key":"16_CR5","doi-asserted-by":"crossref","unstructured":"Cheney, J., Hinze, R.: A lightweight implementation of generics and dynamics. In: Workshop on Haskell, pp. 90\u2013104. ACM (2002)","DOI":"10.1145\/581690.581698"},{"key":"16_CR6","doi-asserted-by":"crossref","unstructured":"Epstein, J., Black, A.P., Peyton Jones, S.: Towards Haskell in the cloud. In: Haskell Symposium. ACM (2011)","DOI":"10.1145\/2034675.2034690"},{"key":"16_CR7","doi-asserted-by":"crossref","unstructured":"Eisenberg, R.A., Weirich, S.: Dependently typed programming with singletons. In: Haskell Symposium. ACM (2012)","DOI":"10.1145\/2364506.2364522"},{"key":"16_CR8","unstructured":"Frisch, A.: Runtime types in OCaml. In: Presentation at Meeting of the Caml Consortium, November 2011"},{"key":"16_CR9","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"1","DOI":"10.1007\/978-3-540-76786-2_1","volume-title":"Datatype-Generic Programming","author":"J Gibbons","year":"2007","unstructured":"Gibbons, J.: Datatype-generic programming. In: Backhouse, R., Gibbons, J., Hinze, R., Jeuring, J. (eds.) SSDGP 2006. LNCS, vol. 4719, pp. 1\u201371. Springer, Heidelberg (2007)"},{"key":"16_CR10","doi-asserted-by":"crossref","unstructured":"Guillemettte, L.-J., Monnier, S.: A type-preserving compiler in Haskell. In: International Conference on Functional Programming. ACM (2008)","DOI":"10.1145\/1411204.1411218"},{"key":"16_CR11","unstructured":"Henry, G., Garrique, J.: Dynamic typing in OCaml. Presentation at Nagoya University (2013)"},{"key":"16_CR12","doi-asserted-by":"crossref","unstructured":"Hudak, P., Hughes, J., Peyton Jones, S., Wadler, P.: A history of Haskell: being lazy with class. In: Conference on History of Programming Languages (2007)","DOI":"10.1145\/1238844.1238856"},{"key":"16_CR13","doi-asserted-by":"crossref","unstructured":"Kiselyov, O., Shan, C.-C.: Functional pearl: implicit configurations-or, type classes reflect the values of types. In: Workshop on Haskell, pp. 33\u201344. ACM (2004)","DOI":"10.1145\/1017472.1017481"},{"key":"16_CR14","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"406","DOI":"10.1007\/3540543961_20","volume-title":"Functional Programming Languages and Computer Architecture","author":"X Leroy","year":"1991","unstructured":"Leroy, X., Mauny, M.: Dynamics in ML. In: Hughes, J. (ed.) FPCA 1991. LNCS, vol. 523, pp. 406\u2013423. Springer, Heidelberg (1991)"},{"issue":"4","key":"16_CR15","doi-asserted-by":"publisher","first-page":"293","DOI":"10.1007\/BF01018827","volume":"8","author":"J Launchbury","year":"1995","unstructured":"Launchbury, J., Peyton Jones, S.: State in Haskell. Lisp Symb. Comput. 8(4), 293\u2013341 (1995)","journal-title":"Lisp Symb. Comput."},{"key":"16_CR16","doi-asserted-by":"crossref","unstructured":"L\u00e4mmel, R., Peyton Jones, S.: Scrap your boilerplate: a practical design pattern for generic programming. In: Workshop on Types in Languages Design and Implementation. ACM (2003)","DOI":"10.1145\/604174.604179"},{"key":"16_CR17","doi-asserted-by":"crossref","unstructured":"L\u00e4mmel, R., Peyton Jones, S.: Scrap your boilerplate with class: extensible generic functions. In: International Conference on Functional Programming. ACM (2005)","DOI":"10.1145\/1086365.1086391"},{"key":"16_CR18","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"197","DOI":"10.1007\/3-540-45842-5_13","volume-title":"Types for Proofs and Programs","author":"C McBride","year":"2002","unstructured":"McBride, C.: Elimination with a motive. In: Callaghan, P., Luo, Z., McKinna, J., Pollack, R. (eds.) TYPES 2000. LNCS, vol. 2277, pp. 197\u2013216. Springer, Heidelberg (2002)"},{"key":"16_CR19","doi-asserted-by":"crossref","unstructured":"McDonell, T., Chakravarty, M., Grover, V., Newton, R.: Type-safe runtime code generation. In: Haskell Symposium, pp. 201\u2013212. ACM (2015)","DOI":"10.1145\/2887747.2804313"},{"key":"16_CR20","doi-asserted-by":"crossref","unstructured":"Magalhaes, J.P., Dijkstra, A., Jeuring, J., Loeh, A.: A generic deriving mechanism for Haskell. In: Haskell Symposium, pp. 37\u201348. ACM (2010)","DOI":"10.1145\/2088456.1863529"},{"key":"16_CR21","doi-asserted-by":"crossref","unstructured":"Mitchell, N.: Shake before building: replacing Make with Haskell. In: International Conference on Functional Programming. ACM (2012)","DOI":"10.1145\/2364527.2364538"},{"key":"16_CR22","doi-asserted-by":"crossref","unstructured":"Marlow, S., Peyton Jones, S., Moran, A., Reppy, J.: Asynchronous exceptions in Haskell. In: Programming Language Design and Implementation. ACM (2001)","DOI":"10.1145\/378795.378858"},{"key":"16_CR23","doi-asserted-by":"crossref","unstructured":"Mitchell, N., Runciman, C.: Uniform boilerplate and list processing. In: Workshop on Haskell. ACM (2007)","DOI":"10.1145\/1291201.1291208"},{"key":"16_CR24","volume-title":"Java Generics and Collections","author":"M Naftalin","year":"2006","unstructured":"Naftalin, M., Wadler, P.: Java Generics and Collections. O\u2019Reilly Media, Sebastopol (2006)"},{"key":"16_CR25","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"169","DOI":"10.1007\/3-540-48515-5_11","volume-title":"Implementation of Functional Languages","author":"M Pil","year":"1999","unstructured":"Pil, M.: Dynamic types and type dependent functions. In: Hammond, K., Davie, T., Clack, C. (eds.) IFL 1998. LNCS, vol. 1595, pp. 169\u2013185. Springer, Heidelberg (1999)"},{"key":"16_CR26","doi-asserted-by":"crossref","unstructured":"Peyton Jones, S., Vytiniotis, D., Weirich, S., Washburn, G.: Simple unification-based type inference for GADTs. In: International Conference on Functional Programming, pp. 50\u201361. ACM (2006)","DOI":"10.1145\/1160074.1159811"},{"key":"16_CR27","doi-asserted-by":"crossref","unstructured":"Peyton Jones, S.L., Wadler, P.: Imperative functional programming. In: Principles of Programming Languages. ACM (1993)","DOI":"10.1145\/158511.158524"},{"key":"16_CR28","doi-asserted-by":"crossref","unstructured":"Pasalic, E., Taha, W., Sheard, T.: Tagless staged interpreters for typed languages. In: International Conference on Functional Programming. ACM (2002)","DOI":"10.1145\/581478.581499"},{"key":"16_CR29","doi-asserted-by":"crossref","unstructured":"Sulzmann, M., Chakravarty, M.M.T., Peyton Jones, S., Donnelly, K.: System F with type equality coercions. In: Workshop on Types in Languages Design and Implementation. ACM (2007)","DOI":"10.1145\/1190315.1190324"},{"key":"16_CR30","doi-asserted-by":"publisher","first-page":"175","DOI":"10.1017\/S0956796810000079","volume":"20","author":"D Vytiniotis","year":"2010","unstructured":"Vytiniotis, D., Weirich, S.: Parametricity, type equality, and higher-order polymorphism. J. Funct. Program. 20, 175\u2013210 (2010)","journal-title":"J. Funct. Program."},{"key":"16_CR31","doi-asserted-by":"crossref","unstructured":"Wadler, P.: Theorems for free! In: International Conference on Functional Programming Languages and Computer Architecture. ACM (1989)","DOI":"10.1145\/99370.99404"},{"key":"16_CR32","doi-asserted-by":"crossref","unstructured":"Wadler, P.: Comprehending monads. In: Conference on LISP and Functional Programming. ACM (1990)","DOI":"10.1145\/91556.91592"},{"key":"16_CR33","doi-asserted-by":"crossref","unstructured":"Wadler, P., Blott, S.: How to make ad-hoc polymorphism less ad-hoc. In: Principles of Programming Languages, pp. 60\u201376. ACM (1989)","DOI":"10.1145\/75277.75283"},{"issue":"6","key":"16_CR34","doi-asserted-by":"publisher","first-page":"681","DOI":"10.1017\/S0956796804005179","volume":"14","author":"S Weirich","year":"2004","unstructured":"Weirich, S.: Type-safe cast. J. Funct. Program. 14(6), 681\u2013695 (2004)","journal-title":"J. Funct. Program."},{"key":"16_CR35","doi-asserted-by":"crossref","unstructured":"Weirich, S.: Replib: a library for derivable type classes. In: Workshop on Haskell. ACM (2006)","DOI":"10.1145\/1159842.1159844"},{"key":"16_CR36","doi-asserted-by":"crossref","unstructured":"Weirich, S., Hsu, J., Eisenberg, R.A.: System FC with explicit kind equality. In: International Conference on Functional Programming, pp. 275\u2013286. ACM (2013)","DOI":"10.1145\/2544174.2500599"},{"key":"16_CR37","doi-asserted-by":"crossref","unstructured":"Xi, H., Chen, C., Chen, G.: Guarded recursive datatype constructors. In: Principles of Programming Languages. ACM (2003)","DOI":"10.1145\/604131.604150"},{"key":"16_CR38","doi-asserted-by":"crossref","unstructured":"Yang, Z.: Encoding types in ML-like languages. In: International Conference on Functional Programming, pp. 289\u2013300. ACM (1998)","DOI":"10.1145\/291251.289458"},{"key":"16_CR39","doi-asserted-by":"crossref","unstructured":"Yorgey, B.A., Weirich, S., Cretin, J., Peyton Jones, S., Vytiniotis, D., Magalha\n                    \n                      \n                    \n                    \n$$\\tilde{\\rm e}$$\n\n                    \n                      \n                        \n                          e\n                          ~\n                        \n                      \n                    \n                  s, J.P.: Giving Haskell a promotion. In: Workshop on Types in Language Design and Implementation. ACM (2012)","DOI":"10.1145\/2103786.2103795"}],"container-title":["Lecture Notes in Computer Science","A List of Successes That Can Change the World"],"original-title":[],"link":[{"URL":"http:\/\/link.springer.com\/content\/pdf\/10.1007\/978-3-319-30936-1_16","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2019,6,1]],"date-time":"2019-06-01T18:27:56Z","timestamp":1559413676000},"score":1,"resource":{"primary":{"URL":"http:\/\/link.springer.com\/10.1007\/978-3-319-30936-1_16"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2016]]},"ISBN":["9783319309354","9783319309361"],"references-count":39,"URL":"https:\/\/doi.org\/10.1007\/978-3-319-30936-1_16","relation":{},"ISSN":["0302-9743","1611-3349"],"issn-type":[{"value":"0302-9743","type":"print"},{"value":"1611-3349","type":"electronic"}],"subject":[],"published":{"date-parts":[[2016]]}}}