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?
2025-03-25 13:37:19 +0100 <haskellbridge> <maerwald> Free monads have bad performance
2025-03-25 13:37:44 +0100kh0d(~kh0d@212.200.247.164) (Remote host closed the connection)
2025-03-25 13:37:51 +0100 <EvanR> there's freeer monad
2025-03-25 13:37:56 +0100 <EvanR> which has some optimizations
2025-03-25 13:38:04 +0100 <haskellbridge> <maerwald> eff was supposed to fix it, but Alexis probably will never finish it
2025-03-25 13:38:55 +0100 <haskellbridge> <magic_rb> Delim conts have some fundamental issues when used within effect systems iirc
2025-03-25 13:39:41 +0100 <haskellbridge> <magic_rb> The current fastest way is either "Reader IO a" or "effectful" which is exactly a "Reader IO a". Risk is you might confuse GHC
2025-03-25 13:40:31 +0100 <haskellbridge> <Liamzee> did you guys take a look at nammayatri?
2025-03-25 13:41:13 +0100 <haskellbridge> <Liamzee> granin seems to have made himself the foremost proponent of free monad interpreters because of his aggressive sell and his work at juspay
2025-03-25 13:41:37 +0100 <haskellbridge> <Liamzee> https://github.com/nammayatri/nammayatri
2025-03-25 13:41:48 +0100 <haskellbridge> <magic_rb> Free monads will be always slow afaiu so their a no go for me
2025-03-25 13:41:54 +0100hattckory(~hattckory@70.27.118.207) (Ping timeout: 260 seconds)
2025-03-25 13:42:25 +0100 <int-e> EvanR: exercise: relate https://hackage.haskell.org/package/MonadPrompt-1.0.0.5/docs/Control-Monad-Prompt.html#t:Prompt and freeer monads
2025-03-25 13:43:03 +0100 <haskellbridge> <Liamzee> i'm not sure if nammayatri used free monads, though
2025-03-25 13:44:44 +0100 <EvanR> what is the airspeed velocity of a free monad
2025-03-25 13:45:13 +0100 <EvanR> int-e, in the middle of writing a teletype like free monad now!
2025-03-25 13:45:36 +0100hattckory(~hattckory@bras-base-toroon4524w-grc-30-70-27-118-207.dsl.bell.ca)
2025-03-25 13:45:44 +0100kh0d(~kh0d@212.200.247.164) kh0d
2025-03-25 13:48:36 +0100merijn(~merijn@77.242.116.146) (Ping timeout: 268 seconds)
2025-03-25 13:49:52 +0100 <EvanR> I did it and the code looks nothing like free or freer
2025-03-25 13:50:01 +0100 <int-e> TBH I'm just a tad sad that the idea of expressing an API as a GADT seems to be forgotten. (See the example on https://hackage.haskell.org/package/MonadPrompt-1.0.0.5/docs/Control-Monad-Prompt.html ). Free monads do get you the same functionality but you have to work a tad harder.
2025-03-25 13:50:34 +0100kh0d(~kh0d@212.200.247.164) (Ping timeout: 244 seconds)
2025-03-25 13:50:41 +0100jespada(~jespada@2800:a4:229c:8a00:e032:2eec:bdbe:deac) jespada
2025-03-25 13:50:57 +0100hattckory(~hattckory@bras-base-toroon4524w-grc-30-70-27-118-207.dsl.bell.ca) (Ping timeout: 276 seconds)
2025-03-25 13:51:00 +0100 <EvanR> https://paste.tomsmeding.com/pmd8nbPr
2025-03-25 13:51:51 +0100jespada(~jespada@2800:a4:229c:8a00:e032:2eec:bdbe:deac) (Client Quit)
2025-03-25 13:52:59 +0100kh0d(~kh0d@212.200.247.164) kh0d
2025-03-25 13:52:59 +0100 <tomsmeding> int-e: it looks to me like that Prompt monad just factors out the commonalities between most (all?) free monads -- the Pure constructor and the continuations on all the effect constructors
2025-03-25 13:53:02 +0100 <int-e> that would be data Tele a where { Put :: Char -> Tele (); Get :: Tele Char }
2025-03-25 13:53:17 +0100 <tomsmeding> (and it's CPS-transformed to make it less readable)
2025-03-25 13:53:27 +0100 <tomsmeding> (and presumably faster)
2025-03-25 13:53:34 +0100 <int-e> tomsmeding: yeah. it *also* predates the popularization of free monads
2025-03-25 13:53:35 +0100alfiee(~alfiee@user/alfiee) alfiee
2025-03-25 13:53:40 +0100 <tomsmeding> I see
2025-03-25 13:54:28 +0100 <EvanR> and then what, use another data structure to represent the nesting structure
2025-03-25 13:54:48 +0100 <EvanR> I thought it was an exercise in "writing the monad instance directly" xD
2025-03-25 13:55:13 +0100 <tomsmeding> that exercise stands, and you're doing well with Tele :p
2025-03-25 13:55:24 +0100 <EvanR> oh you're doing the GADT version
2025-03-25 13:56:09 +0100machinedgod(~machinedg@d108-173-18-100.abhsia.telus.net) (Quit: leaving)
2025-03-25 13:56:45 +0100jespada(~jespada@2800:a4:229c:8a00:e032:2eec:bdbe:deac) jespada
2025-03-25 13:57:00 +0100machinedgod(~machinedg@d108-173-18-100.abhsia.telus.net) machinedgod
2025-03-25 13:57:06 +0100 <tomsmeding> EvanR: now do nondeterminism ([a]), state (s -> (a, s)), exceptions (Either e a), parsers (String -> Either e (String, a))
2025-03-25 13:57:12 +0100hattckory(~hattckory@bras-base-toroon4524w-grc-30-70-27-118-207.dsl.bell.ca)
2025-03-25 13:57:13 +0100 <EvanR> the data type Tele a reminds me of the [Maybe a] from the Stack thing yesterday
2025-03-25 13:57:27 +0100 <int-e> IIRC the relation is that a prompt descriptor (is that a good term?) `P a` translates to the functor `F b = forall a. (a, P a -> b)` for use in a free monad construction.
2025-03-25 13:57:32 +0100 <EvanR> instead of the structure it's the commands
2025-03-25 13:58:14 +0100alfiee(~alfiee@user/alfiee) (Ping timeout: 272 seconds)
2025-03-25 14:00:05 +0100merijn(~merijn@77.242.116.146) merijn
2025-03-25 14:00:07 +0100 <int-e> Pretty sure that was it. And you can specialize the freeer monad type for that shape of functor and optimize it a little and get the definition that MonadPrompt uses.
2025-03-25 14:01:16 +0100 <int-e> err I'm stupid
2025-03-25 14:01:28 +0100 <int-e> It's `F b = forall a. (P a, a -> b)`
2025-03-25 14:01:45 +0100 <tomsmeding> that feels better, yeah
2025-03-25 14:01:56 +0100 <tomsmeding> I was having doubts but I wasn't sure how to fix it
2025-03-25 14:01:58 +0100 <int-e> The danger of trying to remember things :-)
2025-03-25 14:02:25 +0100 <tomsmeding> the values in the P constructors are the outputs of the effect, the type index is the input for its continuation (the reply)
2025-03-25 14:02:28 +0100 <[exa]> tomsmeding: ohhhhhhhhhhhh I found a rule of thumb!
2025-03-25 14:02:44 +0100 <tomsmeding> s/outputs/inputs/
2025-03-25 14:02:44 +0100 <[exa]> tomsmeding: "you can't reset IO", which is why IO is always the last thing in stack
2025-03-25 14:02:46 +0100 <tomsmeding> lol
2025-03-25 14:03:19 +0100weary-traveler(~user@user/user363627) user363627
2025-03-25 14:03:21 +0100 <tomsmeding> [exa]: so inner things can run outer things strangely (reset, run multiple times, etc.) but outer things cannot influence inner things?
2025-03-25 14:03:23 +0100 <Leary> int-e: AKA `Coyoneda P`.
2025-03-25 14:04:05 +0100 <[exa]> tomsmeding: roughly.
2025-03-25 14:04:15 +0100 <tomsmeding> [exa]: NT M a runs into M (N a), so AT (BT (CT M)) a in the end runs in M
2025-03-25 14:04:23 +0100 <haskellbridge> <alexfmpe> int-e: https://hackage.haskell.org/package/reflex-gadt-api
2025-03-25 14:05:10 +0100ash3en(~Thunderbi@89.56.182.235) ash3en
2025-03-25 14:05:18 +0100 <tomsmeding> [exa]: I like
2025-03-25 14:05:20 +0100 <haskellbridge> <alexfmpe> (specialized for reflex-dom, just pointing out gadt api isn't quite forgotten)
2025-03-25 14:06:01 +0100 <int-e> alexfmpe: Oh, nice :)
2025-03-25 14:08:31 +0100kh0d(~kh0d@212.200.247.164) (Remote host closed the connection)
2025-03-25 14:10:07 +0100 <Leary> Some effect systems like 'effectful' are also effectively reviving these "GADT API"; e.g. https://hackage.haskell.org/package/effectful-core-2.5.1.0/docs/Effectful-Dispatch-Dynamic.html
2025-03-25 14:11:08 +0100kh0d(~kh0d@212.200.247.164)
2025-03-25 14:12:20 +0100 <EvanR> inner and outer "things"?
2025-03-25 14:12:27 +0100 <EvanR> I have another rule of thumb
2025-03-25 14:12:30 +0100 <EvanR> burritos
2025-03-25 14:12:54 +0100 <tomsmeding> everyone who seriously suggests burritos are a good monad intuition are actually burritos themselves
2025-03-25 14:13:32 +0100 <EvanR> and in light of yesterday's discussion of stacks
2025-03-25 14:13:39 +0100 <EvanR> "last in the stack" could mean anything
2025-03-25 14:14:08 +0100 <EvanR> due to your interpretation function producing the opposite order of instructions and LTR RTL language issues
2025-03-25 14:14:17 +0100 <tomsmeding> the "inner" and "outer" here referred to monad transformer stacks like StateT s (ExceptT e IO) a
2025-03-25 14:14:27 +0100 <EvanR> ok now that's a burrito
2025-03-25 14:14:29 +0100 <tomsmeding> where StateT is the outer and IO is the inner
2025-03-25 14:14:37 +0100 <tomsmeding> I think that's fairly unambiguous
2025-03-25 14:14:46 +0100 <EvanR> yes but what is last
2025-03-25 14:14:46 +0100 <int-e> Leary: hmm the example looks dubious (where does m come from?)
2025-03-25 14:14:52 +0100 <EvanR> "innermost"
2025-03-25 14:14:53 +0100 <tomsmeding> EvanR: no one said "last" here
2025-03-25 14:14:55 +0100 <int-e> Leary: but I see what you mean
2025-03-25 14:14:57 +0100 <EvanR> scroll up lol
2025-03-25 14:15:10 +0100 <tomsmeding> oh I see
2025-03-25 14:15:21 +0100 <tomsmeding> okay that last was "inner"
2025-03-25 14:15:46 +0100 <EvanR> the innermost layer of burritos can't be reset
2025-03-25 14:15:58 +0100 <int-e> oh nm
2025-03-25 14:16:14 +0100 <int-e> each value can come with its own m
2025-03-25 14:16:51 +0100 <Leary> Yes, it's just a little higher-order tweak on the same idea.
2025-03-25 14:20:14 +0100 <haskellbridge> <Liamzee> actually, StateT case is sort of confused, no?
2025-03-25 14:20:55 +0100 <tomsmeding> EvanR: case in point why burritos are not appropriate here: if you have StateT s IO a, then even though IO is arguably the "inner" monad here, it's actually the IO burrito that contains the State burrito
2025-03-25 14:20:59 +0100 <tomsmeding> @unmtl StateT s IO a
2025-03-25 14:20:59 +0100 <lambdabot> s -> IO (a, s)
2025-03-25 14:21:23 +0100 <tomsmeding> see, if you just write out `s -> IO (a, s)` all is clear
2025-03-25 14:21:43 +0100 <haskellbridge> <Liamzee> ummmm
2025-03-25 14:22:04 +0100 <EvanR> IO is the crunchy outer layer of the purely functional program burrito, so it's just that the "stack" is upside down
2025-03-25 14:22:22 +0100 <haskellbridge> <Liamzee> IO (s -> (a, s)), s -> (IO a, s)
2025-03-25 14:22:45 +0100 <haskellbridge> <Liamzee> in the case provided by lambdabot, is IO beneath state or is state beneath IO?
2025-03-25 14:22:59 +0100 <tomsmeding> that's up to the blog post writer
2025-03-25 14:23:24 +0100 <EvanR> is the real version of StateT s IO a more like lambdabot or more like Liamzee
2025-03-25 14:23:29 +0100 <tomsmeding> to wit, neither of the options that Liamzee just gave are particularly useful in practice
2025-03-25 14:23:32 +0100 <haskellbridge> <Liamzee> it's lambdabot
2025-03-25 14:23:40 +0100 <EvanR> oh it's two versions from Liamzee
2025-03-25 14:23:48 +0100 <tomsmeding> lambdabot just expands the newtypes
2025-03-25 14:23:54 +0100 <haskellbridge> <Liamzee> i just came up with some nonsense versions to try to illustrate
2025-03-25 14:24:10 +0100 <EvanR> I guess we need to complete all the possibilities
2025-03-25 14:24:12 +0100 <haskellbridge> <Liamzee> how ridiculous the notion of outside and inside can be with some of these monad transformers
2025-03-25 14:24:14 +0100 <EvanR> s -> (a, IO s)
2025-03-25 14:24:17 +0100 <haskellbridge> <Liamzee> you have a data dependency on state
2025-03-25 14:24:22 +0100 <tomsmeding> > newtype StateT s m a = StateT { runStateT :: s -> m (a,s) }
2025-03-25 14:24:33 +0100 <haskellbridge> <Liamzee> then IO wraps the output (a, s) pair
2025-03-25 14:24:40 +0100CiaoSen(~Jura@2a02:8071:64e1:da0:5a47:caff:fe78:33db) (Ping timeout: 244 seconds)
2025-03-25 14:24:52 +0100 <tomsmeding> Liamzee: I agree re ridiculousness of inside/outside, but the original question was about intuition about monad transformer stacks _without_ expanding their definitions
2025-03-25 14:25:03 +0100 <EvanR> "IO wraps the pair" ok now I'm losing it with the burrito analogy, I feel like that might be off the farm
2025-03-25 14:25:06 +0100 <tomsmeding> and as long as you keep the newtypes unexpanded, there's a clear outer/inner in your source text
2025-03-25 14:25:17 +0100 <tomsmeding> even if, operationally, things go weirdly inside out
2025-03-25 14:25:18 +0100 <EvanR> the IO type wraps the product type yes, as far as the types go
2025-03-25 14:25:56 +0100 <haskellbridge> <Liamzee> sorry
2025-03-25 14:26:10 +0100 <EvanR> inside outside is also getting confused more when you get MonadBaseControl which calls the innermost "the base"
2025-03-25 14:26:12 +0100 <EvanR> (I think)
2025-03-25 14:26:25 +0100 <EvanR> is the base inside or outside the building
2025-03-25 14:26:30 +0100 <EvanR> or tower
2025-03-25 14:26:38 +0100kh0d(~kh0d@212.200.247.164) (Ping timeout: 245 seconds)
2025-03-25 14:26:49 +0100 <EvanR> it's underneath that's for sure
2025-03-25 14:26:50 +0100 <tomsmeding> the "right-hand side" of `let x = a in b` is in the middle
2025-03-25 14:27:00 +0100 <tomsmeding> and the "body" is on the right
2025-03-25 14:27:27 +0100 <tomsmeding> the physical analogy only goes so far
2025-03-25 14:27:41 +0100 <tomsmeding> it's counterproductive to try to stretch it to its limits
2025-03-25 14:27:53 +0100 <haskellbridge> <Liamzee> i guess that's why people say monad transformers are confusing, because the type wrapping of IO doesn't follow the operational wrapping
2025-03-25 14:28:10 +0100 <tomsmeding> not just with IO, that goes for most (all?) monad transformers
2025-03-25 14:28:15 +0100 <tomsmeding> IO is not special here
2025-03-25 14:28:18 +0100 <EvanR> MonadBaseControl would have you believe your "stack" is "based" on IO. But by the previous discussion your program underworld is hanging from the IO planetary crust!
2025-03-25 14:28:29 +0100 <EvanR> I reject "wrapping"
2025-03-25 14:28:35 +0100 <EvanR> because it sounds like values
2025-03-25 14:28:41 +0100kh0d(~kh0d@212.200.247.164) kh0d
2025-03-25 14:28:53 +0100 <EvanR> x, [x], [[x]], [[[x]]]
2025-03-25 14:28:56 +0100 <EvanR> more wrapping
2025-03-25 14:29:06 +0100 <tomsmeding> just expand all the newtypes and write the underlying function directly, dispense with this discussion
2025-03-25 14:29:09 +0100 <EvanR> but people are probably talking about the type constructors
2025-03-25 14:30:02 +0100 <EvanR> https://paste.tomsmeding.com/NAB9RiFP
2025-03-25 14:30:40 +0100 <haskellbridge> <Liamzee> yeah afaik, monad trans makes no sense without looking at the type definition, i don't think there's a simple rule to predict what the real construction is like until you see it
2025-03-25 14:31:02 +0100 <EvanR> I couldn't call Empty "Nil" no matter how hard I tried. And I wanted to call this type NonDeterm but it was too long and numerous
2025-03-25 14:31:19 +0100 <tomsmeding> what prevented "Nil"?
2025-03-25 14:31:29 +0100 <EvanR> I kept typing Empty into the definitions
2025-03-25 14:31:34 +0100 <tomsmeding> ah :p
2025-03-25 14:31:38 +0100 <EvanR> so eventually I just changed the constructor to Empty
2025-03-25 14:31:49 +0100 <tomsmeding> if you define Semigroup and Monoid instances then you can type 'mempty' instead
2025-03-25 14:32:02 +0100 <tomsmeding> and with an Alternative instance, it could even be 'empty'
2025-03-25 14:32:19 +0100 <EvanR> but it's being pattern matched, does it work as a pattern
2025-03-25 14:32:24 +0100 <tomsmeding> ah, no
2025-03-25 14:32:32 +0100 <EvanR> probably for the best
2025-03-25 14:34:08 +0100 <tomsmeding> EvanR: if you put the 'empty' pattern-matching case last, i.e. after the Cons case, then it does work
2025-03-25 14:34:11 +0100 <tomsmeding> just ignore the GHC warning
2025-03-25 14:34:29 +0100 <EvanR> lol
2025-03-25 14:34:51 +0100 <EvanR> gratuitous newtype
2025-03-25 14:35:05 +0100bliminse(~bliminse@user/bliminse) bliminse
2025-03-25 14:35:10 +0100 <EvanR> new NonDeterm a = NonDeterm { getPossibilities :: [a] }
2025-03-25 14:35:19 +0100kuribas`(~user@ip-188-118-57-242.reverse.destiny.be) (Quit: ERC 5.5.0.29.1 (IRC client for GNU Emacs 29.3))
2025-03-25 14:35:41 +0100kuribas(~user@ip-188-118-57-242.reverse.destiny.be) kuribas
2025-03-25 14:37:17 +0100 <EvanR> so you're saying you can combine this monad with others
2025-03-25 14:37:46 +0100 <EvanR> s -> [IO (a, s)]
2025-03-25 14:37:50 +0100kh0d(~kh0d@212.200.247.164) (Remote host closed the connection)
2025-03-25 14:38:07 +0100 <EvanR> what did I just do
2025-03-25 14:38:21 +0100 <tomsmeding> actually, the proper monad transformer for [a] is rather tricky
2025-03-25 14:38:22 +0100kh0d(~kh0d@212.200.247.164) kh0d
2025-03-25 14:38:38 +0100 <tomsmeding> you can write what you just did, but it doesn't work well
2025-03-25 14:38:49 +0100 <tomsmeding> https://hackage.haskell.org/package/list-t-1.0.5.7/docs/ListT.html
2025-03-25 14:38:51 +0100Shsl-Junko-POSER(~Shsl-Junk@50.235.208.178)
2025-03-25 14:39:20 +0100 <kuribas> mixing backtracking with IO also is dangerous...
2025-03-25 14:39:23 +0100 <tomsmeding> to understand what's going on there, note that `data KindOfAList a = KindOfAList (Maybe (a, KindOfAList a))` is essentially equivalent to [a]
2025-03-25 14:40:52 +0100 <EvanR> what is the run function
2025-03-25 14:41:19 +0100alfiee(~alfiee@user/alfiee) alfiee
2025-03-25 14:41:29 +0100 <EvanR> uncons :: ListT m a -> m (Maybe (a, ListT m a))
2025-03-25 14:41:59 +0100 <tomsmeding> the run function of what?
2025-03-25 14:43:03 +0100kh0d(~kh0d@212.200.247.164) (Ping timeout: 244 seconds)
2025-03-25 14:43:10 +0100cheater(~Username@user/cheater) cheater
2025-03-25 14:43:23 +0100 <EvanR> @unmtl ListT (State s) a
2025-03-25 14:43:23 +0100 <lambdabot> s -> ([] a, s)
2025-03-25 14:43:50 +0100 <EvanR> @unmtl StateT [] a
2025-03-25 14:43:50 +0100 <lambdabot> err: `StateT [] a' is not applied to enough arguments, giving `/\A. [] -> a (A, [])'
2025-03-25 14:43:55 +0100 <EvanR> @unmtl StateT [] s a
2025-03-25 14:43:55 +0100 <lambdabot> [] -> s (a, [])
2025-03-25 14:44:15 +0100 <EvanR> squint
2025-03-25 14:44:25 +0100 <EvanR> [s -> (a, [])] ?
2025-03-25 14:44:43 +0100 <EvanR> no
2025-03-25 14:44:59 +0100 <EvanR> [] is the wrong kind
2025-03-25 14:45:56 +0100kh0d(~kh0d@212.200.247.164)
2025-03-25 14:45:57 +0100alfiee(~alfiee@user/alfiee) (Ping timeout: 268 seconds)
2025-03-25 14:47:38 +0100 <tomsmeding> @unmtl StateT s [] a
2025-03-25 14:47:38 +0100 <lambdabot> s -> [] (a, s)
2025-03-25 14:48:06 +0100 <tomsmeding> the "inner monad" is always the penultimate argument, to fit the kind of MonadTrans
2025-03-25 14:48:14 +0100ash3en(~Thunderbi@89.56.182.235) (Quit: ash3en)
2025-03-25 14:49:04 +0100ash3en(~Thunderbi@89.56.182.235) ash3en
2025-03-25 14:49:19 +0100 <EvanR> oh [] was a datakind I guess
2025-03-25 14:49:35 +0100 <EvanR> gotta love it
2025-03-25 14:50:07 +0100 <EvanR> the more stuff the compiler accepts the less able it is to notice your nonsense
2025-03-25 14:51:19 +0100 <EvanR> implementing s -> [] (a, s)
2025-03-25 14:51:24 +0100 <EvanR> monad instance
2025-03-25 14:51:29 +0100kh0d(~kh0d@212.200.247.164) (Remote host closed the connection)
2025-03-25 14:52:29 +0100 <tomsmeding> lambdabot's @unmtl is not smart enough for DataKinds, it just does dumb parsing I think
2025-03-25 14:52:47 +0100 <tomsmeding> it knows `F a b c` as data types, so it translates `[a]` to `[] a` before doing anything
2025-03-25 14:52:56 +0100 <tomsmeding> if the result doesn't kind check, that's up to the user
2025-03-25 14:53:20 +0100 <tomsmeding> rather, if your _input_ to @unmtl doesn't kind check, then garbage-in garbage-out
2025-03-25 14:54:32 +0100 <EvanR> lovely
2025-03-25 14:54:51 +0100 <int-e> I suspect that it barely knows that [] is a type constructor
2025-03-25 14:55:08 +0100 <int-e> @unmtl RWST a a a a a
2025-03-25 14:55:08 +0100 <lambdabot> a -> a -> a (a, a, a)
2025-03-25 14:55:22 +0100 <tomsmeding> @unmtl StateT StateT StateT StateT
2025-03-25 14:55:22 +0100 <lambdabot> err: `StateT' is not applied to enough arguments, giving `/\A B C. A -> B (C, A)'
2025-03-25 14:55:24 +0100 <tomsmeding> oh
2025-03-25 14:55:47 +0100 <tomsmeding> @unmtl StateT F F F
2025-03-25 14:55:47 +0100 <lambdabot> F -> F (F, F)
2025-03-25 14:56:01 +0100 <int-e> Oh, right, it will know the arity of the known MTL transformers.
2025-03-25 15:00:18 +0100jespada(~jespada@2800:a4:229c:8a00:e032:2eec:bdbe:deac) (Ping timeout: 272 seconds)
2025-03-25 15:03:10 +0100kh0d(~kh0d@212.200.247.164) kh0d
2025-03-25 15:03:33 +0100jespada(~jespada@2800:a4:22ac:eb00:e45c:1f6c:60ff:fb6b) jespada
2025-03-25 15:06:00 +0100Shsl-Junko-POSER(~Shsl-Junk@50.235.208.178) (Quit: Client closed)
2025-03-25 15:06:21 +0100 <EvanR> ok guess I should have done State before doing list state
2025-03-25 15:06:37 +0100 <EvanR> maybe wikipedia was right
2025-03-25 15:07:27 +0100 <tomsmeding> EvanR: the issue is more that [] doesn't lend itself well to making a transformer version
2025-03-25 15:07:32 +0100 <int-e> EvanR: try to get Cont r a right the first time
2025-03-25 15:07:41 +0100 <tomsmeding> State, Except, Reader, Parser etc. work much better as transformers
2025-03-25 15:07:44 +0100 <int-e> first try, that is
2025-03-25 15:08:10 +0100kh0d(~kh0d@212.200.247.164) (Ping timeout: 265 seconds)
2025-03-25 15:08:27 +0100 <EvanR> continuations. I know this </jurassicpark>
2025-03-25 15:10:26 +0100haetsal(~quassel@221.138.168.192) (Remote host closed the connection)
2025-03-25 15:11:14 +0100haetsal(~quassel@221.138.168.192)
2025-03-25 15:13:58 +0100cipherrot(~znc-user@user/petrichor) (Quit: ZNC 1.8.2 - https://znc.in)
2025-03-25 15:19:12 +0100petrichor(~znc-user@user/petrichor) petrichor
2025-03-25 15:24:44 +0100zungi(~tory@user/andrewchawk) andrewchawk
2025-03-25 15:27:24 +0100alfiee(~alfiee@user/alfiee) alfiee
2025-03-25 15:30:08 +0100rvalue(~rvalue@user/rvalue) (Read error: Connection reset by peer)
2025-03-25 15:30:39 +0100rvalue(~rvalue@user/rvalue) rvalue
2025-03-25 15:32:12 +0100 <pdw> bgamari: In case you missed the date typo at https://www.haskell.org/ghc/, Latest News there lists the recent 9.12.2 release under "14 Mar 2024" (i.e. not '25). The 9.12.2 download page also has "released 14th Mar 2024".
2025-03-25 15:32:12 +0100alfiee(~alfiee@user/alfiee) (Ping timeout: 268 seconds)
2025-03-25 15:32:27 +0100kh0d(~kh0d@212.200.247.164)
2025-03-25 15:33:31 +0100JuanDaugherty(~juan@user/JuanDaugherty) JuanDaugherty
2025-03-25 15:35:45 +0100Square2(~Square4@user/square) (Ping timeout: 244 seconds)
2025-03-25 15:36:13 +0100acidjnk(~acidjnk@p200300d6e71c4f24c8a043139ebe92bd.dip0.t-ipconnect.de) (Ping timeout: 245 seconds)
2025-03-25 15:37:03 +0100kh0d(~kh0d@212.200.247.164) (Ping timeout: 252 seconds)
2025-03-25 15:38:17 +0100jmcantrell(~weechat@user/jmcantrell) jmcantrell
2025-03-25 15:45:19 +0100Square(~Square@user/square) Square
2025-03-25 15:45:28 +0100 <mauke> 9.6.7 doesn't even exist exist
2025-03-25 15:45:35 +0100 <mauke> s/exist$/yet/
2025-03-25 15:45:48 +0100 <tomsmeding> yes it does
2025-03-25 15:45:55 +0100 <tomsmeding> since, like, yesterday
2025-03-25 15:46:24 +0100 <mauke> not according to the official website
2025-03-25 15:46:31 +0100 <EvanR> shadow versions
2025-03-25 15:46:34 +0100 <mauke> there's no release announcement
2025-03-25 15:46:44 +0100 <tomsmeding> it was on the mailing list and it's in ghcup
2025-03-25 15:47:17 +0100kh0d(~kh0d@212.200.247.164) kh0d
2025-03-25 15:47:18 +0100 <mauke> the "secret menu"
2025-03-25 15:48:22 +0100 <tomsmeding> other things were also forgotten apparently https://mail.haskell.org/pipermail/ghc-devs/2025-March/021956.html
2025-03-25 15:48:24 +0100 <JuanDaugherty> ghcup doesn wait or smoke test or nuthin?
2025-03-25 15:48:36 +0100 <tomsmeding> it was released and ghcup does smoke test
2025-03-25 15:48:41 +0100 <tomsmeding> it just wasn't posted on haskell.org
2025-03-25 15:49:08 +0100 <JuanDaugherty> makes sense h,o be slow
2025-03-25 15:49:14 +0100 <tomsmeding> there have also been release candidates and the maintainer of ghcup is aware of those, including what the actual difference is between the release candidates and the final release
2025-03-25 15:49:37 +0100 <tomsmeding> if nothing changed between the final RC and the actual release, and the RC was already smoke tested, one doesn't need to wait
2025-03-25 15:50:28 +0100 <haskellbridge> <maerwald> 9.6.7 release manager is in the hospital
2025-03-25 15:50:48 +0100 <haskellbridge> <maerwald> So there might be some rough corners regarding release process
2025-03-25 15:51:18 +0100 <tomsmeding> :/
2025-03-25 15:52:34 +0100ezzieyguywuf(~Unknown@user/ezzieyguywuf) (Quit: Lost terminal)
2025-03-25 15:53:20 +0100 <haskellbridge> <maerwald> JuanDaugherty: Wait for what?
2025-03-25 15:53:22 +0100 <haskellbridge> <maerwald> Myself?
2025-03-25 15:53:31 +0100CiaoSen(~Jura@2a02:8071:64e1:da0:5a47:caff:fe78:33db) CiaoSen
2025-03-25 15:53:51 +0100vanishingideal(~vanishing@user/vanishingideal) (Ping timeout: 252 seconds)
2025-03-25 15:54:19 +0100 <JuanDaugherty> haskellbridge <maerwald> y not
2025-03-25 15:55:03 +0100ezzieyguywuf(~Unknown@user/ezzieyguywuf) ezzieyguywuf
2025-03-25 15:55:05 +0100 <haskellbridge> <maerwald> Release announcement went to: ghc-releases, discourse, haskell-cafe and the #haskell-releases:matrix.org channel
2025-03-25 15:56:06 +0100 <haskellbridge> <maerwald> Smoke tests are here https://github.com/haskell/ghcup-metadata/actions/runs/14034851759
2025-03-25 15:56:09 +0100 <JuanDaugherty> i'm good with 9.6.6, just making convo; is something juicy in the new old branch?
2025-03-25 15:56:14 +0100kh0d(~kh0d@212.200.247.164) (Ping timeout: 260 seconds)
2025-03-25 15:56:43 +0100acidjnk(~acidjnk@p200300d6e71c4f24c8a043139ebe92bd.dip0.t-ipconnect.de) acidjnk
2025-03-25 15:56:50 +0100 <haskellbridge> <maerwald> 9.6.6 has a kqueue bug
2025-03-25 15:57:08 +0100 <JuanDaugherty> good to know, ty
2025-03-25 15:57:29 +0100 <JuanDaugherty> for like sparks ans stuff?
2025-03-25 15:57:36 +0100 <JuanDaugherty> *and
2025-03-25 15:57:41 +0100 <haskellbridge> <maerwald> https://downloads.haskell.org/ghc/9.6.7/docs/users_guide/9.6.7-notes.html
2025-03-25 15:57:52 +0100 <haskellbridge> <maerwald> FreeBSD is known to trigger it
2025-03-25 15:58:14 +0100 <JuanDaugherty> but not linux?
2025-03-25 15:58:41 +0100 <JuanDaugherty> (even better to know its on bumfuc OS)
2025-03-25 15:59:06 +0100 <haskellbridge> <maerwald> Check the release notes
2025-03-25 15:59:57 +0100kh0d(~kh0d@212.200.247.164) kh0d
2025-03-25 16:00:11 +0100 <EvanR> FreeBumfucSD?
2025-03-25 16:00:48 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 264 seconds)
2025-03-25 16:01:15 +0100werneta(~werneta@syn-071-083-160-242.res.spectrum.com) (Ping timeout: 252 seconds)
2025-03-25 16:02:43 +0100 <EvanR> birkhoff Basic Geometry 3rd edition is annoying right here: the definition of locus is a figure which includes all the points that satisfy a given condition (or conditions) and no other points. Then regards this as an if and only if, with one direction going "if a point satisfies the condition, it's on the locus"
2025-03-25 16:03:28 +0100 <JuanDaugherty> reviewing that reminded me of how sbcl is always fixin stuff that isn broke in the better cls
2025-03-25 16:03:33 +0100 <EvanR> Then it goes on to prove the converse "if a point satisfies the condition, it lies on the locus" by using "The indirect method. For suppose that the condition is not true..."
2025-03-25 16:04:02 +0100 <EvanR> I'm like that is evident directly from the definition why are you using an indirect method lol
2025-03-25 16:05:43 +0100Square(~Square@user/square) (Ping timeout: 244 seconds)
2025-03-25 16:06:03 +0100 <EvanR> I wrote that backwards
2025-03-25 16:06:14 +0100 <EvanR> the converse is "if a point lies on the locus, it satisfies the condition"
2025-03-25 16:06:30 +0100 <EvanR> which if locus was a GADT-like thing with constructor OnLocus :: x:Point -> c:Condition x -> Locus c x
2025-03-25 16:06:35 +0100 <EvanR> you would already know that
2025-03-25 16:06:42 +0100kh0d(~kh0d@212.200.247.164) (Ping timeout: 246 seconds)
2025-03-25 16:08:01 +0100ChaiTRex(~ChaiTRex@user/chaitrex) (Remote host closed the connection)
2025-03-25 16:08:25 +0100ChaiTRex(~ChaiTRex@user/chaitrex) ChaiTRex
2025-03-25 16:09:26 +0100ash3en(~Thunderbi@89.56.182.235) (Quit: ash3en)
2025-03-25 16:12:21 +0100kh0d(~kh0d@212.200.247.164)
2025-03-25 16:13:48 +0100alfiee(~alfiee@user/alfiee) alfiee
2025-03-25 16:17:53 +0100alfiee(~alfiee@user/alfiee) (Ping timeout: 245 seconds)
2025-03-25 16:19:49 +0100kh0d(~kh0d@212.200.247.164) (Remote host closed the connection)
2025-03-25 16:20:37 +0100kh0d(~kh0d@212.200.247.164) kh0d
2025-03-25 16:33:15 +0100JuanDaugherty(~juan@user/JuanDaugherty) (Quit: praxis.meansofproduction.biz (juan@acm.org))
2025-03-25 16:33:42 +0100 <haskellbridge> <Liamzee> question about this code
2025-03-25 16:33:45 +0100 <haskellbridge> <Liamzee> https://github.com/nammayatri/nammayatri/blob/main/Backend/app/provider-platform/dynamic-offer-dri…
2025-03-25 16:34:01 +0100 <haskellbridge> <Liamzee> does sendSMS not actually use its where clause?
2025-03-25 16:34:13 +0100 <haskellbridge> <Liamzee> I mean, it calls handler, but I don't think it actually uses the other elements?
2025-03-25 16:38:25 +0100 <mauke> {..} can hide many secrets
2025-03-25 16:39:01 +0100Adeon(sid418992@id-418992.lymington.irccloud.com) (Ping timeout: 248 seconds)
2025-03-25 16:39:12 +0100 <haskellbridge> <Liamzee> yeah, that's what I'm assuming
2025-03-25 16:40:03 +0100Adeon(sid418992@id-418992.lymington.irccloud.com) Adeon
2025-03-25 16:40:46 +0100 <EvanR> what does Sms.SmsHandler {..} mean on the right hand side
2025-03-25 16:40:53 +0100 <EvanR> I've seen {..} in a pattern
2025-03-25 16:41:14 +0100 <haskellbridge> <Liamzee> https://ghc.gitlab.haskell.org/ghc/doc/users_guide/exts/record_wildcards.html
2025-03-25 16:41:17 +0100 <mauke> same thing as in a pattern, but backwards
2025-03-25 16:41:39 +0100 <haskellbridge> <Liamzee> i'm guessing it's somehow allowing the where names to override items
2025-03-25 16:41:43 +0100 <haskellbridge> <Liamzee> interesting technique
2025-03-25 16:41:52 +0100ash3en(~Thunderbi@89.56.182.235) ash3en
2025-03-25 16:42:17 +0100kh0d(~kh0d@212.200.247.164) (Quit: Leaving...)
2025-03-25 16:42:29 +0100 <mauke> not much to override if there's nothing there in the first place
2025-03-25 16:44:06 +0100 <EvanR> that is some weird syntax
2025-03-25 16:44:15 +0100 <haskellbridge> <Liamzee> sloccount says it's 290k lines, 250k lines haskell
2025-03-25 16:44:19 +0100 <haskellbridge> <Liamzee> Juspay, very interesting app
2025-03-25 16:44:39 +0100 <haskellbridge> <Liamzee> https://github.com/nammayatri/nammayatri
2025-03-25 16:45:29 +0100 <EvanR> another way to "not repeat yourself" in Foo {a=a, b=b, c=c} is RecordPuns
2025-03-25 16:46:02 +0100 <EvanR> then at least it doesn't seem to be spooky action at a distance
2025-03-25 16:46:32 +0100 <haskellbridge> <Liamzee> they could actually just inline the damn thing
2025-03-25 16:46:57 +0100 <EvanR> that would be too easy to read
2025-03-25 16:53:30 +0100 <haskellbridge> <Liamzee> speaking of galapagos haskell
2025-03-25 16:53:32 +0100 <haskellbridge> <Liamzee> https://so.gitee.com/?q=haskell
2025-03-25 16:54:02 +0100 <haskellbridge> <Liamzee> apparently, #1, China has a policy of supporting FOSS, #2, Gitee is the approved Chinese FOSS repo, #3, you have to be approved by censors before your code posts
2025-03-25 16:55:18 +0100notdabs(~Owner@2600:1700:69cf:9000:5812:4103:61ba:7880)
2025-03-25 16:56:15 +0100 <haskellbridge> <Liamzee> not sure how mature this package is
2025-03-25 16:56:17 +0100 <haskellbridge> <Liamzee> https://gitee.com/flyingsheeplp/mynes
2025-03-25 17:00:13 +0100alfiee(~alfiee@user/alfiee) alfiee
2025-03-25 17:02:46 +0100user363627(~user@user/user363627) user363627
2025-03-25 17:03:19 +0100weary-traveler(~user@user/user363627) (Ping timeout: 260 seconds)
2025-03-25 17:04:51 +0100 <haskellbridge> <terrorjack> haskell jp community is like a 10x larger galapagos
2025-03-25 17:05:00 +0100 <haskellbridge> <terrorjack> https://haskell.jp
2025-03-25 17:05:02 +0100 <haskellbridge> <Liamzee> you saw my XHS posting, right?
2025-03-25 17:05:04 +0100alfiee(~alfiee@user/alfiee) (Ping timeout: 272 seconds)
2025-03-25 17:05:08 +0100 <haskellbridge> <terrorjack> nah
2025-03-25 17:05:36 +0100 <haskellbridge> <Liamzee> i mean Kazu Yamamoto is like maintaining the network packages
2025-03-25 17:05:52 +0100 <haskellbridge> <Liamzee> and of course, what's his name, mr "implemented goto via free monads"
2025-03-25 17:05:54 +0100 <haskellbridge> <terrorjack> oh wait, you're the guy asking about typeable etc?
2025-03-25 17:06:02 +0100 <haskellbridge> <Liamzee> ;_;
2025-03-25 17:06:14 +0100 <haskellbridge> <Liamzee> so we're in the same wechat, then
2025-03-25 17:06:44 +0100 <haskellbridge> <terrorjack> i see
2025-03-25 17:06:57 +0100sprotte24(~sprotte24@p5dd5d056.dip0.t-ipconnect.de)
2025-03-25 17:07:49 +0100 <haskellbridge> <Liamzee> i was more wondering why Haskell is a total abortion in Haskell, like, according to them, EMQ only maintains winterland's legacy systems
2025-03-25 17:07:58 +0100 <haskellbridge> <Liamzee> erm, total abortion in China
2025-03-25 17:08:53 +0100CiaoSen(~Jura@2a02:8071:64e1:da0:5a47:caff:fe78:33db) (Ping timeout: 248 seconds)
2025-03-25 17:10:27 +0100 <haskellbridge> <terrorjack> well it takes someone motivated
2025-03-25 17:10:39 +0100 <haskellbridge> <Liamzee> Vincent Zhang iirc blew up
2025-03-25 17:10:46 +0100 <haskellbridge> <Liamzee> he had a start-up, tried for a few years
2025-03-25 17:10:52 +0100 <haskellbridge> <Liamzee> gave up
2025-03-25 17:10:54 +0100 <haskellbridge> <Liamzee> or what was his name?
2025-03-25 17:10:56 +0100 <EvanR> like lisp was based on church, an american, so lisp took off in america, while ML was based on russel and whitehead, and took off in europe
2025-03-25 17:11:05 +0100 <EvanR> what's china's deal
2025-03-25 17:11:13 +0100sprotte24_(~sprotte24@p5dd5d056.dip0.t-ipconnect.de)
2025-03-25 17:11:16 +0100sprotte24_(~sprotte24@p5dd5d056.dip0.t-ipconnect.de) (Remote host closed the connection)
2025-03-25 17:11:25 +0100 <haskellbridge> <terrorjack> "using haskell" is not worth a single bullet point in your powerpoint to be shown to vcs obviously
2025-03-25 17:11:36 +0100geekosaurthinks it more likely that companies want cheap disposable programmers, therefore python and js
2025-03-25 17:12:02 +0100 <haskellbridge> <Liamzee> hey, huawei is a rust supporter
2025-03-25 17:13:35 +0100Googulator(~Googulato@2a01-036d-0106-01d5-c415-995d-99e3-7810.pool6.digikabel.hu)
2025-03-25 17:14:06 +0100 <haskellbridge> <terrorjack> i've no interest in why haskell has no momentum in china; i do have interest why you're obsessed with haskell in china
2025-03-25 17:15:10 +0100machinedgod(~machinedg@d108-173-18-100.abhsia.telus.net) (Ping timeout: 244 seconds)
2025-03-25 17:20:16 +0100 <haskellbridge> <Liamzee> lots of programmers, lots of increasingly good programmers
2025-03-25 17:20:45 +0100 <haskellbridge> <Liamzee> i see it like Thinkpad, which IBM was profiting off marginally, got bought out by Lenovo, became way more profitable although, obviously, the brand was tarnished somewhat
2025-03-25 17:21:05 +0100lortabac(~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) (Quit: WeeChat 4.5.2)
2025-03-25 17:21:18 +0100 <haskellbridge> <Liamzee> of course, in this scenario, Anduril moved first, and they're funding Well-Typed
2025-03-25 17:22:22 +0100user363627weary-traveler
2025-03-25 17:25:20 +0100merijn(~merijn@77.242.116.146) (Ping timeout: 272 seconds)
2025-03-25 17:25:29 +0100 <haskellbridge> <Liamzee> EvanR: apparently Chinese devs were trained heavily on C++, and one thing to notice is that productivity enhancing tools are less important when you have cheap labor
2025-03-25 17:25:30 +0100LainExperiments(~LainExper@user/LainExperiments) LainExperiments
2025-03-25 17:25:53 +0100 <haskellbridge> <Liamzee> Indian developers, for instance, make 1/20th the salaries of American developers
2025-03-25 17:26:22 +0100 <haskellbridge> <Liamzee> the cost of labor is much more expensive relative to capital, which probably explains why Huawei and Bytedance went for Rust
2025-03-25 17:26:29 +0100 <haskellbridge> <terrorjack> well then, either some chinese firm needs to make a real profit using haskell, or they need to maintain a fork that they can rebrand as an innovative product to get government grant
2025-03-25 17:26:40 +0100 <haskellbridge> <Liamzee> because Rust essentially has no hardware efficiency cost relative to C++
2025-03-25 17:26:42 +0100 <haskellbridge> <terrorjack> the latter is much more pragmatic
2025-03-25 17:27:01 +0100euphores(~SASL_euph@user/euphores) (Quit: Leaving.)
2025-03-25 17:27:03 +0100 <haskellbridge> <Liamzee> terrorjack: I'd say, a Chinese firm makes a real profit with a real product, but founders are a bit Haskell-crazy
2025-03-25 17:27:17 +0100 <haskellbridge> <Liamzee> the Chinese are just too pragmatic, I think there were many problems historically with commercial Haskell that enabled only niche use
2025-03-25 17:27:45 +0100peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) peterbecich
2025-03-25 17:27:53 +0100 <haskellbridge> <Liamzee> the choice of language in this day and age matters less than what your business plan is and what your organization is
2025-03-25 17:28:01 +0100 <haskellbridge> <terrorjack> wish them all the luck lol
2025-03-25 17:28:10 +0100 <EvanR> this programming language class warfare is unsettling
2025-03-25 17:28:19 +0100 <haskellbridge> <terrorjack> no shortage of hobbyists in school, but as they graduate they need to put food on the table. end of story
2025-03-25 17:28:42 +0100 <haskellbridge> <terrorjack> "programming language class"? sorry?
2025-03-25 17:29:09 +0100 <haskellbridge> <terrorjack> there are only half baked compiler construction classes that waste over half of the time to teach you about automatas and how to write parsers
2025-03-25 17:29:59 +0100 <haskellbridge> <Liamzee> He meant class warfare, but you can see how social class influences the sociology of Haskell, right?
2025-03-25 17:30:19 +0100 <EvanR> that's funny where your parsing of my message stopped
2025-03-25 17:30:26 +0100 <EvanR> it was only 3 more words I promise
2025-03-25 17:30:53 +0100 <haskellbridge> <terrorjack> ah, class warfare as in class struggle
2025-03-25 17:31:06 +0100 <EvanR> I don't know about social class I figured it was more about educational background
2025-03-25 17:31:13 +0100 <EvanR> which I guess could be related
2025-03-25 17:31:41 +0100 <haskellbridge> <Liamzee> one of the drives in Haskell community, I think, is to not be a commodity programmer working an equivalent of 996, which is a potential selling point of Haskell
2025-03-25 17:32:01 +0100 <EvanR> that sounds like "elitism" that we're always getting accused of
2025-03-25 17:32:32 +0100 <haskellbridge> <Liamzee> i'm unsettled too, i guess
2025-03-25 17:33:04 +0100 <EvanR> but getting a better job should be a drive in general regardless of language or field
2025-03-25 17:33:21 +0100euphores(~SASL_euph@user/euphores) euphores
2025-03-25 17:33:46 +0100 <EvanR> despite what we might hear from the government xD
2025-03-25 17:34:00 +0100merijn(~merijn@77.242.116.146) merijn
2025-03-25 17:35:32 +0100 <haskellbridge> <Liamzee> iirc the archetypical chinese developer career is that you work your ass off until you're 35, when you can't handle the schedule anymore, then you either retire or move into management
2025-03-25 17:35:59 +0100 <haskellbridge> <Liamzee> pay is supposed to be better than the alternatives
2025-03-25 17:36:05 +0100fp(~Thunderbi@130.233.70.95) (Ping timeout: 248 seconds)
2025-03-25 17:36:29 +0100 <haskellbridge> <Liamzee> the long-term investment part of haskell, then, is probably not there
2025-03-25 17:40:11 +0100 <EvanR> one area I was wondering about is embedded chips. When the memory is low, haskell has no chance of running aiui
2025-03-25 17:40:22 +0100 <EvanR> though there are DSLs to produce programs for low memory environments
2025-03-25 17:41:26 +0100 <EvanR> with the increased amount of computronium in products this explains a lack of haskell, or opportunity for such safe DSLs
2025-03-25 17:45:37 +0100alfiee(~alfiee@user/alfiee) alfiee
2025-03-25 17:45:39 +0100 <haskellbridge> <Liamzee> Travis Whittaker is working on it, and I think that's one thing they're funding Well-Typed for
2025-03-25 17:45:54 +0100 <haskellbridge> <Liamzee> I like Linear Haskell
2025-03-25 17:49:57 +0100alfiee(~alfiee@user/alfiee) (Ping timeout: 246 seconds)
2025-03-25 17:50:40 +0100acidjnk(~acidjnk@p200300d6e71c4f24c8a043139ebe92bd.dip0.t-ipconnect.de) (Ping timeout: 272 seconds)
2025-03-25 17:51:40 +0100 <haskellbridge> <Liamzee> the unfortunate part, though, is that much of the work will end up being classified
2025-03-25 17:52:51 +0100jespada(~jespada@2800:a4:22ac:eb00:e45c:1f6c:60ff:fb6b) (Quit: My Mac has gone to sleep. ZZZzzz…)
2025-03-25 17:54:39 +0100ash3en(~Thunderbi@89.56.182.235) (Ping timeout: 260 seconds)
2025-03-25 17:55:42 +0100LainExperiments(~LainExper@user/LainExperiments) (Ping timeout: 240 seconds)
2025-03-25 18:01:02 +0100sp1ff(~user@c-67-160-173-55.hsd1.wa.comcast.net) (Remote host closed the connection)
2025-03-25 18:03:48 +0100 <merijn> EvanR: Just program your chip directly in Haskell ;)
2025-03-25 18:03:54 +0100 <merijn> @where clash
2025-03-25 18:03:54 +0100 <lambdabot> I know nothing about clash.
2025-03-25 18:03:56 +0100 <merijn> aww
2025-03-25 18:04:05 +0100 <EvanR> you mean the hardware design
2025-03-25 18:04:13 +0100 <merijn> yeah
2025-03-25 18:04:13 +0100 <merijn> https://clash-lang.org
2025-03-25 18:04:34 +0100 <merijn> Also, there was a project for low-level Haskell
2025-03-25 18:05:08 +0100 <merijn> I forget the name of the spec
2025-03-25 18:05:13 +0100 <mauke> @where+ clash https://clash-lang.org/
2025-03-25 18:05:13 +0100 <lambdabot> Okay.
2025-03-25 18:05:39 +0100 <EvanR> cooool
2025-03-25 18:06:02 +0100 <merijn> EvanR: It was a project at the university of Oregon (iirc)
2025-03-25 18:06:18 +0100tzh(~tzh@c-76-115-131-146.hsd1.or.comcast.net)
2025-03-25 18:06:20 +0100 <merijn> The project is dead before they did anything in terms of usable artifacts, but the spec is an interesting read
2025-03-25 18:06:24 +0100 <merijn> I just can't remember the bloody name
2025-03-25 18:06:50 +0100 <EvanR> retrocomputing
2025-03-25 18:06:58 +0100 <EvanR> not to be confused with reversible computing
2025-03-25 18:08:44 +0100 <merijn> EvanR: Ah, Habit that was it
2025-03-25 18:09:04 +0100 <merijn> EvanR: https://www.habit-lang.org
2025-03-25 18:09:51 +0100 <EvanR> now I remember that one
2025-03-25 18:11:23 +0100ash3en(~Thunderbi@89.56.182.235) ash3en
2025-03-25 18:11:47 +0100kuribas(~user@ip-188-118-57-242.reverse.destiny.be) (Ping timeout: 244 seconds)
2025-03-25 18:14:44 +0100merijn(~merijn@77.242.116.146) (Ping timeout: 265 seconds)
2025-03-25 18:16:40 +0100peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 265 seconds)
2025-03-25 18:18:19 +0100euphores(~SASL_euph@user/euphores) (Quit: Leaving.)
2025-03-25 18:19:10 +0100pdw(~user@215.156.62.185.bridgefibre.net) (Remote host closed the connection)
2025-03-25 18:19:24 +0100zungi(~tory@user/andrewchawk) (Ping timeout: 264 seconds)
2025-03-25 18:19:35 +0100euphores(~SASL_euph@user/euphores) euphores
2025-03-25 18:20:43 +0100zungi(~tory@user/andrewchawk) andrewchawk
2025-03-25 18:21:12 +0100califax(~califax@user/califx) (Ping timeout: 264 seconds)
2025-03-25 18:22:28 +0100califax(~califax@user/califx) califx
2025-03-25 18:28:14 +0100 <EvanR> int-e, well my Cont Monad instance typechecked I dunno if it's right though
2025-03-25 18:28:49 +0100 <EvanR> probably wrong
2025-03-25 18:31:41 +0100alfiee(~alfiee@user/alfiee) alfiee
2025-03-25 18:34:20 +0100ubert(~Thunderbi@2a02:8109:ab8a:5a00:102d:f23f:3d0e:5609) (Quit: ubert)
2025-03-25 18:34:32 +0100raym(~ray@user/raym) (Ping timeout: 252 seconds)
2025-03-25 18:35:46 +0100alfiee(~alfiee@user/alfiee) (Ping timeout: 244 seconds)
2025-03-25 18:36:29 +0100raym(~ray@user/raym) raym
2025-03-25 18:37:33 +0100 <cheater> i thought retrocomputing was where you uncompute data, reversing the entropy gradient compared to normal computing
2025-03-25 18:38:01 +0100Pozyomka(~pyon@user/pyon) pyon
2025-03-25 18:38:25 +0100Garvita(~Garvita@103.72.6.69)
2025-03-25 18:39:17 +0100Garvitagogetter
2025-03-25 18:39:33 +0100 <gogetter> are here any mentors for gsoc?
2025-03-25 18:40:20 +0100Garvita(~Garvita@103.72.6.69)
2025-03-25 18:42:02 +0100Garvitagog
2025-03-25 18:43:56 +0100jespada(~jespada@2800:a4:22ac:eb00:e45c:1f6c:60ff:fb6b) jespada
2025-03-25 18:44:22 +0100 <EvanR> cheater, I said NOT to be confused
2025-03-25 18:45:01 +0100Pozyomka(~pyon@user/pyon) (Quit: brb)
2025-03-25 18:45:08 +0100 <cheater> sorry, i retrocomputed your sentence and all i got was "those two things are exactly the same."
2025-03-25 18:46:03 +0100Pozyomka(~pyon@user/pyon) pyon
2025-03-25 18:51:12 +0100siers(~ij@user/ij) (Ping timeout: 246 seconds)
2025-03-25 18:51:33 +0100siers(~ij@user/ij) ij
2025-03-25 18:53:31 +0100haskellbridge(~hackager@syn-024-093-192-219.res.spectrum.com) (Remote host closed the connection)
2025-03-25 18:57:26 +0100gog(~Garvita@103.72.6.69) (Quit: Client closed)
2025-03-25 18:57:26 +0100gogetter(~Garvita@103.72.6.69) (Quit: Client closed)
2025-03-25 18:57:27 +0100haskellbridge(~hackager@syn-024-093-192-219.res.spectrum.com) hackager
2025-03-25 18:57:27 +0100ChanServ+v haskellbridge
2025-03-25 18:59:36 +0100machinedgod(~machinedg@d108-173-18-100.abhsia.telus.net) machinedgod
2025-03-25 19:00:58 +0100ash3en(~Thunderbi@89.56.182.235) (Ping timeout: 272 seconds)
2025-03-25 19:02:35 +0100Sayman(~Sayman@2401:4900:1ca3:94e0:9065:574c:a43:a4ea)
2025-03-25 19:04:42 +0100 <Sayman> Hi there, as I discussed about the enhancements in yesod framework. So I have submitted my proposal on it after getting an appreciative message from one of you, can you guide me what should be my next step to get selected?
2025-03-25 19:06:57 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-03-25 19:08:01 +0100Clintsquints.
2025-03-25 19:10:37 +0100 <Sayman> what do you mean by that?
2025-03-25 19:10:48 +0100Guest76(~Guest76@host-79-31-115-228.retail.telecomitalia.it)
2025-03-25 19:11:03 +0100Guest76(~Guest76@host-79-31-115-228.retail.telecomitalia.it) ()
2025-03-25 19:11:10 +0100ash3en(~Thunderbi@89.56.182.235) ash3en
2025-03-25 19:11:55 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2025-03-25 19:13:46 +0100dhil(~dhil@2a0c:b381:52e:3600:4562:2dab:a736:76b0) (Quit: Leaving)
2025-03-25 19:14:02 +0100Unicorn_Princess(~Unicorn_P@user/Unicorn-Princess/x-3540542) Unicorn_Princess
2025-03-25 19:16:10 +0100ash3en(~Thunderbi@89.56.182.235) (Ping timeout: 272 seconds)
2025-03-25 19:16:27 +0100chele(~chele@user/chele) (Remote host closed the connection)
2025-03-25 19:21:06 +0100alfiee(~alfiee@user/alfiee) alfiee
2025-03-25 19:21:19 +0100 <EvanR> are you an artificial intelligence
2025-03-25 19:21:41 +0100lxsameer(~lxsameer@Serene/lxsameer) (Ping timeout: 248 seconds)
2025-03-25 19:22:45 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-03-25 19:23:11 +0100 <Sayman> no I am a human being, but yeah if you are asking of an ai student so that's what my current field of studies for graduation
2025-03-25 19:25:05 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex) bitdex
2025-03-25 19:25:21 +0100alfiee(~alfiee@user/alfiee) (Ping timeout: 248 seconds)
2025-03-25 19:27:44 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
2025-03-25 19:28:30 +0100 <cheater> no he's asking if you're a bot because you talk like a bot
2025-03-25 19:28:50 +0100 <cheater> your message was refering to context that wasn't there
2025-03-25 19:29:00 +0100 <cheater> try relaxing a bit and talking like a human being
2025-03-25 19:29:32 +0100 <tomsmeding> calm down a bit. Sayman posted here before -- I remember, but clearly cheater does not
2025-03-25 19:29:43 +0100 <EvanR> yes they did
2025-03-25 19:30:06 +0100 <cheater> i'm calm, just explaining where Evan's comment comes from
2025-03-25 19:30:07 +0100 <tomsmeding> Sayman: on irc, people are far from always actively watching the channel, so if your previous message was a while ago, you can count on it that the readers now will not have the context from last time
2025-03-25 19:30:26 +0100 <tomsmeding> also EvanR: accusing someone of being an AI is rather... rude.
2025-03-25 19:30:45 +0100 <tomsmeding> (or you have a _much_ better opinion of current AI than I do.)
2025-03-25 19:31:29 +0100 <cheater> i don't think he was being fully serious
2025-03-25 19:31:49 +0100 <cheater> but if he was, i suggest we throw Evan into the pit
2025-03-25 19:31:56 +0100 <tomsmeding> Sayman: re "next step to get selected": contact the haskell GSoC people, there ought to be some names or contact details somewhere. No one can guarantee you get selected, obviously -- but it can't hurt to get in touch with actual human beings behind the program
2025-03-25 19:32:14 +0100 <tomsmeding> cheater: fair :)
2025-03-25 19:32:39 +0100 <Sayman> okay but how to get there contacts?
2025-03-25 19:32:47 +0100 <tomsmeding> where did you subit?
2025-03-25 19:32:50 +0100 <tomsmeding> *submit
2025-03-25 19:33:13 +0100 <Sayman> I am sorry I thought I was just talking normally!
2025-03-25 19:33:20 +0100 <EvanR> does half serious get the half-pit
2025-03-25 19:33:33 +0100 <tomsmeding> I think you were. :)
2025-03-25 19:33:33 +0100 <Sayman> I submitted the proposal in GSoC official site
2025-03-25 19:33:41 +0100 <Sayman> after registring
2025-03-25 19:34:00 +0100 <Sayman> *Registering
2025-03-25 19:34:04 +0100 <tomsmeding> I looked here https://summerofcode.withgoogle.com/programs/2025/organizations/haskellorg and found https://summer.haskell.org/contact.html through there
2025-03-25 19:34:22 +0100 <tomsmeding> the haskell.org committee seems a bit broad for this, but given as it's linked here, perhaps they know who to turn to
2025-03-25 19:34:52 +0100 <tomsmeding> this channel is also mentioned there, but this is a general haskell channel -- perhaps you'll accidentally find some GSoC people here too, but not necessarily
2025-03-25 19:35:34 +0100 <tomsmeding> EvanR: perhaps. :P
2025-03-25 19:35:42 +0100 <Sayman> Ohh okay I just posted this here
2025-03-25 19:35:53 +0100 <tomsmeding> EvanR: though not sure what being thrown in a half-pit entails, practically
2025-03-25 19:36:02 +0100 <Sayman> Because I found the link to this chat group in GSoC official site
2025-03-25 19:36:27 +0100 <tomsmeding> this is a good place to ask help about haskell, not about GSoC specifically. :)
2025-03-25 19:36:42 +0100 <tomsmeding> *ask for
2025-03-25 19:36:58 +0100 <Sayman> and fun fact it's midnight in my country and I am just sitting infront of my laptop reading about how people got confuse between a normal human being and a bot :)
2025-03-25 19:37:09 +0100 <Sayman> Ohh okay
2025-03-25 19:37:14 +0100 <tomsmeding> :)
2025-03-25 19:37:27 +0100 <tomsmeding> to be fair, there's too many bots these days, some paranoia is perhaps to be expected :p
2025-03-25 19:37:30 +0100 <Sayman> Now I understoof the general purpose of this community channel
2025-03-25 19:37:51 +0100 <tomsmeding> though asking is unlikely to get an honest answer from a bot, perhaps.
2025-03-25 19:37:59 +0100 <Sayman> tomsmeding I can understand
2025-03-25 19:38:31 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-03-25 19:38:37 +0100 <EvanR> tomsmeding, +3 bonus on your roll to get out
2025-03-25 19:40:06 +0100 <tomsmeding> on a d-howmany?
2025-03-25 19:40:42 +0100 <EvanR> 6
2025-03-25 19:41:59 +0100 <tomsmeding> I guess that would work :p
2025-03-25 19:45:14 +0100jess(meow@libera/staff/cat/jess) ()
2025-03-25 19:45:29 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds)
2025-03-25 19:50:05 +0100Pixi`(~Pixi@user/pixi) Pixi
2025-03-25 19:51:34 +0100weary-traveler(~user@user/user363627) (Remote host closed the connection)
2025-03-25 19:52:38 +0100ljdarj(~Thunderbi@user/ljdarj) ljdarj
2025-03-25 19:53:39 +0100Pixi(~Pixi@user/pixi) (Ping timeout: 260 seconds)
2025-03-25 19:55:17 +0100vanishingideal(~vanishing@user/vanishingideal) vanishingideal
2025-03-25 19:56:35 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-03-25 20:00:01 +0100caconym(~caconym@user/caconym) (Quit: bye)
2025-03-25 20:00:42 +0100caconym(~caconym@user/caconym) caconym
2025-03-25 20:01:24 +0100zungi(~tory@user/andrewchawk) (Ping timeout: 264 seconds)
2025-03-25 20:01:25 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2025-03-25 20:07:10 +0100alfiee(~alfiee@user/alfiee) alfiee
2025-03-25 20:08:36 +0100zungi(~tory@user/andrewchawk) andrewchawk
2025-03-25 20:10:44 +0100glguy_(glguy@libera/staff/glguy) glguy
2025-03-25 20:11:05 +0100glguy(glguy@libera/staff/glguy) (Read error: Connection reset by peer)
2025-03-25 20:11:21 +0100alfiee(~alfiee@user/alfiee) (Ping timeout: 246 seconds)
2025-03-25 20:13:21 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-03-25 20:13:56 +0100leah2(~leah@vuxu.org) (Ping timeout: 244 seconds)
2025-03-25 20:18:18 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds)
2025-03-25 20:19:58 +0100gmg(~user@user/gehmehgeh) (Quit: Leaving)
2025-03-25 20:20:35 +0100crabtastic(uid695166@id-695166.lymington.irccloud.com)
2025-03-25 20:21:03 +0100Sayman(~Sayman@2401:4900:1ca3:94e0:9065:574c:a43:a4ea) (Quit: Client closed)
2025-03-25 20:23:43 +0100ash3en(~Thunderbi@89.56.182.235) ash3en
2025-03-25 20:24:21 +0100ash3en(~Thunderbi@89.56.182.235) (Client Quit)
2025-03-25 20:25:44 +0100Digitteknohippie(~user@user/digit) Digit
2025-03-25 20:26:44 +0100leah2(~leah@vuxu.org) leah2
2025-03-25 20:27:54 +0100Digit(~user@user/digit) (Ping timeout: 260 seconds)
2025-03-25 20:29:00 +0100pavonia(~user@user/siracusa) siracusa
2025-03-25 20:29:04 +0100AlexZenon(~alzenon@178.34.150.194) (Ping timeout: 260 seconds)
2025-03-25 20:29:08 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-03-25 20:33:11 +0100ljdarj(~Thunderbi@user/ljdarj) (Quit: ljdarj)
2025-03-25 20:33:31 +0100ljdarj(~Thunderbi@user/ljdarj) ljdarj
2025-03-25 20:33:52 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
2025-03-25 20:35:01 +0100ljdarj1(~Thunderbi@user/ljdarj) ljdarj
2025-03-25 20:35:57 +0100ft(~ft@p508db463.dip0.t-ipconnect.de) ft
2025-03-25 20:37:42 +0100DigitteknohippieDigit
2025-03-25 20:37:42 +0100ljdarj(~Thunderbi@user/ljdarj) (Ping timeout: 244 seconds)
2025-03-25 20:37:42 +0100ljdarj1ljdarj
2025-03-25 20:38:27 +0100chamlis(~chamlis@user/chamlis) ()
2025-03-25 20:43:37 +0100target_i(~target_i@user/target-i/x-6023099) target_i
2025-03-25 20:44:57 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-03-25 20:47:36 +0100AlexZenon(~alzenon@178.34.150.194)
2025-03-25 20:49:37 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds)
2025-03-25 20:52:34 +0100alfiee(~alfiee@user/alfiee) alfiee
2025-03-25 20:55:53 +0100acidjnk(~acidjnk@p200300d6e71c4f2435ff52636e0f7274.dip0.t-ipconnect.de) acidjnk
2025-03-25 20:57:05 +0100alfiee(~alfiee@user/alfiee) (Ping timeout: 248 seconds)
2025-03-25 20:57:09 +0100j1n37-(~j1n37@user/j1n37) (Ping timeout: 248 seconds)
2025-03-25 20:57:30 +0100j1n37(~j1n37@user/j1n37) j1n37
2025-03-25 20:57:39 +0100ash3en(~Thunderbi@89.56.182.235) ash3en
2025-03-25 21:00:41 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-03-25 21:04:07 +0100peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) peterbecich
2025-03-25 21:04:31 +0100ash3en(~Thunderbi@89.56.182.235) (Quit: ash3en)
2025-03-25 21:05:49 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 268 seconds)
2025-03-25 21:14:08 +0100infinity0(~infinity0@pwned.gg) (Ping timeout: 245 seconds)
2025-03-25 21:14:21 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-03-25 21:21:00 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 246 seconds)
2025-03-25 21:21:06 +0100peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 244 seconds)
2025-03-25 21:30:18 +0100wootehfoot(~wootehfoo@user/wootehfoot) (Read error: Connection reset by peer)
2025-03-25 21:32:24 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-03-25 21:34:35 +0100infinity0(~infinity0@pwned.gg) infinity0
2025-03-25 21:37:07 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2025-03-25 21:38:19 +0100alfiee(~alfiee@user/alfiee) alfiee
2025-03-25 21:42:35 +0100alfiee(~alfiee@user/alfiee) (Ping timeout: 244 seconds)
2025-03-25 21:47:57 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-03-25 21:52:37 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
2025-03-25 22:02:16 +0100CiaoSen(~Jura@2a02:8071:64e1:da0:5a47:caff:fe78:33db) CiaoSen
2025-03-25 22:03:45 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-03-25 22:08:40 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2025-03-25 22:08:56 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection)
2025-03-25 22:09:17 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex) bitdex
2025-03-25 22:13:07 +0100jespada(~jespada@2800:a4:22ac:eb00:e45c:1f6c:60ff:fb6b) (Quit: My Mac has gone to sleep. ZZZzzz…)
2025-03-25 22:13:57 +0100robobub(uid248673@id-248673.uxbridge.irccloud.com) (Quit: Connection closed for inactivity)
2025-03-25 22:15:20 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-03-25 22:17:00 +0100zungi(~tory@user/andrewchawk) (Ping timeout: 264 seconds)
2025-03-25 22:17:03 +0100gmg(~user@user/gehmehgeh) gehmehgeh
2025-03-25 22:19:58 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds)
2025-03-25 22:24:04 +0100alfiee(~alfiee@user/alfiee) alfiee
2025-03-25 22:28:18 +0100alfiee(~alfiee@user/alfiee) (Ping timeout: 245 seconds)
2025-03-25 22:30:00 +0100dhil(~dhil@2a0c:b381:52e:3600:e1a5:fd6:a5ba:3633) dhil
2025-03-25 22:31:02 +0100michalz(~michalz@185.246.207.197) (Remote host closed the connection)
2025-03-25 22:31:08 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-03-25 22:32:27 +0100glguy_glguy
2025-03-25 22:35:47 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection)
2025-03-25 22:36:08 +0100haskellbridge(~hackager@syn-024-093-192-219.res.spectrum.com) (Remote host closed the connection)
2025-03-25 22:36:09 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2025-03-25 22:36:10 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex) bitdex
2025-03-25 22:36:35 +0100peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) peterbecich
2025-03-25 22:38:43 +0100tabaqui(~tabaqui@167.71.80.236) (Ping timeout: 245 seconds)
2025-03-25 22:39:39 +0100haskellbridge(~hackager@syn-024-093-192-219.res.spectrum.com) hackager
2025-03-25 22:39:39 +0100ChanServ+v haskellbridge
2025-03-25 22:40:34 +0100polykernel(~polykerne@user/polykernel) (Ping timeout: 265 seconds)
2025-03-25 22:44:42 +0100polykernel(~polykerne@user/polykernel) polykernel
2025-03-25 22:46:41 +0100sord937(~sord937@gateway/tor-sasl/sord937) (Quit: sord937)
2025-03-25 22:46:56 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-03-25 22:48:01 +0100JuanDaugherty(~juan@user/JuanDaugherty) JuanDaugherty
2025-03-25 22:52:10 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds)
2025-03-25 22:53:33 +0100takuan(~takuan@d8D86B601.access.telenet.be) (Remote host closed the connection)
2025-03-25 22:54:19 +0100target_i(~target_i@user/target-i/x-6023099) (Quit: leaving)
2025-03-25 22:55:08 +0100dhil(~dhil@2a0c:b381:52e:3600:e1a5:fd6:a5ba:3633) (Ping timeout: 244 seconds)
2025-03-25 22:58:09 +0100hattckory(~hattckory@bras-base-toroon4524w-grc-30-70-27-118-207.dsl.bell.ca) (Ping timeout: 248 seconds)
2025-03-25 23:00:18 +0100peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 248 seconds)
2025-03-25 23:02:42 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-03-25 23:07:59 +0100sabathan2(~sabathan@amarseille-159-1-12-107.w86-203.abo.wanadoo.fr)
2025-03-25 23:08:19 +0100sabathan(~sabathan@amarseille-159-1-12-107.w86-203.abo.wanadoo.fr) (Ping timeout: 260 seconds)
2025-03-25 23:08:22 +0100sabathan2sabathan
2025-03-25 23:09:23 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
2025-03-25 23:09:48 +0100alfiee(~alfiee@user/alfiee) alfiee
2025-03-25 23:14:02 +0100alfiee(~alfiee@user/alfiee) (Ping timeout: 244 seconds)
2025-03-25 23:16:21 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-03-25 23:21:03 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 246 seconds)
2025-03-25 23:24:58 +0100Sgeo(~Sgeo@user/sgeo) Sgeo
2025-03-25 23:31:01 +0100weary-traveler(~user@user/user363627) user363627
2025-03-25 23:32:08 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-03-25 23:32:46 +0100otto_s(~user@p5de2f2e9.dip0.t-ipconnect.de)
2025-03-25 23:33:41 +0100 <otto_s> Hello.
2025-03-25 23:34:01 +0100weary-traveler(~user@user/user363627) (Client Quit)
2025-03-25 23:34:21 +0100 <otto_s> What is an explanation of the following: ?
2025-03-25 23:34:25 +0100 <otto_s> let x = -1 :: Complex Double
2025-03-25 23:34:36 +0100 <otto_s> let y = (-1):+0 :: Complex Double
2025-03-25 23:35:12 +0100 <otto_s> Then x == y evaluates to True, but log x == log y evaluates to False.
2025-03-25 23:35:40 +0100 <otto_s> (The logs are conjugates of each other.)
2025-03-25 23:37:03 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds)
2025-03-25 23:38:14 +0100 <otto_s> (And I know that both are in a sense "good" answers of the log function -- that's not my questions.)
2025-03-25 23:38:37 +0100 <otto_s> *-s
2025-03-25 23:47:52 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-03-25 23:50:54 +0100 <EvanR> > log (-1 :: Complex Double)
2025-03-25 23:50:55 +0100 <lambdabot> 0.0 :+ (-3.141592653589793)
2025-03-25 23:51:05 +0100 <EvanR> > log ((-1) :+ 0 :: Complex Double)
2025-03-25 23:51:07 +0100 <lambdabot> 0.0 :+ 3.141592653589793
2025-03-25 23:51:42 +0100 <EvanR> > decodeFloat (realPart (-1 :: Complex Double))
2025-03-25 23:51:43 +0100 <lambdabot> (-4503599627370496,-52)
2025-03-25 23:51:58 +0100 <EvanR> > decodeFloat (realPart ((-1) :+ 0 :: Complex Double))
2025-03-25 23:51:59 +0100 <lambdabot> (-4503599627370496,-52)
2025-03-25 23:52:15 +0100 <EvanR> > decodeFloat (imaginaryPart (-1 :: Complex Double))
2025-03-25 23:52:16 +0100 <lambdabot> error:
2025-03-25 23:52:16 +0100 <lambdabot> Variable not in scope: imaginaryPart :: Complex Double -> a0
2025-03-25 23:52:46 +0100 <EvanR> check the imaginary parts
2025-03-25 23:53:12 +0100 <geekosaur> :t imagPart
2025-03-25 23:53:13 +0100 <lambdabot> Complex a -> a