2026/05/24

Newest at the top

2026-05-24 10:09:55 +0000Alex_delenda_est(~al_test@5.139.233.99) (Ping timeout: 264 seconds)
2026-05-24 10:09:00 +0000AlexZenon(~alzenon@5.139.233.99) (Ping timeout: 244 seconds)
2026-05-24 10:05:18 +0000merijn(~merijn@62.45.136.136) (Ping timeout: 252 seconds)
2026-05-24 10:05:05 +0000 <tomsmeding> fun: Claude Opus cannot explain why the little reproducer fails, even when given access to GHC to test stuff. It concludes that it's a known limitation of GHC.
2026-05-24 09:58:42 +0000merijn(~merijn@62.45.136.136) merijn
2026-05-24 09:56:50 +0000vanishingideal(~vanishing@user/vanishingideal) vanishingideal
2026-05-24 09:54:54 +0000DetourNe-DetourNetworkUK
2026-05-24 09:52:52 +0000DetourNetworkUK(~DetourNet@user/DetourNetworkUK) (Read error: Connection reset by peer)
2026-05-24 09:52:50 +0000 <tomsmeding> fun, this is _very_ hard to spot if you're not aware of how the kind system works precisely
2026-05-24 09:52:45 +0000 <Noinia> Thanks for the help! :)
2026-05-24 09:52:38 +0000DetourNe-(~DetourNet@user/DetourNetworkUK) DetourNetworkUK
2026-05-24 09:52:21 +0000 <tomsmeding> Noinia: that seems like the correct solution, yes
2026-05-24 09:52:11 +0000 <Noinia> (i.e. restricting the Svg type signature to kind Type)
2026-05-24 09:52:09 +0000AlexNoo(~AlexNoo@5.139.233.99) (Ping timeout: 246 seconds)
2026-05-24 09:52:02 +0000 <int-e> tomsmeding: Oh. Of course.
2026-05-24 09:51:50 +0000 <tomsmeding> so the family instance is not general enough for the class instance
2026-05-24 09:51:32 +0000 <tomsmeding> int-e: no, because it's the type Svg that is too general
2026-05-24 09:51:23 +0000 <Noinia> yes indeed; maybe in hindsight thatm akes sense
2026-05-24 09:51:21 +0000 <tomsmeding> that confirms my explanation
2026-05-24 09:51:21 +0000 <int-e> weirdly, adding :: * in the type family doesn't
2026-05-24 09:51:10 +0000 <int-e> Anyway, that makes it work.
2026-05-24 09:51:01 +0000 <tomsmeding> oh haha
2026-05-24 09:50:55 +0000 <int-e> (I marked this in the playground but of course it didn't make it into the X11 selection: instance IsDrawable (Svg (a :: *)) )
2026-05-24 09:50:51 +0000 <tomsmeding> that's the same link Leary pasted?
2026-05-24 09:50:22 +0000 <int-e> I hate this
2026-05-24 09:50:17 +0000 <int-e> https://play.haskell.org/saved/RyQAXNsG
2026-05-24 09:49:49 +0000 <tomsmeding> your explicit L122 type equality forces `model` to have kind Type (otherwise the equality doesn't kind-check) so all works
2026-05-24 09:49:30 +0000 <tomsmeding> so GHC determines that your type instance is not general enough and doesn't use it
2026-05-24 09:49:18 +0000 <tomsmeding> Noinia: the `model` parameter in your IsDrawable instance declaration has any kind, but the `model` parameter in your `type instance Rendered` declaration is forced to kind Type due to being an argument to View
2026-05-24 09:49:11 +0000 <Noinia> hmm yes apparently
2026-05-24 09:48:36 +0000 <tomsmeding> oh
2026-05-24 09:48:18 +0000 <tomsmeding> *fail
2026-05-24 09:48:16 +0000 <tomsmeding> so you even need kind-polymorphism for this to faiul
2026-05-24 09:48:08 +0000 <Noinia> G
2026-05-24 09:48:01 +0000 <tomsmeding> :o
2026-05-24 09:47:48 +0000AlexNoo(~AlexNoo@5.139.233.99)
2026-05-24 09:47:45 +0000 <tomsmeding> yes, this kind of "when exactly do I expand the type family" feels like a thing that SPJ and friends have been tinkering with recently
2026-05-24 09:47:42 +0000merijn(~merijn@62.45.136.136) (Ping timeout: 252 seconds)
2026-05-24 09:47:31 +0000 <Noinia> in my actual code I now got things to work by specifying that the argument of Svg has Kind Type
2026-05-24 09:47:15 +0000 <int-e> Works with 9.0 though (after enabling FlexibleContexts). Fun!
2026-05-24 09:47:13 +0000 <Noinia> yes I also made a minimal example; but somehow didn't manage to reproduce it yet that way
2026-05-24 09:46:53 +0000 <tomsmeding> is the problem here that GHC has to infer a quanfified constraint `forall a. Monoid (Rendered (Svg a))` here and somehow it decides not to reduce the type family in that case?
2026-05-24 09:45:17 +0000 <tomsmeding> turns out that occurrence is important
2026-05-24 09:45:09 +0000 <tomsmeding> oh! I was almost there too, just missing the a on the RHS of Rendered (Svg a)
2026-05-24 09:44:34 +0000 <Leary> tomsmeding: tweaked: https://play.haskell.org/saved/RyQAXNsG
2026-05-24 09:42:54 +0000merijn(~merijn@62.45.136.136) merijn
2026-05-24 09:42:42 +0000emilym(~Thunderbi@user/emilym) (Ping timeout: 246 seconds)
2026-05-24 09:42:31 +0000 <tomsmeding> Noinia: that's odd. I tried to reproduce it very minimally but I couldn't -- I'm probably missing some essential component of your situation https://play.haskell.org/saved/nO5kBURh
2026-05-24 09:38:15 +0000emilym(~Thunderbi@user/emilym) emilym
2026-05-24 09:33:15 +0000 <Noinia> (i.e. without the L122; GHC complains that it cannot deteremine that (Rendered (Svg model action)) has a Monoid constraint; that seems odd to me; since I just defined that 'Rendered (Svg model action) = [View model action])' above there (which thus has a Monoid constraint)