2025/10/23

Newest at the top

2025-10-23 14:43:55 +0200merijn(~merijn@77.242.116.146) merijn
2025-10-23 14:41:52 +0200 <tomsmeding> but foo2 does not because the semi-injectivity is not used
2025-10-23 14:41:43 +0200 <tomsmeding> note that foo1 typechecks because with the first list literal, Append reduces and the list~list equality resolves to a l2~_ equality
2025-10-23 14:41:10 +0200 <tomsmeding> Leary: I think this is a faithful abstraction/simplification of the behaviour that I'm looking for: https://play.haskell.org/saved/UAIlXBxX
2025-10-23 14:38:32 +0200 <mauke> proposal: every language pragma should have an associated unicode character/emoji. then you could say {-# LANGUAGE ðŸŦƒðŸ˜…ðŸĪĄðŸ’ŒðŸ’Ŋ👁ïļâ€ðŸ—ĻïļðŸ‘ŒðŸŦĶ🧑‍ðŸĶē #-}
2025-10-23 14:37:23 +0200 <tomsmeding> Leary: that works and the rest of my code compiles (after some messing around to let Append's kind be linked to the kind of the arguments), but it doesn't seem to help in practice
2025-10-23 14:33:05 +0200 <tomsmeding> let me try that
2025-10-23 14:32:52 +0200 <tomsmeding> yes I know you can merge LANGUAGE pragmata :)
2025-10-23 14:32:30 +0200merijn(~merijn@77.242.116.146) (Ping timeout: 256 seconds)
2025-10-23 14:31:35 +0200 <Leary> (see also, the style I've recently adopted for too many LANGUAGE pragmata)
2025-10-23 14:31:17 +0200 <Leary> I'm not sure what the error message is actually complaining about (and I can't be bothered reading the manual to find out), but GHC will at least accept the first dependency with `UndecidableInstances`: https://play.haskell.org/saved/5T5D4ys5
2025-10-23 14:28:02 +0200merijn(~merijn@77.242.116.146) merijn
2025-10-23 14:25:50 +0200Googulator56(~Googulato@2a01-036d-0106-03fa-d161-d36f-e0e5-1b0a.pool6.digikabel.hu)
2025-10-23 14:25:41 +0200Googulator56(~Googulato@2a01-036d-0106-03fa-d161-d36f-e0e5-1b0a.pool6.digikabel.hu) (Quit: Client closed)
2025-10-23 14:24:33 +0200Square2(~Square@user/square) (Ping timeout: 256 seconds)
2025-10-23 14:24:16 +0200simplystuart(~simplystu@c-75-75-152-164.hsd1.pa.comcast.net)
2025-10-23 14:22:18 +0200merijn(~merijn@77.242.116.146) (Ping timeout: 248 seconds)
2025-10-23 14:11:45 +0200jreicher(~user@user/jreicher) (Quit: In transit)
2025-10-23 14:10:01 +0200weary-traveler(~user@user/user363627) user363627
2025-10-23 14:09:55 +0200simplystuart(~simplystu@c-75-75-152-164.hsd1.pa.comcast.net) (Ping timeout: 244 seconds)
2025-10-23 14:07:04 +0200trickard(~trickard@cpe-55-98-47-163.wireline.com.au)
2025-10-23 14:04:16 +0200 <tomsmeding> (if you put the dependency declarations on the same line as the class keyword, as they would normally be, this module has more language pragmas than lines of useful code)
2025-10-23 14:03:37 +0200trickard_(~trickard@cpe-55-98-47-163.wireline.com.au) (Ping timeout: 244 seconds)
2025-10-23 14:03:12 +0200 <tomsmeding> did I make a mistake?
2025-10-23 14:03:08 +0200 <tomsmeding> uncommenting either of line 15 or 16 makes compilation fail
2025-10-23 14:02:57 +0200 <tomsmeding> Leary: I can write that type class, but GHC doesn't seem to accept the dependencies: https://play.haskell.org/saved/EGhc89zh
2025-10-23 14:00:31 +0200annamalai(~annamalai@157.49.98.203) annamalai
2025-10-23 13:55:08 +0200deptype(~deptype@2406:b400:d4:c314:8332:aeaf:6094:c234)
2025-10-23 13:54:50 +0200deptype(~deptype@2406:b400:d4:c314:5abc:4b66:d843:af9d) (Remote host closed the connection)
2025-10-23 13:54:27 +0200 <Leary> tomsmeding: Perhaps you can piggyback off `FunctionalDependencies`? Say: `class Append xs ys ~ xys => HasAppend xs ys xys | xs xys -> ys, ys xys -> xs where { type Append xs ys }`
2025-10-23 13:40:04 +0200 <tomsmeding> is there a way I can tell GHC to use this implication in type inference?
2025-10-23 13:39:52 +0200 <tomsmeding> now this thing is not injective in any of the standard ways, but we do have the property that Append a b ~ Append a c implies b ~ c
2025-10-23 13:39:27 +0200 <tomsmeding> type family Append a b where { Append '[] b = b ; Append (x : xs) b = x : Append xs b }
2025-10-23 13:39:08 +0200Lord_of_Life_Lord_of_Life
2025-10-23 13:38:52 +0200 <tomsmeding> is there a way to make the Append type family "half-injective"?
2025-10-23 13:38:19 +0200Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Ping timeout: 255 seconds)
2025-10-23 13:37:52 +0200Lord_of_Life_(~Lord@user/lord-of-life/x-2819915) Lord_of_Life
2025-10-23 13:35:49 +0200annamalai(~annamalai@157.49.217.152) (Ping timeout: 256 seconds)
2025-10-23 13:35:05 +0200merijn(~merijn@77.242.116.146) merijn
2025-10-23 13:33:01 +0200merijn(~merijn@77.242.116.146) (Ping timeout: 264 seconds)
2025-10-23 13:31:19 +0200jreicher(~user@user/jreicher) jreicher
2025-10-23 13:15:46 +0200Googulator71(~Googulato@2a01-036d-0106-03fa-d161-d36f-e0e5-1b0a.pool6.digikabel.hu) (Quit: Client closed)
2025-10-23 13:15:40 +0200Googulator56(~Googulato@2a01-036d-0106-03fa-d161-d36f-e0e5-1b0a.pool6.digikabel.hu)
2025-10-23 13:14:02 +0200Pixi(~Pixi@user/pixi) (Ping timeout: 248 seconds)
2025-10-23 13:12:11 +0200vanishingideal(~vanishing@user/vanishingideal) (Remote host closed the connection)
2025-10-23 13:11:26 +0200Pixi`(~Pixi@user/pixi) Pixi
2025-10-23 13:10:58 +0200vanishingideal(~vanishing@user/vanishingideal) vanishingideal
2025-10-23 13:06:51 +0200simplystuart(~simplystu@c-75-75-152-164.hsd1.pa.comcast.net)
2025-10-23 13:06:26 +0200weary-traveler(~user@user/user363627) (Quit: Konversation terminated!)
2025-10-23 13:03:36 +0200deptype(~deptype@2406:b400:d4:c314:5abc:4b66:d843:af9d)