2026/07/01

Newest at the top

2026-07-01 21:05:45 +0000pfc(~pfc@user/pfc) pfc
2026-07-01 21:05:23 +0000 <ski> i've occasionally wanted alternative defaults, depending on which methods were given explicit definitions
2026-07-01 21:04:58 +0000 <monochrom> But it's OK, basically only he and the new King are happy.
2026-07-01 21:04:33 +0000 <monochrom> Well Tyrion misspoke. Because he has found a politically stable solution, he was happy as someone who runs the country and needed everything stable!
2026-07-01 21:03:37 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds)
2026-07-01 21:02:31 +0000tomsmedingdoesn't like it when math stuff is implicit because then I inevitably misunderstand at some point, so please do the explicit version -- I'm happy!
2026-07-01 20:59:09 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-07-01 20:57:48 +0000 <monochrom> In this case it now looks unfair to put either of them inside (and therefore the other outside). Tyrion Lannister's solution applies: Both outside, everyone is unhappy, that's probably the most politically stable solution!
2026-07-01 20:57:23 +0000 <tomsmeding> it's actually more explicit, which is not necessarily a bad thing
2026-07-01 20:57:04 +0000 <tomsmeding> that sounds like examFromLFixer / examFromGFixer :p
2026-07-01 20:56:26 +0000yin(~zero@user/zero) zero
2026-07-01 20:55:15 +0000 <monochrom> What happens now is: Fixer (fixed points) has 2 subclasses, LFixer (least) and GFixer (greatest). If a Fixer instance is also an instance of LFixer, I have one impl for exam; if GFixer, I have another!
2026-07-01 20:54:06 +0000 <tomsmeding> certainly, but since Haskell has no concept of subclasses, just of unrelated classes that have superclass constraints on them, I don't see the problem :p
2026-07-01 20:54:00 +0000yin(~zero@user/zero) (Remote host closed the connection)
2026-07-01 20:53:29 +0000 <monochrom> I think it was intended for things like "default method :: (Generic a) => ...", where Generic is an independent class.
2026-07-01 20:52:42 +0000tomsmedingsees no crime in that code
2026-07-01 20:51:58 +0000 <monochrom> Yeah!
2026-07-01 20:51:55 +0000 <monochrom> I think I have abused default-sig-for-conditional-default-impl. The condition is probably not supposed to be a subclass.
2026-07-01 20:51:49 +0000 <tomsmeding> *thing
2026-07-01 20:51:46 +0000 <tomsmeding> is this the exam/make thinig
2026-07-01 20:51:14 +0000 <monochrom> I have class Fixer, and subclass LFixer. In the superclass Fixer, I have "default exam:: (LFixer fix, Functor f) => fix f -> f (fix f); exam = ...".
2026-07-01 20:49:45 +0000 <monochrom> I have actually been committing a crime. I now confess:
2026-07-01 20:49:25 +0000 <monochrom> I spoke too early! It exists. But I'll go the fmapDefault way, put it outside.
2026-07-01 20:49:23 +0000acidjnk_new3(~acidjnk@p200300d6e74def37e6046d471dcbd32e.dip0.t-ipconnect.de) (Ping timeout: 272 seconds)
2026-07-01 20:48:53 +0000acidjnk(~acidjnk@p200300d6e74def300b4dc62049e4d238.dip0.t-ipconnect.de) acidjnk
2026-07-01 20:48:45 +0000acidjnk(~acidjnk@p200300d6e74def37e6046d471dcbd32e.dip0.t-ipconnect.de) (Ping timeout: 272 seconds)
2026-07-01 20:48:19 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds)
2026-07-01 20:46:55 +0000 <tomsmeding> GHC just stared at your problem for long enough, and the problem got scared
2026-07-01 20:46:07 +0000 <tomsmeding> :D
2026-07-01 20:45:59 +0000 <monochrom> Things have changed. I now realize that in my case today the 2nd implementation does not exist. Problem vanished in a puff of logic!
2026-07-01 20:45:17 +0000acidjnk_new(~acidjnk@p200300d6e74def300b4dc62049e4d238.dip0.t-ipconnect.de)
2026-07-01 20:44:37 +0000 <monochrom> Haha yikes
2026-07-01 20:44:28 +0000geekosaurwhispers "IfCxt"
2026-07-01 20:43:48 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-07-01 20:43:04 +0000 <monochrom> (like how there is fmapDefault)
2026-07-01 20:42:49 +0000monochromresorts to writing, on the outside, "fooDefaultFromBar".
2026-07-01 20:42:13 +0000 <monochrom> But today it is my turn to want that in my own class!
2026-07-01 20:41:50 +0000Vizious(~bes@user/Vizious) (Ping timeout: 245 seconds)
2026-07-01 20:41:11 +0000 <monochrom> Heh I know I have explained to other people "open world, cannot express 'if X is an instance of C then foo else bar'"
2026-07-01 20:40:10 +0000 <tomsmeding> monochrom: how would you want ghc to choose between the two implementations?
2026-07-01 20:40:04 +0000elarks(~elarks@user/yerrii) (Ping timeout: 276 seconds)
2026-07-01 20:39:25 +0000ephapticpulse(~user@user/ephapticpulse) ephapticpulse
2026-07-01 20:38:45 +0000 <monochrom> :( I can only provide one default implementation (for a method in a class).
2026-07-01 20:33:02 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2026-07-01 20:28:25 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-07-01 20:26:22 +0000ystael(~ystael@user/ystael) ystael
2026-07-01 20:17:32 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds)
2026-07-01 20:15:46 +0000Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Excess Flood)
2026-07-01 20:13:57 +0000Lord_of_Life(~Lord@user/lord-of-life/x-2819915) Lord_of_Life
2026-07-01 20:13:03 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn