2025/11/07

Newest at the top

2025-11-07 21:41:37 +0100DetourNetworkUK(~DetourNet@user/DetourNetworkUK) DetourNetworkUK
2025-11-07 21:41:37 +0100 <Leary> Re multi-result functions, I don't know, but I doubt there's a nice way.
2025-11-07 21:41:19 +0100target_i(~target_i@user/target-i/x-6023099) target_i
2025-11-07 21:41:04 +0100 <Leary> tomsmeding: A spoonful of sugar helps the medicine go down. I won't talk you out of sweetening the pot. :)
2025-11-07 21:38:23 +0100 <tomsmeding> no autoformatter in my code
2025-11-07 21:38:07 +0100 <monochrom> OK the original "foo \i -", don't indent, "bar \j ->" is the simplest, if there is no auto-indenter or draconic style checker getting in the way.
2025-11-07 21:37:31 +0100 <tomsmeding> Leary: required additional thing in the ContDo module: class AlwaysFail a; instance TypeError (Text "fail") => AlwaysFail a; fail :: AlwaysFail a => String -> a; fail = error
2025-11-07 21:36:27 +0100 <tomsmeding> the cost is having to tuple the continuations for everything, and a wacky thing that everyone will do a double-take on
2025-11-07 21:35:54 +0100 <monochrom> "Once you've seen it, you can't unseen it" >:)
2025-11-07 21:35:52 +0100 <tomsmeding> nah this has only one real advantage: the binders are always on the left-hand side, instead of sometimes on the left and sometimes on the right
2025-11-07 21:35:24 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
2025-11-07 21:34:37 +0100 <tomsmeding> Leary: now I'm seriously considering using this, talk me out of it
2025-11-07 21:33:54 +0100 <tomsmeding> (this case has the advantage of most of the functions actually having data types defined for them)
2025-11-07 21:33:37 +0100trickard_trickard
2025-11-07 21:33:24 +0100 <tomsmeding> but only if you bundle the Refls together into tuples, otherwise it's 15
2025-11-07 21:33:15 +0100 <tomsmeding> ok 11
2025-11-07 21:33:13 +0100 <tomsmeding> [exa]: https://git.tomsmeding.com/chad-fast/tree/src/CHAD.hs?id=38150f4f9792156d8c59439fe47ecb69a0a0e00b#… lines 878, 879, 880, 882, 884, 886, 887-888, 897, 900-903, 907, 908
2025-11-07 21:32:20 +0100 <monochrom> Haha "what's the difference between do-notation and guards?"
2025-11-07 21:32:11 +0100 <tomsmeding> [exa]: I have a case in this file with 12
2025-11-07 21:31:51 +0100 <monochrom> OK yeah we need dependent pairs yeah.
2025-11-07 21:31:50 +0100DetourNetworkUK(DetourNetw@user/DetourNetworkUK) ()
2025-11-07 21:31:37 +0100 <tomsmeding> monochrom: don't even need the Identity, in fact https://play.haskell.org/saved/clzWP2pe
2025-11-07 21:31:00 +0100 <monochrom> Anyway please turn on BlockArguments >:)
2025-11-07 21:30:32 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-11-07 21:30:26 +0100 <monochrom> Actually "foo :: Int -> E" and "E x1 f1 <- Identity (foo n)" is simpler.
2025-11-07 21:30:20 +0100 <[exa]> well, there's 10 levels of indentation on the table
2025-11-07 21:29:49 +0100 <tomsmeding> [exa]: do you seriously think that a wacky utterly-not-a-monad QualifiedDo thing is better than nested wrapper functions
2025-11-07 21:29:11 +0100 <tomsmeding> once you have a data type no more cruft is necessary
2025-11-07 21:28:59 +0100 <tomsmeding> monochrom: https://play.haskell.org/saved/VMQbllqc :p
2025-11-07 21:27:18 +0100 <[exa]> Leary: ok turns out the QualifiedDo completely solves my previous concerns, thanks again :D
2025-11-07 21:27:11 +0100 <monochrom> Here is the worst of both worlds, just for laughs: https://play.haskell.org/saved/YfoP6M4d
2025-11-07 21:23:58 +0100machinedgod(~machinedg@d75-159-126-101.abhsia.telus.net) (Ping timeout: 265 seconds)
2025-11-07 21:20:29 +0100 <tomsmeding> Leary: it doesn't seem possible to write a generic adaptor for two-result functions like my original 'foo' to one-result functions, right?
2025-11-07 21:20:24 +0100[exa]discovers QualifiedDo
2025-11-07 21:19:29 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
2025-11-07 21:17:49 +0100Googulator11(~Googulato@team.broadbit.hu) (Ping timeout: 250 seconds)
2025-11-07 21:14:45 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-11-07 21:13:03 +0100Googulator34(~Googulato@team.broadbit.hu) (Ping timeout: 250 seconds)
2025-11-07 21:12:03 +0100 <EvanR> how I learned to stop worrying and love ImpredicativeTypes
2025-11-07 21:11:46 +0100 <monochrom> heh
2025-11-07 21:11:45 +0100 <tomsmeding> what makes it better is that that type for >>= is completely different from what >>= is normally supposed to be
2025-11-07 21:11:28 +0100 <EvanR> because of that I'm now using ImpredicativeTypes everywhere
2025-11-07 21:10:50 +0100Googulator11(~Googulato@team.broadbit.hu)
2025-11-07 21:10:44 +0100Googulator13(~Googulato@team.broadbit.hu) (Client Quit)
2025-11-07 21:10:20 +0100 <monochrom> Intreresting
2025-11-07 21:10:05 +0100 <tomsmeding> oh that's delightful
2025-11-07 21:09:27 +0100lisbeths(uid135845@id-135845.lymington.irccloud.com) lisbeths
2025-11-07 21:09:09 +0100 <Leary> tomsmeding: https://paste.tomsmeding.com/phEkL7cc
2025-11-07 21:09:09 +0100Googulator53(~Googulato@team.broadbit.hu) (Ping timeout: 250 seconds)
2025-11-07 21:09:08 +0100Googulator13(~Googulato@team.broadbit.hu)