Home liberachat/#haskell: Logs Calendar

Logs: liberachat/#haskell

←Prev  Next→ 1,789,515 events total
2026-04-03 17:43:05 <monochrom> Oh darn haha
2026-04-03 17:43:14 <EvanR> how does that help
2026-04-03 17:43:26 <dolio> It's just not parametric over all types.
2026-04-03 17:43:48 <dolio> Some are empty, some aren't. You don't get back the same 'yes/no' answer regardless of type.
2026-04-03 17:44:13 <EvanR> oh
2026-04-03 17:44:36 <monochrom> With parametricity, bar :: [a] implies bar = []. But what if you wrote "bar = if a is empty then [] else let x = choose an element from a in [x,x,x]"
2026-04-03 17:45:09 <EvanR> list makes it clear again
2026-04-03 17:45:57 <monochrom> But I like dolio's. tellMe :: a -> Bool should be const True or const False, not tell you whether a is empty.
2026-04-03 17:46:44 <dolio> It's really `tellMe :: forall a. Bool`
2026-04-03 17:47:00 <dolio> If you have to provide an a, then the answer must be yes. :)
2026-04-03 17:47:09 <monochrom> haha
2026-04-03 17:47:18 <monochrom> Proxy a -> Bool!
2026-04-03 17:47:36 <dolio> Yeah, that'd work.
2026-04-03 17:48:35 <EvanR> yeah
2026-04-03 17:48:38 <monochrom> I guess today's Haskell has "forall a -> Bool" as a middle ground.
2026-04-03 17:48:43 <EvanR> I was trying to figure out how to fix a -> Bool
2026-04-03 17:49:11 <EvanR> forall a . Bool ...
2026-04-03 17:49:13 <EvanR> lol
2026-04-03 17:49:28 <monochrom> @free tellMe :: [a] -> Bool
2026-04-03 17:49:28 <lambdabot> tellMe = tellMe . $map f
2026-04-03 17:49:29 <dolio> Apparently that is a way of characterizing parametricity 'semantically', too. For all `A : U` then `f : U -> A` must be constant, basically.
2026-04-03 17:49:45 × confusedalex quits (~confuseda@user/confusedalex) (Ping timeout: 245 seconds)
2026-04-03 17:49:47 <dolio> Where U is the 'universe'.
2026-04-03 17:49:52 confusedalex_ joins (~confuseda@user/confusedalex)
2026-04-03 17:50:03 confusedalex_ is now known as confusedalex
2026-04-03 17:50:28 L29Ah parts (~L29Ah@wikipedia/L29Ah) ()
2026-04-03 17:50:35 <dolio> Instead of the relational way.
2026-04-03 17:53:01 <monochrom> Oh interesting, because "constant [over types]" is short for "the same code for all types".
2026-04-03 17:53:32 <monochrom> which is what I tell beginners if I'm not ready to tell the relational story.
2026-04-03 17:54:14 <dolio> Yeah. I recently heard about this, and like it better, because it seems closer to the intuitive idea of parametricity.
2026-04-03 17:57:54 <dolio> You can probably generalize it so that it doesn't depend so much on relative 'size' too.
2026-04-03 17:59:31 <dolio> Like, there is T parametricity for a class of types if for all A in that class, functions T -> A must be constant, or something.
2026-04-03 18:07:02 confusedalex_ joins (~confuseda@user/confusedalex)
2026-04-03 18:07:15 × jmcantrell_ quits (~weechat@user/jmcantrell) (Ping timeout: 246 seconds)
2026-04-03 18:08:06 × confusedalex quits (~confuseda@user/confusedalex) (Ping timeout: 255 seconds)
2026-04-03 18:08:06 confusedalex_ is now known as confusedalex
2026-04-03 18:13:59 byorgey joins (~byorgey@155.138.238.211)
2026-04-03 18:13:59 × byorgey quits (~byorgey@155.138.238.211) (Changing host)
2026-04-03 18:13:59 byorgey joins (~byorgey@user/byorgey)
2026-04-03 18:14:51 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 255 seconds)
2026-04-03 18:22:27 × absurdvoid quits (~absurdvoi@user/absurdvoid) (Quit: WeeChat 4.8.2)
2026-04-03 18:25:54 L29Ah joins (~L29Ah@wikipedia/L29Ah)
2026-04-03 18:27:15 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
2026-04-03 18:32:06 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 246 seconds)
2026-04-03 18:34:41 <gentauro> :t \ (x :: Void) -> [x]
2026-04-03 18:34:42 <lambdabot> Void -> [Void]
2026-04-03 18:35:58 <gentauro> :t \ _ -> {}
2026-04-03 18:35:59 <lambdabot> error: [GHC-58481] parse error on input ‘{’
2026-04-03 18:36:46 <gentauro> :t \ a -> case a of {}
2026-04-03 18:36:47 <lambdabot> p1 -> p2
2026-04-03 18:37:05 <gentauro> :t \ (a :: Void) -> case a of {}
2026-04-03 18:37:06 <lambdabot> Void -> p
2026-04-03 18:40:43 × slomp quits (~slomp@47-158-212-88.lsan.ca.frontiernet.net) (Quit: Lost terminal)
2026-04-03 18:43:24 merijn joins (~merijn@62.45.136.136)
2026-04-03 18:45:36 × j1n37 quits (~j1n37@user/j1n37) (Read error: Connection reset by peer)
2026-04-03 18:47:46 × merijn quits (~merijn@62.45.136.136) (Ping timeout: 248 seconds)
2026-04-03 18:48:23 absurdvoid joins (~absurdvoi@user/absurdvoid)
2026-04-03 18:52:04 × humasect quits (~humasect@dyn-192-249-132-90.nexicom.net) (Remote host closed the connection)
2026-04-03 18:53:49 j1n37 joins (~j1n37@user/j1n37)
2026-04-03 18:55:55 <tomsmeding> :t absurd
2026-04-03 18:55:56 <lambdabot> Void -> a
2026-04-03 18:58:58 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
2026-04-03 18:59:44 Digit joins (~user@user/digit)
2026-04-03 19:03:55 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds)
2026-04-03 19:08:53 × srk quits (~sorki@user/srk) (Ping timeout: 244 seconds)
2026-04-03 19:12:57 srk joins (~sorki@user/srk)
2026-04-03 19:14:43 × koz quits (~koz@121.99.240.58) (Ping timeout: 264 seconds)
2026-04-03 19:14:48 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
2026-04-03 19:16:45 koz joins (~koz@121.99.240.58)
2026-04-03 19:19:14 × machinedgod quits (~machinedg@d172-219-48-230.abhsia.telus.net) (Ping timeout: 248 seconds)
2026-04-03 19:20:07 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds)
2026-04-03 19:30:38 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
2026-04-03 19:35:24 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 255 seconds)
2026-04-03 19:44:23 ncf is now known as ncf-
2026-04-03 19:46:28 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
2026-04-03 19:51:12 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 246 seconds)
2026-04-03 19:53:33 ncf joins (~ncf@monade.li)
2026-04-03 19:54:05 Lord_of_Life_ joins (~Lord@user/lord-of-life/x-2819915)
2026-04-03 19:54:55 × Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 264 seconds)
2026-04-03 19:56:58 Lord_of_Life_ is now known as Lord_of_Life
2026-04-03 19:57:43 slomp joins (~slomp@47-158-212-88.lsan.ca.frontiernet.net)
2026-04-03 19:58:32 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
2026-04-03 20:01:21 jmcantrell_ joins (~weechat@user/jmcantrell)
2026-04-03 20:02:11 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
2026-04-03 20:03:55 × Digit quits (~user@user/digit) (Ping timeout: 245 seconds)
2026-04-03 20:03:56 Digitteknohippie joins (~user@user/digit)
2026-04-03 20:07:21 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 255 seconds)
2026-04-03 20:11:32 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
2026-04-03 20:17:15 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 255 seconds)
2026-04-03 20:28:19 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
2026-04-03 20:29:20 <tomsmeding> On the haskell-cafe mailing list there's a remark that aeson doesn't seem to be updated, and that its bound on QuickCheck needs to be bumped; aeson maintainers in turn complain that QuickCheck maintainers have strange views API stability, resulting in aeson not being able to upgrade to newest QuickCheck while keeping aeson's API stability views
2026-04-03 20:29:47 <tomsmeding> there's a whole discussion there but I feel like it all comes down to the problem it always comes down to: why the f*** does aeson even depend on quickcheck
2026-04-03 20:30:09 <tomsmeding> answer: aeson wants to provide Arbitrary instances for stuff
2026-04-03 20:30:38 <tomsmeding> the no-orphans rule understandable for soundness, but it has so many bad effects on a package ecosystem
2026-04-03 20:31:50 <dolio> Whose rule is the no orphans rule?
2026-04-03 20:32:14 <tomsmeding> well, GHC's, if you consider GHC's warnings rules
2026-04-03 20:32:25 <dolio> I don't.
2026-04-03 20:32:44 <geekosaur> I feel like it should be possible to declare exceptions
2026-04-03 20:32:47 <tomsmeding> (which is conventionally weakened to at least "no orphan instances in libraries", because in leaf applications they don't really hurt)
2026-04-03 20:33:19 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds)

All times are in UTC.