<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Java Generics are Turing Complete · HackerPapers discussions</title><link>https://hackerpaper.kaipfister.de/p/1605.05274/</link><description>Collected HN comments and submissions linking this paper.</description><language>en</language><lastBuildDate>Mon, 02 Nov 2026 11:16:22 GMT</lastBuildDate><atom:link href="https://hackerpaper.kaipfister.de/p/1605.05274/feed.xml" rel="self" type="application/rss+xml" /><item><title>Java Generics are Turing Complete — mentioned by ynik</title><link>https://news.ycombinator.com/item?id=37558165</link><guid isPermaLink="false">urn:hackerpapers:mention:1605.05274:37558165</guid><pubDate>Mon, 18 Sep 2023 16:10:32 GMT</pubDate><description>&lt;p&gt;Turing completeness doesn&amp;#x27;t have to come from a single feature, it often comes from a combination of features. e.g. the interaction between subtyping (e.g. inheritance) and generics (with variance) is tricky: https://www.cis.upenn.edu/~bcpierce/papers/variance.pdf It can be highly nontrivial to tell if a language actually has a Turing complete type system: the 2007 Kennedy&amp;amp;Pierce paper made it likely that java was turing complete; but it took until 2016 until it was finally proven that to be turing complete (https://arxiv.org/abs/1605.05274). &amp;gt; What would it take a for a type system to NOT…&lt;/p&gt;&lt;p&gt;&lt;a href="https://hackerpaper.kaipfister.de/p/1605.05274/"&gt;Paper and discussion history&lt;/a&gt;. A mention is not an endorsement.&lt;/p&gt;</description><category>cs.PL</category></item><item><title>Java Generics are Turing Complete — mentioned by bhouston</title><link>https://news.ycombinator.com/item?id=37555894</link><guid isPermaLink="false">urn:hackerpapers:mention:1605.05274:37555894</guid><pubDate>Mon, 18 Sep 2023 13:34:50 GMT</pubDate><description>&lt;p&gt;&amp;gt; Rust’s type system ended up being Turing-complete anyway. It seems like it fell into the same trap as C++ templates: it’s an accidental programming language in a programming language, but with way worse syntax. Most anything in software can easily end up Turing-complete though. It isn&amp;#x27;t that high of a bar unfortunately. I think most mature type and template systems end up as Turing-complete. To single out Rust for this is to ignore that this is just standard fare for mature typing systems. TypeScript&amp;#x27;s types are Turing complete: https://github.com/microsoft/TypeScript/issues/14833 Python&amp;#x27;s…&lt;/p&gt;&lt;p&gt;&lt;a href="https://hackerpaper.kaipfister.de/p/1605.05274/"&gt;Paper and discussion history&lt;/a&gt;. A mention is not an endorsement.&lt;/p&gt;</description><category>cs.PL</category></item><item><title>Java Generics are Turing Complete — mentioned by bmc7505</title><link>https://news.ycombinator.com/item?id=33332183</link><guid isPermaLink="false">urn:hackerpapers:mention:1605.05274:33332183</guid><pubDate>Tue, 25 Oct 2022 15:48:20 GMT</pubDate><description>&lt;p&gt;Types in TS are Turing Complete [1], so any static analysis you build ontop of that language is bound to be unsound or undecidable. You could argue this rarely occurs in practice, but I would prefer a type system that is incomplete but sound and decidable. Incidentally, this issue also affects Java, which is both unsound [2] and undecidable [3]. Kotlin does have a fairly complicated subtyping relation [4], which has caused similar issues in languages like Scala [5], however whether the same issue affects languages based on mixed use-site and declaration-site variance like Kotlin is still an…&lt;/p&gt;&lt;p&gt;&lt;a href="https://hackerpaper.kaipfister.de/p/1605.05274/"&gt;Paper and discussion history&lt;/a&gt;. A mention is not an endorsement.&lt;/p&gt;</description><category>cs.PL</category></item><item><title>Java Generics are Turing Complete — mentioned by wk_end</title><link>https://news.ycombinator.com/item?id=29706423</link><guid isPermaLink="false">urn:hackerpapers:mention:1605.05274:29706423</guid><pubDate>Mon, 27 Dec 2021 20:27:35 GMT</pubDate><description>&lt;p&gt;&amp;gt; but it&amp;#x27;s not true of generics in most languages not sure how true that is. * TypeScript: https://github.com/microsoft/TypeScript/issues/14833 * Rust: https://sdleffler.github.io/RustTypeSystemTuringComplete/ * Haskell (GHC): https://mail.haskell.org/pipermail/haskell/2006-August/01835... * Scala: https://michid.wordpress.com/2010/01/29/scala-type-level-enc... * Java: https://arxiv.org/abs/1605.05274&lt;/p&gt;&lt;p&gt;&lt;a href="https://hackerpaper.kaipfister.de/p/1605.05274/"&gt;Paper and discussion history&lt;/a&gt;. A mention is not an endorsement.&lt;/p&gt;</description><category>cs.PL</category></item><item><title>Java Generics are Turing Complete — mentioned by paavohtl</title><link>https://news.ycombinator.com/item?id=28703885</link><guid isPermaLink="false">urn:hackerpapers:mention:1605.05274:28703885</guid><pubDate>Thu, 30 Sep 2021 07:02:30 GMT</pubDate><description>&lt;p&gt;Java&amp;#x27;s type system is also turing complete: https://arxiv.org/abs/1605.05274&lt;/p&gt;&lt;p&gt;&lt;a href="https://hackerpaper.kaipfister.de/p/1605.05274/"&gt;Paper and discussion history&lt;/a&gt;. A mention is not an endorsement.&lt;/p&gt;</description><category>cs.PL</category></item><item><title>Java Generics are Turing Complete — mentioned by jcelerier</title><link>https://news.ycombinator.com/item?id=27771096</link><guid isPermaLink="false">urn:hackerpapers:mention:1605.05274:27771096</guid><pubDate>Thu, 08 Jul 2021 12:32:55 GMT</pubDate><description>&lt;p&gt;&amp;gt; There are exceptions of course for a definition of &amp;quot;exceptions&amp;quot; being &amp;quot;virtually all languages with a non-trivial static type system and non-zero userbase&amp;quot; as shown in your link. Java (https://arxiv.org/abs/1605.05274), C# (https://blog.hediet.de/post/how-to-stress-the-csharp-compile...), Scala (https://michid.wordpress.com/2010/01/29/scala-type-level-enc...), Haskell, Rust (https://sdleffler.github.io/RustTypeSystemTuringComplete/), Typescript (https://github.com/Microsoft/TypeScript/issues/14833) ... Having a type system with generics and not being turing-complete as a result is the…&lt;/p&gt;&lt;p&gt;&lt;a href="https://hackerpaper.kaipfister.de/p/1605.05274/"&gt;Paper and discussion history&lt;/a&gt;. A mention is not an endorsement.&lt;/p&gt;</description><category>cs.PL</category></item><item><title>Java Generics are Turing Complete — mentioned by jcelerier</title><link>https://news.ycombinator.com/item?id=25753070</link><guid isPermaLink="false">urn:hackerpapers:mention:1605.05274:25753070</guid><pubDate>Tue, 12 Jan 2021 20:28:44 GMT</pubDate><description>&lt;p&gt;&amp;gt; I mean; C++ templates are Turing complete. that&amp;#x27;s not a very high milestone to achieve. Even java generics are turing complete (https://arxiv.org/abs/1605.05274)&lt;/p&gt;&lt;p&gt;&lt;a href="https://hackerpaper.kaipfister.de/p/1605.05274/"&gt;Paper and discussion history&lt;/a&gt;. A mention is not an endorsement.&lt;/p&gt;</description><category>cs.PL</category></item><item><title>Java Generics are Turing Complete — mentioned by doctor_n_</title><link>https://news.ycombinator.com/item?id=23293702</link><guid isPermaLink="false">urn:hackerpapers:mention:1605.05274:23293702</guid><pubDate>Sun, 24 May 2020 18:55:50 GMT</pubDate><description>&lt;p&gt;Actually, subtype-checking in Java is Turing-complete. Someone proved this and used the result to build a parser generator for fluent interfaces. [1] [1] https://arxiv.org/pdf/1605.05274.pdf&lt;/p&gt;&lt;p&gt;&lt;a href="https://hackerpaper.kaipfister.de/p/1605.05274/"&gt;Paper and discussion history&lt;/a&gt;. A mention is not an endorsement.&lt;/p&gt;</description><category>cs.PL</category></item><item><title>Java Generics are Turing Complete — mentioned by tomnj</title><link>https://news.ycombinator.com/item?id=22430935</link><guid isPermaLink="false">urn:hackerpapers:mention:1605.05274:22430935</guid><pubDate>Thu, 27 Feb 2020 05:59:12 GMT</pubDate><description>&lt;p&gt;I haven’t understand the details, but supposedly Java generics are also Turing complete: https://arxiv.org/pdf/1605.05274.pdf&lt;/p&gt;&lt;p&gt;&lt;a href="https://hackerpaper.kaipfister.de/p/1605.05274/"&gt;Paper and discussion history&lt;/a&gt;. A mention is not an endorsement.&lt;/p&gt;</description><category>cs.PL</category></item><item><title>Java Generics are Turing Complete — mentioned by panny</title><link>https://news.ycombinator.com/item?id=20066269</link><guid isPermaLink="false">urn:hackerpapers:mention:1605.05274:20066269</guid><pubDate>Sat, 01 Jun 2019 00:25:50 GMT</pubDate><description>&lt;p&gt;Java Generics are Turing complete. [1] You can produce an entire program inside a Java API. The API is part of the implementation in Java. The criteria for copyright is originality and creativity. [2] It doesn&amp;#x27;t matter if understanding hashcodes is hard. Mathematical functions are not copyrightable. [3] Whereas elegant vs inelegant APIs demonstrate there is creativity in the API design process. Google engineer Bob Lee agreed [4] &amp;gt;Q. Would you say that designing APIs is a creative activity? &amp;gt;THE WITNESS: Yes, absolutely. Copyrights are not patents. Clean room designs are perfectly legal. [5]…&lt;/p&gt;&lt;p&gt;&lt;a href="https://hackerpaper.kaipfister.de/p/1605.05274/"&gt;Paper and discussion history&lt;/a&gt;. A mention is not an endorsement.&lt;/p&gt;</description><category>cs.PL</category></item><item><title>Java Generics are Turing Complete — mentioned by JadeNB</title><link>https://news.ycombinator.com/item?id=19781898</link><guid isPermaLink="false">urn:hackerpapers:mention:1605.05274:19781898</guid><pubDate>Mon, 29 Apr 2019 19:43:28 GMT</pubDate><description>&lt;p&gt;I think it&amp;#x27;s a good idea to link to abstracts https://arxiv.org/abs/1605.05274 (as ygra does (https://news.ycombinator.com/item?id=19777896 )) rather than directly to PDFs.&lt;/p&gt;&lt;p&gt;&lt;a href="https://hackerpaper.kaipfister.de/p/1605.05274/"&gt;Paper and discussion history&lt;/a&gt;. A mention is not an endorsement.&lt;/p&gt;</description><category>cs.PL</category></item><item><title>Java Generics are Turing Complete — mentioned by saagarjha</title><link>https://news.ycombinator.com/item?id=19777909</link><guid isPermaLink="false">urn:hackerpapers:mention:1605.05274:19777909</guid><pubDate>Mon, 29 Apr 2019 12:58:32 GMT</pubDate><description>&lt;p&gt;Java’s generics are Turing complete, though I don’t think anyone has written a useful program in them yet: https://arxiv.org/pdf/1605.05274.pdf&lt;/p&gt;&lt;p&gt;&lt;a href="https://hackerpaper.kaipfister.de/p/1605.05274/"&gt;Paper and discussion history&lt;/a&gt;. A mention is not an endorsement.&lt;/p&gt;</description><category>cs.PL</category></item><item><title>Java Generics are Turing Complete — mentioned by OskarS</title><link>https://news.ycombinator.com/item?id=19777900</link><guid isPermaLink="false">urn:hackerpapers:mention:1605.05274:19777900</guid><pubDate>Mon, 29 Apr 2019 12:57:22 GMT</pubDate><description>&lt;p&gt;Theoretically, sure: https://arxiv.org/pdf/1605.05274.pdf&lt;/p&gt;&lt;p&gt;&lt;a href="https://hackerpaper.kaipfister.de/p/1605.05274/"&gt;Paper and discussion history&lt;/a&gt;. A mention is not an endorsement.&lt;/p&gt;</description><category>cs.PL</category></item><item><title>Java Generics are Turing Complete — mentioned by ygra</title><link>https://news.ycombinator.com/item?id=19777896</link><guid isPermaLink="false">urn:hackerpapers:mention:1605.05274:19777896</guid><pubDate>Mon, 29 Apr 2019 12:56:46 GMT</pubDate><description>&lt;p&gt;https://arxiv.org/abs/1605.05274 perhaps?&lt;/p&gt;&lt;p&gt;&lt;a href="https://hackerpaper.kaipfister.de/p/1605.05274/"&gt;Paper and discussion history&lt;/a&gt;. A mention is not an endorsement.&lt;/p&gt;</description><category>cs.PL</category></item><item><title>Java Generics are Turing Complete — mentioned by Jaxan</title><link>https://news.ycombinator.com/item?id=17042466</link><guid isPermaLink="false">urn:hackerpapers:mention:1605.05274:17042466</guid><pubDate>Thu, 10 May 2018 20:04:19 GMT</pubDate><description>&lt;p&gt;A related result is that java generics are Turing complete [1]. As a result you can write programs which will loop the type checker! I was at the popl presentation where the author showed this result. He gave a demo where he defined a Turing program and a tape, and then let the type checker give the answer (halting with 1 will succeed type checking, halting with 0 will give a type error). This was a lot of fun. [1] https://arxiv.org/pdf/1605.05274.pdf&lt;/p&gt;&lt;p&gt;&lt;a href="https://hackerpaper.kaipfister.de/p/1605.05274/"&gt;Paper and discussion history&lt;/a&gt;. A mention is not an endorsement.&lt;/p&gt;</description><category>cs.PL</category></item><item><title>Java Generics are Turing Complete — HN submission</title><link>https://news.ycombinator.com/item?id=16373874</link><guid isPermaLink="false">urn:hackerpapers:submission:1605.05274:16373874</guid><pubDate>Wed, 14 Feb 2018 06:17:57 GMT</pubDate><description>&lt;p&gt;Java Generic Are Turing Complete&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;3 points; 0 discussion replies on HN. &lt;a href="https://hackerpaper.kaipfister.de/p/1605.05274/"&gt;Paper and source history&lt;/a&gt;. A submission is not an endorsement.&lt;/p&gt;</description><category>cs.PL</category></item><item><title>Java Generics are Turing Complete — HN submission</title><link>https://news.ycombinator.com/item?id=15947774</link><guid isPermaLink="false">urn:hackerpapers:submission:1605.05274:15947774</guid><pubDate>Sun, 17 Dec 2017 21:30:07 GMT</pubDate><description>&lt;p&gt;Java generics are turing complete&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;3 points; 0 discussion replies on HN. &lt;a href="https://hackerpaper.kaipfister.de/p/1605.05274/"&gt;Paper and source history&lt;/a&gt;. A submission is not an endorsement.&lt;/p&gt;</description><category>cs.PL</category></item><item><title>Java Generics are Turing Complete — mentioned by naasking</title><link>https://news.ycombinator.com/item?id=15421121</link><guid isPermaLink="false">urn:hackerpapers:mention:1605.05274:15421121</guid><pubDate>Fri, 06 Oct 2017 23:11:04 GMT</pubDate><description>&lt;p&gt;So is Java&amp;#x27;s type system [1], and Rust&amp;#x27;s and Haskell&amp;#x27;s with some modest extensions, and Scala&amp;#x27;s. Many type systems have turned out to be Turing complete. [1] https://arxiv.org/abs/1605.05274&lt;/p&gt;&lt;p&gt;&lt;a href="https://hackerpaper.kaipfister.de/p/1605.05274/"&gt;Paper and discussion history&lt;/a&gt;. A mention is not an endorsement.&lt;/p&gt;</description><category>cs.PL</category></item><item><title>Java Generics are Turing Complete — mentioned by unholiness</title><link>https://news.ycombinator.com/item?id=14906678</link><guid isPermaLink="false">urn:hackerpapers:mention:1605.05274:14906678</guid><pubDate>Wed, 02 Aug 2017 00:05:48 GMT</pubDate><description>&lt;p&gt;Turing complete systems are highly capable, and thus, are harder to prove anything about. The halting problem notwithstanding, there&amp;#x27;s first the &amp;quot;there are things that don&amp;#x27;t halt&amp;quot; problem: that is, you can write a valid TypeScript program that will never finish compiling. Now, this really shouldn&amp;#x27;t be an issue unless someone is deliberately abusive. Java&amp;#x27;s generic types are also Turing complete[0], and it hasn&amp;#x27;t been problematic. Just because an abusive program exists doesn&amp;#x27;t mean it will be written. But who am I kidding... this is the JavaScript community. I&amp;#x27;ll give it 2 weeks until someone…&lt;/p&gt;&lt;p&gt;&lt;a href="https://hackerpaper.kaipfister.de/p/1605.05274/"&gt;Paper and discussion history&lt;/a&gt;. A mention is not an endorsement.&lt;/p&gt;</description><category>cs.PL</category></item><item><title>Java Generics are Turing Complete — mentioned by kagebe</title><link>https://news.ycombinator.com/item?id=13051298</link><guid isPermaLink="false">urn:hackerpapers:mention:1605.05274:13051298</guid><pubDate>Sun, 27 Nov 2016 20:25:31 GMT</pubDate><description>&lt;p&gt;In related news: Radu Grigore &amp;quot;Java generics are Turing complete&amp;quot; POPL&amp;#x27;17 Preprint: https://arxiv.org/pdf/1605.05274&lt;/p&gt;&lt;p&gt;&lt;a href="https://hackerpaper.kaipfister.de/p/1605.05274/"&gt;Paper and discussion history&lt;/a&gt;. A mention is not an endorsement.&lt;/p&gt;</description><category>cs.PL</category></item><item><title>Java Generics are Turing Complete — mentioned by cwmma</title><link>https://news.ycombinator.com/item?id=11777879</link><guid isPermaLink="false">urn:hackerpapers:mention:1605.05274:11777879</guid><pubDate>Thu, 26 May 2016 13:47:16 GMT</pubDate><description>&lt;p&gt;http://arxiv.org/pdf/1605.05274v1.pdf in the upper right corner of the page&lt;/p&gt;&lt;p&gt;&lt;a href="https://hackerpaper.kaipfister.de/p/1605.05274/"&gt;Paper and discussion history&lt;/a&gt;. A mention is not an endorsement.&lt;/p&gt;</description><category>cs.PL</category></item><item><title>Java Generics are Turing Complete — HN submission</title><link>https://news.ycombinator.com/item?id=11777133</link><guid isPermaLink="false">urn:hackerpapers:submission:1605.05274:11777133</guid><pubDate>Thu, 26 May 2016 11:35:24 GMT</pubDate><description>&lt;p&gt;Java Generics Are Turing Complete&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;112 points; 101 discussion replies on HN. &lt;a href="https://hackerpaper.kaipfister.de/p/1605.05274/"&gt;Paper and source history&lt;/a&gt;. A submission is not an endorsement.&lt;/p&gt;</description><category>cs.PL</category></item></channel></rss>
