2025/03/25

2025-03-25 00:01:30 +0100sord937(~sord937@gateway/tor-sasl/sord937) (Quit: sord937)
2025-03-25 00:03:30 +0100iteratee(~kyle@199.119.84.78) (Ping timeout: 272 seconds)
2025-03-25 00:04:14 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds)
2025-03-25 00:05:48 +0100iteratee(~kyle@199.119.84.78) iteratee
2025-03-25 00:07:12 +0100polyphem(~rod@p4fc2c5d1.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
2025-03-25 00:08:44 +0100tromp(~textual@2001:1c00:3487:1b00:e1c2:84b0:caab:9b02) (Ping timeout: 260 seconds)
2025-03-25 00:08:44 +0100 <EvanR> looks like building mueval is going to be fun
2025-03-25 00:11:18 +0100alfiee(~alfiee@user/alfiee) alfiee
2025-03-25 00:12:47 +0100 <EvanR> it builds fine in isolation
2025-03-25 00:12:49 +0100sarna(~sarna@d168-237.icpnet.pl) (Ping timeout: 260 seconds)
2025-03-25 00:14:37 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-03-25 00:15:33 +0100alfiee(~alfiee@user/alfiee) (Ping timeout: 248 seconds)
2025-03-25 00:17:38 +0100szkl(uid110435@id-110435.uxbridge.irccloud.com) szkl
2025-03-25 00:18:31 +0100 <int-e> EvanR: https://github.com/TerenceNg03/mueval/issues/27 may be relevant
2025-03-25 00:19:09 +0100 <int-e> I've *always* patched mueval for lambdabot because it hard-codes a -static link flag and that causes it to be way slower than the dynamic way
2025-03-25 00:19:34 +0100 <EvanR> thx
2025-03-25 00:19:48 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds)
2025-03-25 00:20:53 +0100 <int-e> apart from that lambdabot should be fine with ghc-9.10 as released; ghc-9.12 looked out of reach two months ago (too many dependencies broke for me to try to get it to work)
2025-03-25 00:25:45 +0100 <EvanR> and it needs an environment file
2025-03-25 00:26:18 +0100 <EvanR> I'm on GHC 9.6
2025-03-25 00:28:09 +0100 <mauke> monochrom++ # continuations and stuff
2025-03-25 00:30:25 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-03-25 00:30:34 +0100__monty__(~toonn@user/toonn) (Quit: leaving)
2025-03-25 00:31:36 +0100 <Axman6> monochrom (\r -> r+1)
2025-03-25 00:32:05 +0100 <mauke> .oO( monochrom succ )
2025-03-25 00:33:13 +0100 <Axman6> so rude
2025-03-25 00:35:25 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
2025-03-25 00:37:59 +0100 <Axman6> monochrom (negate . pred . negate)
2025-03-25 00:38:27 +0100 <EvanR> the issues tracker mentions creating a GHC environment file by making a dummy cabal project, listing the needed packages in the build-depends, then running cabal new-build "will create the GHC env file"
2025-03-25 00:38:32 +0100 <EvanR> but I see no such file anywhere
2025-03-25 00:40:04 +0100 <EvanR> or is none of this necessary if you fix the -static thing
2025-03-25 00:40:43 +0100 <geekosaur> cabal (new-)build hasn't done that for a long time, I think; you need to use --package-env=…
2025-03-25 00:44:09 +0100ljdarj(~Thunderbi@user/ljdarj) (Ping timeout: 252 seconds)
2025-03-25 00:46:12 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-03-25 00:46:25 +0100peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) peterbecich
2025-03-25 00:49:15 +0100 <EvanR> cabal build --write-ghc-environment-files=always
2025-03-25 00:49:41 +0100iteratee_(~kyle@199.119.84.78)
2025-03-25 00:50:48 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds)
2025-03-25 00:52:45 +0100 <EvanR> noice... an at least half functional mueval binary
2025-03-25 00:52:54 +0100iteratee(~kyle@199.119.84.78) (Ping timeout: 272 seconds)
2025-03-25 00:56:42 +0100alfiee(~alfiee@user/alfiee) alfiee
2025-03-25 00:57:45 +0100 <EvanR> That explains how lambdabot can evaluate expressions, but how does it infer the types
2025-03-25 00:57:57 +0100 <EvanR> with the :t command
2025-03-25 00:58:06 +0100 <int-e> it uses ghci for that
2025-03-25 01:00:47 +0100sprotte24(~sprotte24@p200300d16f03d500a58d694121a6d0cd.dip0.t-ipconnect.de) (Quit: Leaving)
2025-03-25 01:01:24 +0100alfiee(~alfiee@user/alfiee) (Ping timeout: 260 seconds)
2025-03-25 01:01:33 +0100Tuplanolla(~Tuplanoll@91-159-69-59.elisa-laajakaista.fi) (Quit: Leaving.)
2025-03-25 01:01:59 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-03-25 01:07:14 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds)
2025-03-25 01:13:51 +0100inca(~inca@4-138-135-64.gray-ng.dsl.pinetreenetworks.com) (Ping timeout: 252 seconds)
2025-03-25 01:14:02 +0100 <EvanR> it seems --load-file and GHC_ENVIRONMENT= don't work together, throwing a GhcException "Package environment \".ghc.environment.x86_64-linux-9.6.3\" (specified in GHC_ENVIRONMENT) not found"
2025-03-25 01:14:24 +0100infinity0(~infinity0@pwned.gg) (Ping timeout: 252 seconds)
2025-03-25 01:15:22 +0100inca(~inca@4-138-135-64.gray-ng.dsl.pinetreenetworks.com)
2025-03-25 01:16:27 +0100 <EvanR> and apparently isnt required anymore anyway...
2025-03-25 01:17:45 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-03-25 01:19:51 +0100inca(~inca@4-138-135-64.gray-ng.dsl.pinetreenetworks.com) (Ping timeout: 244 seconds)
2025-03-25 01:20:28 +0100sp1ff(~user@c-67-160-173-55.hsd1.wa.comcast.net) sp1ff
2025-03-25 01:22:09 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex) bitdex
2025-03-25 01:24:34 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds)
2025-03-25 01:24:59 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection)
2025-03-25 01:25:23 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex) bitdex
2025-03-25 01:26:16 +0100statusbot(~statusbot@ec2-34-198-122-184.compute-1.amazonaws.com) (Remote host closed the connection)
2025-03-25 01:26:31 +0100statusbot(~statusbot@ec2-34-198-122-184.compute-1.amazonaws.com) statusbot
2025-03-25 01:26:40 +0100inca(~inca@4-138-135-64.gray-ng.dsl.pinetreenetworks.com)
2025-03-25 01:28:43 +0100PotatoGim(sid99505@id-99505.lymington.irccloud.com) (Ping timeout: 245 seconds)
2025-03-25 01:30:36 +0100PotatoGim(sid99505@lymington.irccloud.com) PotatoGim
2025-03-25 01:32:43 +0100Square(~Square@user/square) Square
2025-03-25 01:34:35 +0100infinity0(~infinity0@pwned.gg) infinity0
2025-03-25 01:35:48 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-03-25 01:38:23 +0100kh0d(~kh0d@212.200.65.82) kh0d
2025-03-25 01:38:28 +0100acidjnk(~acidjnk@p200300d6e71c4f84f984511b1aacfb73.dip0.t-ipconnect.de) (Ping timeout: 268 seconds)
2025-03-25 01:40:56 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 268 seconds)
2025-03-25 01:42:53 +0100kh0d(~kh0d@212.200.65.82) (Ping timeout: 245 seconds)
2025-03-25 01:42:53 +0100peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 245 seconds)
2025-03-25 01:43:26 +0100alfiee(~alfiee@user/alfiee) alfiee
2025-03-25 01:47:49 +0100alfiee(~alfiee@user/alfiee) (Ping timeout: 248 seconds)
2025-03-25 01:51:35 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-03-25 01:53:24 +0100machinedgod(~machinedg@d108-173-18-100.abhsia.telus.net) (Ping timeout: 246 seconds)
2025-03-25 01:54:33 +0100xff0x(~xff0x@2405:6580:b080:900:551a:8945:d45c:6ab4) (Ping timeout: 252 seconds)
2025-03-25 01:56:21 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds)
2025-03-25 02:00:36 +0100sarna(~sarna@d192-22.icpnet.pl) sarna
2025-03-25 02:00:58 +0100dsrt^(~dsrt@c-71-199-187-173.hsd1.ga.comcast.net) (Read error: Connection reset by peer)
2025-03-25 02:01:09 +0100dsrt^(dsrt@c-71-199-187-173.hsd1.ga.comcast.net)
2025-03-25 02:07:06 +0100s3(~s3@user/bn) (Ping timeout: 265 seconds)
2025-03-25 02:07:24 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-03-25 02:12:13 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2025-03-25 02:13:44 +0100kh0d(~kh0d@212.200.65.82) kh0d
2025-03-25 02:18:32 +0100kh0d(~kh0d@212.200.65.82) (Ping timeout: 244 seconds)
2025-03-25 02:23:08 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-03-25 02:23:31 +0100kh0d(~kh0d@212.200.65.82) kh0d
2025-03-25 02:27:53 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds)
2025-03-25 02:29:10 +0100alfiee(~alfiee@user/alfiee) alfiee
2025-03-25 02:33:14 +0100peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) peterbecich
2025-03-25 02:33:18 +0100alfiee(~alfiee@user/alfiee) (Ping timeout: 245 seconds)
2025-03-25 02:35:23 +0100kh0d(~kh0d@212.200.65.82) (Ping timeout: 245 seconds)
2025-03-25 02:38:26 +0100xff0x(~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp)
2025-03-25 02:38:56 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-03-25 02:43:33 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
2025-03-25 02:47:01 +0100szkl(uid110435@id-110435.uxbridge.irccloud.com) (Quit: Connection closed for inactivity)
2025-03-25 02:50:53 +0100kh0d(~kh0d@212.200.65.82) kh0d
2025-03-25 02:53:11 +0100s3(~s3@user/bn) bn
2025-03-25 02:54:43 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-03-25 02:56:15 +0100kh0d(~kh0d@212.200.65.82) (Ping timeout: 244 seconds)
2025-03-25 03:01:13 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds)
2025-03-25 03:02:53 +0100polykernel(~polykerne@user/polykernel) (Remote host closed the connection)
2025-03-25 03:03:45 +0100polykernel(~polykerne@user/polykernel) polykernel
2025-03-25 03:05:33 +0100j1n37-(~j1n37@user/j1n37) (Ping timeout: 244 seconds)
2025-03-25 03:05:57 +0100j1n37(~j1n37@user/j1n37) j1n37
2025-03-25 03:10:29 +0100kh0d(~kh0d@212.200.65.82)
2025-03-25 03:12:45 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-03-25 03:13:53 +0100yaroot(~yaroot@p3747022-ipxg13101souka.saitama.ocn.ne.jp) (Remote host closed the connection)
2025-03-25 03:15:14 +0100alfiee(~alfiee@user/alfiee) alfiee
2025-03-25 03:15:30 +0100emergence(emergence@vm0.max-p.me) (Quit: emergence)
2025-03-25 03:15:34 +0100kh0d(~kh0d@212.200.65.82) (Ping timeout: 260 seconds)
2025-03-25 03:16:38 +0100Garbanzo(~Garbanzo@2602:304:6eac:dc10::2e)
2025-03-25 03:17:08 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
2025-03-25 03:19:33 +0100alfiee(~alfiee@user/alfiee) (Ping timeout: 245 seconds)
2025-03-25 03:23:13 +0100yaroot(~yaroot@2400:4052:ac0:d901:1cf4:2aff:fe51:c04c) yaroot
2025-03-25 03:23:34 +0100emergence(thelounge@vm0.max-p.me) emergence
2025-03-25 03:23:58 +0100zlqrvx(~zlqrvx@101.175.150.247) (Read error: Connection reset by peer)
2025-03-25 03:24:33 +0100zlqrvx(~zlqrvx@2001:8003:8c8b:e00:374a:bdcb:457c:d1e3)
2025-03-25 03:25:14 +0100kh0d(~kh0d@212.200.247.164) kh0d
2025-03-25 03:27:39 +0100euphores(~SASL_euph@user/euphores) (Ping timeout: 260 seconds)
2025-03-25 03:28:09 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-03-25 03:30:23 +0100kh0d(~kh0d@212.200.247.164) (Ping timeout: 245 seconds)
2025-03-25 03:32:56 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
2025-03-25 03:34:06 +0100orslon^(~orslon@c-71-199-187-173.hsd1.ga.comcast.net) (Ping timeout: 252 seconds)
2025-03-25 03:35:14 +0100orslon^(orslon@c-71-199-187-173.hsd1.ga.comcast.net)
2025-03-25 03:35:21 +0100euphores(~SASL_euph@user/euphores) euphores
2025-03-25 03:35:56 +0100emergence(thelounge@vm0.max-p.me) (Quit: emergence)
2025-03-25 03:37:53 +0100peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 245 seconds)
2025-03-25 03:38:51 +0100emergence(thelounge@vm0.max-p.me) emergence
2025-03-25 03:43:35 +0100Aspen55(~Aspen@2a09:bac2:a7f2:1800::264:bb)
2025-03-25 03:43:56 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-03-25 03:45:23 +0100tavare(~tavare@user/tavare) tavare
2025-03-25 03:48:33 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 246 seconds)
2025-03-25 03:51:03 +0100Aspen55(~Aspen@2a09:bac2:a7f2:1800::264:bb) (Quit: Client closed)
2025-03-25 03:58:13 +0100 <haskellbridge> <Liamzee> have we gone over this yet?
2025-03-25 03:58:14 +0100 <haskellbridge> <Liamzee> https://web-frameworks-benchmark.netlify.app/result?asc=0&f=axum,actix,servant&l=haskell&metric=to…
2025-03-25 03:59:43 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-03-25 03:59:46 +0100kh0d(~kh0d@212.200.247.164) kh0d
2025-03-25 04:00:04 +0100glguy(glguy@libera/staff/glguy) (Read error: Connection reset by peer)
2025-03-25 04:00:59 +0100alfiee(~alfiee@user/alfiee) alfiee
2025-03-25 04:01:36 +0100glguy(glguy@libera/staff/glguy) glguy
2025-03-25 04:02:42 +0100 <haskellbridge> <Liamzee> the surprising part is that scotty is beating axum and actix at low scales, when scotty isn't known for its performance
2025-03-25 04:04:27 +0100kh0d(~kh0d@212.200.247.164) (Ping timeout: 244 seconds)
2025-03-25 04:04:27 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
2025-03-25 04:05:01 +0100ChaiTRex(~ChaiTRex@user/chaitrex) (Remote host closed the connection)
2025-03-25 04:05:11 +0100alfiee(~alfiee@user/alfiee) (Ping timeout: 244 seconds)
2025-03-25 04:05:27 +0100ChaiTRex(~ChaiTRex@user/chaitrex) ChaiTRex
2025-03-25 04:09:37 +0100 <haskellbridge> <dmjio> I’d expect servant and Scotty to be the same since they’re both basically warp. A 5x diff is sus
2025-03-25 04:15:31 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-03-25 04:18:07 +0100kh0d(~kh0d@212.200.247.164) kh0d
2025-03-25 04:20:33 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2025-03-25 04:28:50 +0100 <haskellbridge> <Liamzee> yeah. tbh, full disclosure, both get beaten by ookami and microhttp
2025-03-25 04:29:12 +0100 <haskellbridge> <Liamzee> but generally a high performance haskell library should be able to reach 50% of rust, which is just saying web frameworks need love
2025-03-25 04:31:17 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-03-25 04:36:36 +0100peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) peterbecich
2025-03-25 04:36:36 +0100werneta(~werneta@syn-071-083-160-242.res.spectrum.com) werneta
2025-03-25 04:38:23 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds)
2025-03-25 04:40:21 +0100 <haskellbridge> <dmjio> We can just FFI into the fastest C web server
2025-03-25 04:41:48 +0100 <haskellbridge> <dmjio> And use bytestring builder, with some light staging
2025-03-25 04:42:06 +0100 <monochrom> It would also be most buggy.
2025-03-25 04:43:29 +0100 <haskellbridge> <dmjio> I don’t buy that. C still runs the world
2025-03-25 04:44:22 +0100 <monochrom> But do you buy: The glue code you write for FFI adds one more opportunity for bugs?
2025-03-25 04:44:50 +0100 <haskellbridge> <dmjio> Where are all the rust network stacks. TCP/IP is the global highway of information and it’s predominantly in C
2025-03-25 04:44:50 +0100 <monochrom> IMO that's even more buggy than plain C.
2025-03-25 04:45:17 +0100 <haskellbridge> <dmjio> Rust is trying to make its way into the kernel with great difficulty
2025-03-25 04:46:23 +0100alfiee(~alfiee@user/alfiee) alfiee
2025-03-25 04:48:36 +0100 <haskellbridge> <dmjio> It’s too pervasive. Like cobol it’s never going away
2025-03-25 04:49:20 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-03-25 04:50:30 +0100alfiee(~alfiee@user/alfiee) (Ping timeout: 246 seconds)
2025-03-25 04:52:37 +0100Square2(~Square4@user/square) Square
2025-03-25 04:54:03 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
2025-03-25 04:54:19 +0100 <haskellbridge> <dmjio> monochrom do you buy there is an inverse correlation between the most used software and the most correct software
2025-03-25 04:55:48 +0100Square(~Square@user/square) (Ping timeout: 245 seconds)
2025-03-25 04:55:55 +0100 <haskellbridge> <Liamzee> why does it have to be linear
2025-03-25 04:55:59 +0100 <monochrom> Sure.
2025-03-25 05:05:08 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-03-25 05:06:20 +0100 <Axman6> Well, when first looking at that benchmark, the Servant implementation uses String everywhere...
2025-03-25 05:07:20 +0100 <haskellbridge> <dmjio> Until you can make writing Lean as easy and as familiar as JavaScript, I don’t see the situation changing any time soon.
2025-03-25 05:07:22 +0100 <haskellbridge> I am optimistic about Zig though. You have to keep the foot gun accesible.
2025-03-25 05:07:33 +0100 <haskellbridge> <dmjio> Axman6: Someone is sand baggin’ us
2025-03-25 05:08:19 +0100 <haskellbridge> <dmjio> Zig embodies the Berkeley school philosophy which is why it will continue to succeed.
2025-03-25 05:09:46 +0100 <Axman6> Looking at what the servers actually do, I would be surprised if there's heaps of overhead from using String, but there could be some. Changing it to Text should reduce conversions though
2025-03-25 05:09:53 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds)
2025-03-25 05:11:54 +0100 <monochrom> Oh Lean will never be as easy as C. Even Haskell will never be.
2025-03-25 05:12:25 +0100 <monochrom> Haskell or similar languages can be a sweet spot of not too many bugs and not too slow.
2025-03-25 05:14:07 +0100 <monochrom> But we don't even need that for the inverse correlation between most used and most correct, no? Social media has also shown us the inverse correlation between most believed and most correct. Like we need to rationalize that.
2025-03-25 05:20:54 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-03-25 05:25:18 +0100 <haskellbridge> <Liamzee> also re dmjio: it's possible servant breaks the specialization in warp, but i'm not really familiar with warp in terms of its type architecture
2025-03-25 05:27:08 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 272 seconds)
2025-03-25 05:28:34 +0100kh0d(~kh0d@212.200.247.164) (Ping timeout: 260 seconds)
2025-03-25 05:31:47 +0100alfiee(~alfiee@user/alfiee) alfiee
2025-03-25 05:32:19 +0100notdabs(~Owner@2600:1700:69cf:9000:c43:fe75:997:32d7) (Read error: Connection reset by peer)
2025-03-25 05:36:01 +0100 <haskellbridge> <dmjio> Liamzee: It wouldn’t surprise me at all if HasServer dictionaries weren’t getting specialized given the incremental compilation nature of GHC and cross module inlining limitations. But 5x still sounds heavy.
2025-03-25 05:36:29 +0100 <haskellbridge> <dmjio> monochrom: That’s fair.
2025-03-25 05:36:38 +0100alfiee(~alfiee@user/alfiee) (Ping timeout: 272 seconds)
2025-03-25 05:37:43 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-03-25 05:42:40 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds)
2025-03-25 05:44:36 +0100peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 265 seconds)
2025-03-25 05:44:56 +0100aforemny_(~aforemny@2001:9e8:6cde:a00:bd3b:75a2:c3bc:65be) aforemny
2025-03-25 05:45:48 +0100weary-traveler(~user@user/user363627) user363627
2025-03-25 05:46:42 +0100aforemny(~aforemny@2001:9e8:6cc3:cb00:4bbe:2838:488d:a24d) (Ping timeout: 276 seconds)
2025-03-25 05:51:02 +0100 <davean> dmjio that is also a lot of parsing via a lot of type level implied machinery
2025-03-25 05:52:38 +0100jmcantrell(~weechat@user/jmcantrell) (Quit: WeeChat 4.5.2)
2025-03-25 05:53:08 +0100 <haskellbridge> <dmjio> The biggest upfront cost is the first request. The graph reduces and subsequent requests do less work
2025-03-25 05:53:29 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-03-25 05:57:34 +0100kh0d(~kh0d@212.200.247.164) kh0d
2025-03-25 05:57:46 +0100 <haskellbridge> <dmjio> Parsing shouldn’t be any different. Servant handlers operate on an already parsed request, much like Scotty
2025-03-25 05:58:54 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds)
2025-03-25 06:00:58 +0100michalz(~michalz@185.246.207.197)
2025-03-25 06:03:46 +0100inca(~inca@4-138-135-64.gray-ng.dsl.pinetreenetworks.com) (Ping timeout: 248 seconds)
2025-03-25 06:03:48 +0100kh0d(~kh0d@212.200.247.164) (Ping timeout: 244 seconds)
2025-03-25 06:04:16 +0100cross(~cross@spitfire.i.gajendra.net) (Quit: Lost terminal)
2025-03-25 06:05:12 +0100inca(~inca@4-138-135-64.gray-ng.dsl.pinetreenetworks.com)
2025-03-25 06:09:16 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-03-25 06:14:08 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds)
2025-03-25 06:16:32 +0100inca(~inca@4-138-135-64.gray-ng.dsl.pinetreenetworks.com) (Ping timeout: 272 seconds)
2025-03-25 06:16:51 +0100alfiee(~alfiee@user/alfiee) alfiee
2025-03-25 06:16:51 +0100inca(~inca@4-138-135-64.gray-ng.dsl.pinetreenetworks.com)
2025-03-25 06:21:04 +0100alfiee(~alfiee@user/alfiee) (Ping timeout: 244 seconds)
2025-03-25 06:21:25 +0100kh0d(~kh0d@212.200.247.164) kh0d
2025-03-25 06:25:03 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-03-25 06:30:09 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 268 seconds)
2025-03-25 06:31:29 +0100kh0d(~kh0d@212.200.247.164) (Ping timeout: 265 seconds)
2025-03-25 06:40:26 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-03-25 06:45:23 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2025-03-25 06:56:12 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-03-25 07:01:30 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 272 seconds)
2025-03-25 07:01:54 +0100alfiee(~alfiee@user/alfiee) alfiee
2025-03-25 07:02:24 +0100kh0d(~kh0d@212.200.247.164)
2025-03-25 07:06:34 +0100alfiee(~alfiee@user/alfiee) (Ping timeout: 260 seconds)
2025-03-25 07:07:28 +0100kh0d(~kh0d@212.200.247.164) (Ping timeout: 245 seconds)
2025-03-25 07:09:44 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-03-25 07:11:29 +0100peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) peterbecich
2025-03-25 07:13:28 +0100takuan(~takuan@d8D86B601.access.telenet.be)
2025-03-25 07:14:21 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 246 seconds)
2025-03-25 07:16:46 +0100fp(~Thunderbi@wireless-86-50-141-186.open.aalto.fi) fp
2025-03-25 07:18:46 +0100Garbanzo(~Garbanzo@2602:304:6eac:dc10::2e) (Remote host closed the connection)
2025-03-25 07:19:10 +0100Sgeo(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2025-03-25 07:21:00 +0100fp(~Thunderbi@wireless-86-50-141-186.open.aalto.fi) (Ping timeout: 246 seconds)
2025-03-25 07:21:13 +0100kh0d(~kh0d@212.200.247.164) kh0d
2025-03-25 07:21:35 +0100fp(~Thunderbi@2001:708:20:1406::1370) fp
2025-03-25 07:25:30 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-03-25 07:26:06 +0100kh0d(~kh0d@212.200.247.164) (Ping timeout: 265 seconds)
2025-03-25 07:26:39 +0100kh0d(~kh0d@212.200.247.164)
2025-03-25 07:28:35 +0100Unicorn_Princess(~Unicorn_P@user/Unicorn-Princess/x-3540542) (Remote host closed the connection)
2025-03-25 07:30:13 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds)
2025-03-25 07:41:16 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-03-25 07:42:35 +0100petrichor(~znc-user@user/petrichor) (Ping timeout: 252 seconds)
2025-03-25 07:43:03 +0100hattckory(~hattckory@bras-base-toroon4524w-grc-30-70-27-118-207.dsl.bell.ca) (Ping timeout: 276 seconds)
2025-03-25 07:43:13 +0100petrichor(~znc-user@user/petrichor) petrichor
2025-03-25 07:43:59 +0100kh0d(~kh0d@212.200.247.164) (Ping timeout: 265 seconds)
2025-03-25 07:46:58 +0100alfiee(~alfiee@user/alfiee) alfiee
2025-03-25 07:48:10 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
2025-03-25 07:50:17 +0100chele(~chele@user/chele) chele
2025-03-25 07:51:13 +0100alfiee(~alfiee@user/alfiee) (Ping timeout: 245 seconds)
2025-03-25 07:54:08 +0100ThePenguin9(~ThePengui@cust-95-80-24-166.csbnet.se) ThePenguin
2025-03-25 07:54:30 +0100ThePenguin(~ThePengui@cust-95-80-24-166.csbnet.se) (Read error: Connection reset by peer)
2025-03-25 07:54:30 +0100ThePenguin9ThePenguin
2025-03-25 07:57:01 +0100hattckory(~hattckory@bras-base-toroon4524w-grc-30-70-27-118-207.dsl.bell.ca)
2025-03-25 07:59:18 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-03-25 08:00:02 +0100caconym(~caconym@user/caconym) (Quit: bye)
2025-03-25 08:01:01 +0100caconym(~caconym@user/caconym) caconym
2025-03-25 08:03:12 +0100random-jellyfish(~developer@85.50.149.196) random-jellyfish
2025-03-25 08:03:12 +0100random-jellyfish(~developer@85.50.149.196) (Changing host)
2025-03-25 08:03:12 +0100random-jellyfish(~developer@user/random-jellyfish) random-jellyfish
2025-03-25 08:04:19 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds)
2025-03-25 08:09:12 +0100weary-traveler(~user@user/user363627) (Remote host closed the connection)
2025-03-25 08:13:13 +0100peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Quit: peterbecich)
2025-03-25 08:13:40 +0100peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) peterbecich
2025-03-25 08:14:56 +0100Lord_of_Life_(~Lord@user/lord-of-life/x-2819915) Lord_of_Life
2025-03-25 08:15:07 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-03-25 08:15:14 +0100Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Ping timeout: 260 seconds)
2025-03-25 08:16:19 +0100Lord_of_Life_Lord_of_Life
2025-03-25 08:20:32 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 268 seconds)
2025-03-25 08:22:46 +0100sord937(~sord937@gateway/tor-sasl/sord937) sord937
2025-03-25 08:22:49 +0100jcarpenter2(~lol@2603:3016:1e01:b960:d420:7c16:1b3d:a360) (Ping timeout: 260 seconds)
2025-03-25 08:25:05 +0100jcarpenter2(~lol@2603:3016:1e01:b960:842d:fcc5:786c:255c)
2025-03-25 08:27:41 +0100kh0d(~kh0d@212.200.247.164)
2025-03-25 08:30:54 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-03-25 08:31:44 +0100JuanDaugherty(~juan@user/JuanDaugherty) JuanDaugherty
2025-03-25 08:32:03 +0100kh0d(~kh0d@212.200.247.164) (Ping timeout: 245 seconds)
2025-03-25 08:32:23 +0100alfiee(~alfiee@user/alfiee) alfiee
2025-03-25 08:33:54 +0100p3n(~p3n@2a00:19a0:3:7c:0:d9c6:7cf6:1) (Quit: ZNC 1.9.1 - https://znc.in)
2025-03-25 08:35:48 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds)
2025-03-25 08:35:54 +0100tavare(~tavare@user/tavare) (Remote host closed the connection)
2025-03-25 08:36:38 +0100alfiee(~alfiee@user/alfiee) (Ping timeout: 245 seconds)
2025-03-25 08:46:07 +0100JuanDaugherty(~juan@user/JuanDaugherty) (Quit: praxis.meansofproduction.biz (juan@acm.org))
2025-03-25 08:46:30 +0100p3n(~p3n@2a00:19a0:3:7c:0:d9c6:7cf6:1) p3n
2025-03-25 08:46:43 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-03-25 08:50:08 +0100cipherrot(~znc-user@user/petrichor) petrichor
2025-03-25 08:50:55 +0100lortabac(~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) lortabac
2025-03-25 08:51:25 +0100peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 244 seconds)
2025-03-25 08:51:31 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2025-03-25 08:53:19 +0100petrichor(~znc-user@user/petrichor) (Ping timeout: 260 seconds)
2025-03-25 08:55:25 +0100CiaoSen(~Jura@2a02:8071:64e1:da0:5a47:caff:fe78:33db) CiaoSen
2025-03-25 08:58:04 +0100acidjnk(~acidjnk@p200300d6e71c4f24c8a043139ebe92bd.dip0.t-ipconnect.de) acidjnk
2025-03-25 08:59:34 +0100machinedgod(~machinedg@d108-173-18-100.abhsia.telus.net) machinedgod
2025-03-25 09:02:31 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-03-25 09:04:01 +0100hattckory(~hattckory@bras-base-toroon4524w-grc-30-70-27-118-207.dsl.bell.ca) (Ping timeout: 248 seconds)
2025-03-25 09:07:28 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds)
2025-03-25 09:08:48 +0100puke(~puke@user/puke) (Remote host closed the connection)
2025-03-25 09:09:40 +0100tzh(~tzh@c-76-115-131-146.hsd1.or.comcast.net) (Quit: zzz)
2025-03-25 09:10:44 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-03-25 09:13:37 +0100puke(~puke@user/puke) puke
2025-03-25 09:15:29 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
2025-03-25 09:17:35 +0100kh0d(~kh0d@212.200.247.164) kh0d
2025-03-25 09:17:47 +0100alfiee(~alfiee@user/alfiee) alfiee
2025-03-25 09:22:35 +0100alfiee(~alfiee@user/alfiee) (Ping timeout: 265 seconds)
2025-03-25 09:26:25 +0100fp1(~Thunderbi@2001:708:150:10::1d80) fp
2025-03-25 09:28:22 +0100fp(~Thunderbi@2001:708:20:1406::1370) (Ping timeout: 268 seconds)
2025-03-25 09:28:27 +0100fp1fp
2025-03-25 09:34:19 +0100kh0d(~kh0d@212.200.247.164) (Read error: Connection timed out)
2025-03-25 09:35:58 +0100kh0d(~kh0d@212.200.247.164)
2025-03-25 09:39:27 +0100hattckory(~hattckory@bras-base-toroon4524w-grc-30-70-27-118-207.dsl.bell.ca)
2025-03-25 09:43:40 +0100fp1(~Thunderbi@2001:708:20:1406::1370) fp
2025-03-25 09:44:05 +0100fp(~Thunderbi@2001:708:150:10::1d80) (Ping timeout: 248 seconds)
2025-03-25 09:44:05 +0100fp1fp
2025-03-25 09:44:36 +0100hattckory(~hattckory@bras-base-toroon4524w-grc-30-70-27-118-207.dsl.bell.ca) (Ping timeout: 276 seconds)
2025-03-25 09:54:03 +0100merijn(~merijn@77.242.116.146) merijn
2025-03-25 10:01:34 +0100kh0d(~kh0d@212.200.247.164) (Ping timeout: 260 seconds)
2025-03-25 10:02:50 +0100alfiee(~alfiee@user/alfiee) alfiee
2025-03-25 10:07:32 +0100alfiee(~alfiee@user/alfiee) (Ping timeout: 265 seconds)
2025-03-25 10:14:25 +0100petrichor(~znc-user@user/petrichor) petrichor
2025-03-25 10:17:41 +0100cipherrot(~znc-user@user/petrichor) (Ping timeout: 248 seconds)
2025-03-25 10:21:27 +0100pavonia(~user@user/siracusa) (Quit: Bye!)
2025-03-25 10:26:52 +0100kuribas(~user@2a02:1808:43:dbd9:6ca7:205b:89ae:6340) kuribas
2025-03-25 10:30:21 +0100jcarpenter2(~lol@2603:3016:1e01:b960:842d:fcc5:786c:255c) (Ping timeout: 246 seconds)
2025-03-25 10:31:40 +0100hattckory(~hattckory@bras-base-toroon4524w-grc-30-70-27-118-207.dsl.bell.ca)
2025-03-25 10:32:23 +0100jcarpenter2(~lol@96.78.87.197)
2025-03-25 10:32:59 +0100merijn(~merijn@77.242.116.146) (Ping timeout: 244 seconds)
2025-03-25 10:33:26 +0100lxsameer(~lxsameer@Serene/lxsameer) lxsameer
2025-03-25 10:35:45 +0100hattckory(~hattckory@bras-base-toroon4524w-grc-30-70-27-118-207.dsl.bell.ca) (Ping timeout: 248 seconds)
2025-03-25 10:35:49 +0100cipherrot(~znc-user@user/petrichor) petrichor
2025-03-25 10:36:49 +0100petrichor(~znc-user@user/petrichor) (Ping timeout: 244 seconds)
2025-03-25 10:38:35 +0100fp(~Thunderbi@2001:708:20:1406::1370) (Ping timeout: 252 seconds)
2025-03-25 10:42:44 +0100ash3en(~Thunderbi@89.56.182.235) ash3en
2025-03-25 10:43:02 +0100werneta(~werneta@syn-071-083-160-242.res.spectrum.com) (Read error: Connection reset by peer)
2025-03-25 10:43:12 +0100hattckory(~hattckory@bras-base-toroon4524w-grc-30-70-27-118-207.dsl.bell.ca)
2025-03-25 10:44:06 +0100humasect(~humasect@dyn-192-249-132-2.nexicom.net) humasect
2025-03-25 10:45:43 +0100merijn(~merijn@77.242.116.146) merijn
2025-03-25 10:46:48 +0100werneta(~werneta@syn-071-083-160-242.res.spectrum.com) werneta
2025-03-25 10:48:10 +0100ft(~ft@p508db463.dip0.t-ipconnect.de) (Quit: leaving)
2025-03-25 10:49:30 +0100cipherrot(~znc-user@user/petrichor) (Ping timeout: 272 seconds)
2025-03-25 10:49:34 +0100alfiee(~alfiee@user/alfiee) alfiee
2025-03-25 10:51:56 +0100petrichor(~znc-user@user/petrichor) petrichor
2025-03-25 10:52:29 +0100merijn(~merijn@77.242.116.146) (Ping timeout: 265 seconds)
2025-03-25 10:53:09 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex) (Read error: Connection reset by peer)
2025-03-25 10:53:10 +0100ChaiTRex(~ChaiTRex@user/chaitrex) (Remote host closed the connection)
2025-03-25 10:53:10 +0100califax(~califax@user/califx) (Remote host closed the connection)
2025-03-25 10:53:27 +0100califax(~califax@user/califx) califx
2025-03-25 10:53:38 +0100ChaiTRex(~ChaiTRex@user/chaitrex) ChaiTRex
2025-03-25 10:53:51 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex) bitdex
2025-03-25 10:54:34 +0100alfiee(~alfiee@user/alfiee) (Ping timeout: 272 seconds)
2025-03-25 10:54:50 +0100fp(~Thunderbi@130.233.70.95) fp
2025-03-25 10:56:29 +0100merijn(~merijn@77.242.116.146) merijn
2025-03-25 10:58:40 +0100ubert(~Thunderbi@2a02:8109:ab8a:5a00:102d:f23f:3d0e:5609) ubert
2025-03-25 10:58:57 +0100JuanDaugherty(~juan@user/JuanDaugherty) JuanDaugherty
2025-03-25 11:01:55 +0100merijn(~merijn@77.242.116.146) (Ping timeout: 244 seconds)
2025-03-25 11:03:41 +0100merijn(~merijn@77.242.116.146) merijn
2025-03-25 11:09:32 +0100kh0d(~kh0d@212.200.247.164) kh0d
2025-03-25 11:12:43 +0100kh0d(~kh0d@212.200.247.164) (Remote host closed the connection)
2025-03-25 11:18:37 +0100tabaqui(~tabaqui@167.71.80.236) tabaqui
2025-03-25 11:20:20 +0100kh0d(~kh0d@212.200.247.164) kh0d
2025-03-25 11:24:49 +0100merijn(~merijn@77.242.116.146) (Ping timeout: 248 seconds)
2025-03-25 11:24:58 +0100kh0d(~kh0d@212.200.247.164) (Ping timeout: 245 seconds)
2025-03-25 11:27:03 +0100cipherrot(~znc-user@user/petrichor) petrichor
2025-03-25 11:28:46 +0100petrichor(~znc-user@user/petrichor) (Ping timeout: 272 seconds)
2025-03-25 11:29:08 +0100xff0x(~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp) (Ping timeout: 245 seconds)
2025-03-25 11:34:38 +0100alfiee(~alfiee@user/alfiee) alfiee
2025-03-25 11:35:03 +0100ash3en(~Thunderbi@89.56.182.235) (Ping timeout: 252 seconds)
2025-03-25 11:36:40 +0100merijn(~merijn@77.242.116.146) merijn
2025-03-25 11:39:07 +0100alfiee(~alfiee@user/alfiee) (Ping timeout: 244 seconds)
2025-03-25 11:39:40 +0100ash3en(~Thunderbi@89.56.182.235) ash3en
2025-03-25 11:49:00 +0100JuanDaugherty(~juan@user/JuanDaugherty) (Quit: praxis.meansofproduction.biz (juan@acm.org))
2025-03-25 11:49:02 +0100fp(~Thunderbi@130.233.70.95) (Ping timeout: 265 seconds)
2025-03-25 11:49:07 +0100FragByte(~christian@user/fragbyte) (Quit: Quit)
2025-03-25 11:49:43 +0100kh0d(~kh0d@212.200.247.164) kh0d
2025-03-25 11:51:02 +0100FragByte(~christian@user/fragbyte) FragByte
2025-03-25 11:51:45 +0100dhil(~dhil@2a0c:b381:52e:3600:4562:2dab:a736:76b0) dhil
2025-03-25 11:52:33 +0100ash3en(~Thunderbi@89.56.182.235) (Ping timeout: 244 seconds)
2025-03-25 11:54:19 +0100kh0d(~kh0d@212.200.247.164) (Ping timeout: 244 seconds)
2025-03-25 11:55:42 +0100machinedgod(~machinedg@d108-173-18-100.abhsia.telus.net) (Quit: leaving)
2025-03-25 11:57:29 +0100machinedgod(~machinedg@d108-173-18-100.abhsia.telus.net) machinedgod
2025-03-25 12:00:05 +0100caconym(~caconym@user/caconym) (Quit: bye)
2025-03-25 12:02:16 +0100caconym(~caconym@user/caconym) caconym
2025-03-25 12:04:27 +0100yaroot(~yaroot@2400:4052:ac0:d901:1cf4:2aff:fe51:c04c) (Read error: Connection reset by peer)
2025-03-25 12:04:41 +0100yaroot(~yaroot@p3747022-ipxg13101souka.saitama.ocn.ne.jp) yaroot
2025-03-25 12:16:52 +0100j1n37-(~j1n37@user/j1n37) j1n37
2025-03-25 12:17:03 +0100j1n37(~j1n37@user/j1n37) (Ping timeout: 244 seconds)
2025-03-25 12:20:03 +0100alfiee(~alfiee@user/alfiee) alfiee
2025-03-25 12:24:02 +0100xff0x(~xff0x@2405:6580:b080:900:f588:30f2:ad44:5069)
2025-03-25 12:24:37 +0100alfiee(~alfiee@user/alfiee) (Ping timeout: 248 seconds)
2025-03-25 12:26:36 +0100kuribas`(~user@ip-188-118-57-242.reverse.destiny.be) kuribas
2025-03-25 12:28:21 +0100kuribas(~user@2a02:1808:43:dbd9:6ca7:205b:89ae:6340) (Ping timeout: 248 seconds)
2025-03-25 12:29:57 +0100orslon^(orslon@c-71-199-187-173.hsd1.ga.comcast.net) (Ping timeout: 248 seconds)
2025-03-25 12:30:04 +0100orslon^(dehsou@c-71-199-187-173.hsd1.ga.comcast.net)
2025-03-25 12:32:08 +0100merijn(~merijn@77.242.116.146) (Ping timeout: 268 seconds)
2025-03-25 12:36:06 +0100wootehfoot(~wootehfoo@user/wootehfoot) wootehfoot
2025-03-25 12:36:41 +0100humasect(~humasect@dyn-192-249-132-2.nexicom.net) (Quit: Leaving...)
2025-03-25 12:43:17 +0100lortabac(~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) (Ping timeout: 248 seconds)
2025-03-25 12:44:19 +0100merijn(~merijn@77.242.116.146) merijn
2025-03-25 12:46:36 +0100hattckory(~hattckory@bras-base-toroon4524w-grc-30-70-27-118-207.dsl.bell.ca) (Ping timeout: 276 seconds)
2025-03-25 12:50:24 +0100kh0d(~kh0d@212.200.247.164) kh0d
2025-03-25 12:51:23 +0100merijn(~merijn@77.242.116.146) (Ping timeout: 265 seconds)
2025-03-25 12:56:00 +0100lortabac(~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4)
2025-03-25 12:56:49 +0100merijn(~merijn@77.242.116.146) merijn
2025-03-25 12:57:02 +0100 <[exa]> gah, is there some easily rememberable rule of thumb for monad transformer order? I.e., how to instinctively know whether one wants `StateT s Parser` or `ParserT (State s)`
2025-03-25 12:57:16 +0100 <[exa]> I always have to look at the implementation to just be sure
2025-03-25 12:59:59 +0100pdw(~user@215.156.62.185.bridgefibre.net) pdw
2025-03-25 13:04:24 +0100 <tomsmeding> @unmtl
2025-03-25 13:04:24 +0100 <lambdabot> err: Parse error: ;
2025-03-25 13:05:26 +0100alfiee(~alfiee@user/alfiee) alfiee
2025-03-25 13:06:29 +0100 <[exa]> tomsmeding: yeah that's what I kinda do in head and want to have a shortcut around it
2025-03-25 13:07:16 +0100 <tomsmeding> it's still doing the same thing in the end, but you can think about the eliminator functions: if you have a StateT s Parser, then you'll runStateT and get something in the Parser monad
2025-03-25 13:07:27 +0100 <tomsmeding> whereas if you have a ParserT (State s), you'll run the parser and get something in the state monad back
2025-03-25 13:07:46 +0100 <tomsmeding> this indirectly tells you what the actual semantics of your stack is
2025-03-25 13:08:01 +0100 <tomsmeding> without having to look at the precise implementation of the monad data types
2025-03-25 13:09:04 +0100 <tomsmeding> this is most clear with State and Except -- with StateT s (Except e), you run the state monad and then get an Except out, i.e. you get a state irrespective of whether there was an exception
2025-03-25 13:09:28 +0100 <tomsmeding> with ExceptT e (State s), you run the ExceptT to _maybe_ get a State out
2025-03-25 13:09:40 +0100 <tomsmeding> @unmtl ExceptT e (State s)
2025-03-25 13:09:40 +0100 <lambdabot> err: `ExceptT e (State s)' is not applied to enough arguments, giving `/\A. s -> (Either e A, s)'
2025-03-25 13:09:42 +0100 <tomsmeding> @unmtl ExceptT e (State s) a
2025-03-25 13:09:42 +0100 <lambdabot> s -> (Either e a, s)
2025-03-25 13:09:48 +0100 <tomsmeding> I'm wrong
2025-03-25 13:09:53 +0100 <tomsmeding> disregard all that I say
2025-03-25 13:09:54 +0100kh0d(~kh0d@212.200.247.164) (Remote host closed the connection)
2025-03-25 13:09:57 +0100 <[exa]> you see, it's friggin confusing
2025-03-25 13:09:59 +0100alfiee(~alfiee@user/alfiee) (Ping timeout: 260 seconds)
2025-03-25 13:10:03 +0100tomsmedinghides in a corner
2025-03-25 13:10:28 +0100 <[exa]> technically you were right but it just does the other thing
2025-03-25 13:10:32 +0100 <[exa]> I think
2025-03-25 13:10:43 +0100 <tomsmeding> there's a trick I found out a while ago: if you're okay with accessing your monad through mtl classes, then you can use DerivingVia to document what you're doing
2025-03-25 13:11:13 +0100 <tomsmeding> newtype M a = M (s -> (Either e a, s)) deriving (Functor, Applicative, Monad, MonadState s, MonadExcept e) via (ExceptT e (State s) a)
2025-03-25 13:11:55 +0100 <tomsmeding> you don't have to write the methods, but you also get compiler-checked documentation of wtf your monad is actually doing (namely, that type inside the M)
2025-03-25 13:12:38 +0100 <tomsmeding> if you don't need the mtl methods, then honestly just write out the monad manually, using transformers just makes the thing more opaque
2025-03-25 13:13:02 +0100 <[exa]> yeah I see
2025-03-25 13:13:39 +0100 <tomsmeding> [exa]: right, the correct version was: if you have a `MT N a`, then the first eliminator goes `MT N a -> N (M a)`
2025-03-25 13:14:02 +0100 <[exa]> that's ok
2025-03-25 13:15:53 +0100 <[exa]> kinda trying to find the trick that tells the students if the State will get reset by Parser or not. in this case I guess N(M a) says kinda "N dominates M" so the M will get reset if e.g. N backtracks... and now I hope that's right.
2025-03-25 13:16:31 +0100 <tomsmeding> it's rather important whether it's `N (M a)` or `NT M a`
2025-03-25 13:16:38 +0100 <tomsmeding> they behave differently
2025-03-25 13:16:55 +0100 <tomsmeding> case in point:
2025-03-25 13:16:57 +0100kh0d(~kh0d@212.200.247.164)
2025-03-25 13:17:02 +0100 <tomsmeding> @unmtl ExceptT e (State s) a
2025-03-25 13:17:02 +0100 <lambdabot> s -> (Either e a, s)
2025-03-25 13:17:08 +0100 <tomsmeding> this looks a lot like State s (Either e a)
2025-03-25 13:18:11 +0100 <tomsmeding> I can't help you, sorry
2025-03-25 13:18:17 +0100fp(~Thunderbi@130.233.70.95) fp
2025-03-25 13:19:50 +0100__monty__(~toonn@user/toonn) toonn
2025-03-25 13:22:04 +0100 <EvanR> I'm crippled because the first thing I read about monads was on wikipedia where it stated "writing monad definitions directly is difficult"
2025-03-25 13:22:23 +0100 <EvanR> so now it's difficult forever and I have to rely on transformers xD
2025-03-25 13:22:30 +0100 <tomsmeding> it's the only thing that's actually understandable
2025-03-25 13:22:33 +0100 <int-e> @src forever
2025-03-25 13:22:33 +0100 <lambdabot> forever a = let a' = a >> a' in a'
2025-03-25 13:22:55 +0100 <tomsmeding> EvanR: reinvent all the monads, dig yourself deep into NIH and rewrite all the basic monads
2025-03-25 13:22:59 +0100 <tomsmeding> then you'll understand monads
2025-03-25 13:23:12 +0100 <EvanR> I can write the individual rogues gallery of monads
2025-03-25 13:23:32 +0100 <int-e> EvanR: May I suggest a dose of "You Could Have Invented Monads (And Maybe You Already Have)"?
2025-03-25 13:23:41 +0100 <EvanR> but combining them to get what a combination of transformers would produce
2025-03-25 13:24:18 +0100 <tomsmeding> the trick is to understand why the individual monad implementations do what they do, e.g. why `s -> (a, s)` makes _sense_ as a state monad
2025-03-25 13:24:25 +0100 <haskellbridge> <maerwald> monad stacks are OOP
2025-03-25 13:24:26 +0100 <tomsmeding> then if you want a combination, write the underlying function that does that
2025-03-25 13:24:42 +0100 <tomsmeding> then write the Functor, Applicative, Monad instances for that
2025-03-25 13:24:42 +0100 <[exa]> tomsmeding: yeah maybe I should just draw a very clean picture that the types get flipped when they have the T in them
2025-03-25 13:24:56 +0100 <[exa]> maerwald: nooooooooooooooooooo
2025-03-25 13:24:56 +0100 <int-e> The monad concept is *very* abstract. Work with the instances.
2025-03-25 13:25:06 +0100kh0d(~kh0d@212.200.247.164) (Remote host closed the connection)
2025-03-25 13:25:43 +0100 <EvanR> it's ridiculous because, despite the claim on 2005 wikipedia, writing individual monad instances isn't very difficult at all. You almost can't mess up
2025-03-25 13:25:56 +0100 <EvanR> because of the types
2025-03-25 13:26:26 +0100 <haskellbridge> <maerwald> Yes, OOP is characterized by clouded control flow and side effect stacked on top of each other. That's exactly what transformers do.
2025-03-25 13:27:04 +0100 <haskellbridge> <maerwald> but we celebrate the "bind" interface and label the whole thing as pure
2025-03-25 13:27:40 +0100 <haskellbridge> <maerwald> no one cares about ergonomics and if your average engineer can actually reason about what happens during execution (don't come with denotational semantics)
2025-03-25 13:27:47 +0100 <EvanR> I wish OOP was as easy as transformers xD
2025-03-25 13:27:47 +0100 <tomsmeding> maerwald: are you complaining about monad transformer stacks like `StateT s (Except e)`, or also about manually-written monads like `newtype M a = M (s -> (Either e a, s))`
2025-03-25 13:27:58 +0100 <haskellbridge> <maerwald> all of it
2025-03-25 13:28:01 +0100 <int-e> EvanR: Well that's assuming you understand types. Those are to-tally inscrutible too and make EVERYBODY™'s eyes bleed.
2025-03-25 13:30:48 +0100kh0d(~kh0d@212.200.247.164) kh0d
2025-03-25 13:32:58 +0100 <haskellbridge> <Liamzee> maerwald: deep-stacked monad transformers have been known to be a code-smell since like 2011, 2015 at the latest
2025-03-25 13:33:06 +0100 <haskellbridge> <Liamzee> maerwald:
2025-03-25 13:33:56 +0100 <haskellbridge> <Liamzee> at least because of O(n) performance penalties in bind
2025-03-25 13:34:29 +0100hattckory(~hattckory@70.27.118.207)
2025-03-25 13:35:15 +0100 <EvanR> log n improvement in time to market though, similar to "just write a bunch of python code real fast and ship it"
2025-03-25 13:35:26 +0100 <EvanR> don't worry about what happens down the road
2025-03-25 13:35:50 +0100 <haskellbridge> <Liamzee> afaik isn't that the point of the free monads crowd?
2025-03-25 13:36:15 +0100 <haskellbridge> <Liamzee> i.e, shouldn't free monad interpreter beat mtl in terms of ergonomics?