<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Modular implicits · HackerPapers discussions</title><link>https://hackerpaper.kaipfister.de/p/1512.01895/</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/1512.01895/feed.xml" rel="self" type="application/rss+xml" /><item><title>Modular implicits — mentioned by nukifw</title><link>https://news.ycombinator.com/item?id=44895002</link><guid isPermaLink="false">urn:hackerpapers:mention:1512.01895:44895002</guid><pubDate>Wed, 13 Aug 2025 23:14:31 GMT</pubDate><description>&lt;p&gt;- Extremely dated: we have almost one new release every six month and in recent releases, the language runtime has been changed and user-defined effects have been introduced. - No HKTs &amp;quot;in your sense&amp;quot; but: ```ocaml module type S = sig type &amp;#x27;a t end `` `type &amp;#x27;a t` is an Higher Kinded type (but in the module Level). - No typeclasses, yes, for the moment but the first step of https://arxiv.org/pdf/1512.01895 is under review: https://github.com/ocaml/ocaml/pull/13275 - no call-site expansion ? https://ocaml.org/manual/5.0/attributes.html look at the attribute `inline`.&lt;/p&gt;&lt;p&gt;&lt;a href="https://hackerpaper.kaipfister.de/p/1512.01895/"&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>Modular implicits — mentioned by nequo</title><link>https://news.ycombinator.com/item?id=41080385</link><guid isPermaLink="false">urn:hackerpapers:mention:1512.01895:41080385</guid><pubDate>Fri, 26 Jul 2024 17:16:01 GMT</pubDate><description>&lt;p&gt;&amp;gt; Ocaml messed up with their operators. ... I hope a future version adds module typeclasses Do you mean modular implicits?[1] The original paper was published in 2014. There&amp;#x27;s an internship report from 2023 that summarizes the design and implementation issues: https://modular-implicits.github.io/report.pdf [1] https://arxiv.org/abs/1512.01895&lt;/p&gt;&lt;p&gt;&lt;a href="https://hackerpaper.kaipfister.de/p/1512.01895/"&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>Modular implicits — mentioned by sgeisenh</title><link>https://news.ycombinator.com/item?id=29536454</link><guid isPermaLink="false">urn:hackerpapers:mention:1512.01895:29536454</guid><pubDate>Mon, 13 Dec 2021 04:00:26 GMT</pubDate><description>&lt;p&gt;Type classes are useful but can be overly restrictive as implemented in languages such as Haskell. In particular, Haskell prevents multiple implementations of a type class for a particular type (a property called canonicity). But there are lots of situations where there are many reasonable implementations of a type class for a particular type. I hadn&amp;#x27;t seen a great type-safe way to support ad hoc polymorphism until I read about [modular implicits][1] in OCaml. In situations where there is a reasonable module that satisfies a specified signature for the type of an argument, the module can be…&lt;/p&gt;&lt;p&gt;&lt;a href="https://hackerpaper.kaipfister.de/p/1512.01895/"&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>Modular implicits — mentioned by lpage</title><link>https://news.ycombinator.com/item?id=28083556</link><guid isPermaLink="false">urn:hackerpapers:mention:1512.01895:28083556</guid><pubDate>Fri, 06 Aug 2021 05:15:10 GMT</pubDate><description>&lt;p&gt;* GADTs: generalized algebraic data types. As the name suggests, GADTs broaden the set of type-level constraints that one can encode using ADTs. A canonical example involves using GADTs to strongly type an AST and evaluator function s.t. attempting to construct or operate on an invalid AST, e.g., one that represents addition between a boolean and an integer, is a compile-time error [1]. Another great tutorial on GADTs is [2]. * Row polymorphism: statically type-checked duck types, for lack of a better description. In dynamic languages like python or javascript, it&amp;#x27;s common to pass dict or…&lt;/p&gt;&lt;p&gt;&lt;a href="https://hackerpaper.kaipfister.de/p/1512.01895/"&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>Modular implicits — mentioned by Shoop</title><link>https://news.ycombinator.com/item?id=25680066</link><guid isPermaLink="false">urn:hackerpapers:mention:1512.01895:25680066</guid><pubDate>Fri, 08 Jan 2021 01:09:27 GMT</pubDate><description>&lt;p&gt;Part of this has to do with the fact that it is not possible (without tricks) to have multiple different typeclass implementations for one type in Haskell (I believe Rust also has this restriction). This language restriction has the tendency to seep into people&amp;#x27;s way of thinking about monads (and other typeclasses). However, it is not fundamental that a typeclass (or other ad-hoc polymorphism) system has this restriction. That being said, the language design problem of how to support multiple different typeclass implementations for one type is actually trickier than you&amp;#x27;d think. For example…&lt;/p&gt;&lt;p&gt;&lt;a href="https://hackerpaper.kaipfister.de/p/1512.01895/"&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>Modular implicits — mentioned by tutanchamun</title><link>https://news.ycombinator.com/item?id=21042307</link><guid isPermaLink="false">urn:hackerpapers:mention:1512.01895:21042307</guid><pubDate>Sun, 22 Sep 2019 16:44:01 GMT</pubDate><description>&lt;p&gt;As a layman I would describe them as implicits like in current Scala [0] but better (easier to reason about). One thing which they allow is ad-hoc polymorphism like typeclasses. https://arxiv.org/pdf/1512.01895.pdf https://old.reddit.com/r/ocaml/comments/4qan0w/modular_type_... [0] https://scala-lang.org&lt;/p&gt;&lt;p&gt;&lt;a href="https://hackerpaper.kaipfister.de/p/1512.01895/"&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>Modular implicits — mentioned by bjz_</title><link>https://news.ycombinator.com/item?id=17814811</link><guid isPermaLink="false">urn:hackerpapers:mention:1512.01895:17814811</guid><pubDate>Tue, 21 Aug 2018 23:27:20 GMT</pubDate><description>&lt;p&gt;&amp;gt; No, I mean that neither Elm nor Standard ML has nor needs typeclasses. No language needs typeclasses. Standard ML has less need for type classes because it has a much more expressive module system, but it still can be extremely tedious to pass around module definitions all the time, which is why they added equality types when the language was originally designed. This is considered an ugly hack though, even by its own creators [0]. Definitely agree that folks should aim for better than type classes, especially due to complications around global instance coherence. One nice solution is…&lt;/p&gt;&lt;p&gt;&lt;a href="https://hackerpaper.kaipfister.de/p/1512.01895/"&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>Modular implicits — mentioned by jdreaver</title><link>https://news.ycombinator.com/item?id=17377023</link><guid isPermaLink="false">urn:hackerpapers:mention:1512.01895:17377023</guid><pubDate>Fri, 22 Jun 2018 20:19:06 GMT</pubDate><description>&lt;p&gt;Gluon recently added implicit arguments with the latest release (see http://marwes.github.io/2018/06/19/gluon-0.8.html). In spirit it is like modular implicits (https://arxiv.org/pdf/1512.01895.pdf). This is really exciting because modular implicits represent a pragmatic balance between the flexibility of ML modules and the convenient overloading of type classes. Another cool feature of Gluon is modules are basically just records. This is a strict improvement over ML modules in my opinion. (See http://gluon-lang.org/book/modules.html) Congrats on the recent release!&lt;/p&gt;&lt;p&gt;&lt;a href="https://hackerpaper.kaipfister.de/p/1512.01895/"&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>Modular implicits — mentioned by lptk</title><link>https://news.ycombinator.com/item?id=16957273</link><guid isPermaLink="false">urn:hackerpapers:mention:1512.01895:16957273</guid><pubDate>Mon, 30 Apr 2018 10:09:50 GMT</pubDate><description>&lt;p&gt;If by &amp;quot;all constructions wiht HKTs&amp;quot;, you mean what can be done with HKTs in Haskell, then I&amp;#x27;d say yes. It is well-known that ML modules provide a very advanced level of expressiveness, especially since OCaml&amp;#x27;s introduction of first-class modules. Also, Scala took this idea further and provides principled recursive first-class modules (which Scala calls dependent object types). The problem is that modules in ML have a verbose syntax and are clunky to use compared to type classes. OCaml&amp;#x27;s modular implicits aim to make this better (see https://arxiv.org/abs/1512.01895), taking inspiration from…&lt;/p&gt;&lt;p&gt;&lt;a href="https://hackerpaper.kaipfister.de/p/1512.01895/"&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>Modular implicits — mentioned by pauldirac137</title><link>https://news.ycombinator.com/item?id=11590404</link><guid isPermaLink="false">urn:hackerpapers:mention:1512.01895:11590404</guid><pubDate>Thu, 28 Apr 2016 17:13:37 GMT</pubDate><description>&lt;p&gt;This is exactly the problem that modular implicits will solve. See http://arxiv.org/pdf/1512.01895.pdf&lt;/p&gt;&lt;p&gt;&lt;a href="https://hackerpaper.kaipfister.de/p/1512.01895/"&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>Modular implicits — mentioned by krat0sprakhar</title><link>https://news.ycombinator.com/item?id=11585361</link><guid isPermaLink="false">urn:hackerpapers:mention:1512.01895:11585361</guid><pubDate>Wed, 27 Apr 2016 23:11:39 GMT</pubDate><description>&lt;p&gt;If I&amp;#x27;m not mistaken, this release is not the multicore release[0]. Also, if anyone&amp;#x27;s keen on reading the paper behind modular implicits in OCaml, its a fun read - http://arxiv.org/abs/1512.01895 [0] - https://blogs.janestreet.com/flambda/#comment-39958&lt;/p&gt;&lt;p&gt;&lt;a href="https://hackerpaper.kaipfister.de/p/1512.01895/"&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>Modular implicits — mentioned by ubertaco</title><link>https://news.ycombinator.com/item?id=11402416</link><guid isPermaLink="false">urn:hackerpapers:mention:1512.01895:11402416</guid><pubDate>Fri, 01 Apr 2016 03:43:12 GMT</pubDate><description>&lt;p&gt;If you don&amp;#x27;t mind reading a paper, there&amp;#x27;s a paper on it that actually is readable instead of just all whitepapery and overly-theoretical: http://arxiv.org/pdf/1512.01895.pdf&lt;/p&gt;&lt;p&gt;&lt;a href="https://hackerpaper.kaipfister.de/p/1512.01895/"&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>Modular implicits — mentioned by pauldirac137</title><link>https://news.ycombinator.com/item?id=11400400</link><guid isPermaLink="false">urn:hackerpapers:mention:1512.01895:11400400</guid><pubDate>Thu, 31 Mar 2016 20:37:55 GMT</pubDate><description>&lt;p&gt;Modules are strictly more powerful than Haskell type classes (at least, more powerful than naive type classes; there are so many extensions that I&amp;#x27;m not sure that is still the case). Modular implicits are described here: http://arxiv.org/pdf/1512.01895.pdf. The main problem with modules as typeclasses is that it&amp;#x27;s pretty painful to use in practice, and modular implicits fix that, giving a solution quite reminiscent of Haskell type classes. I don&amp;#x27;t know Scala implicits well enough to comment, but the authors feel their version avoids most of the problems in Scala&amp;#x27;s implicits (they jokingly…&lt;/p&gt;&lt;p&gt;&lt;a href="https://hackerpaper.kaipfister.de/p/1512.01895/"&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>Modular implicits — HN submission</title><link>https://news.ycombinator.com/item?id=10722750</link><guid isPermaLink="false">urn:hackerpapers:submission:1512.01895:10722750</guid><pubDate>Sat, 12 Dec 2015 14:02:21 GMT</pubDate><description>&lt;p&gt;Modular implicits for ad-hoc polymorphism in OCaml&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;1 point; 0 discussion replies on HN. &lt;a href="https://hackerpaper.kaipfister.de/p/1512.01895/"&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>
