2022/08/25

2022-08-25 00:00:06 +0200acidjnk(~acidjnk@p200300d6e7137a442d4bcc663cf92581.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
2022-08-25 00:10:57 +0200beteigeuze(~Thunderbi@bl11-28-222.dsl.telepac.pt)
2022-08-25 00:16:14 +0200gmg(~user@user/gehmehgeh) (Quit: Leaving)
2022-08-25 00:21:06 +0200segfaultfizzbuzz(~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) (Ping timeout: 260 seconds)
2022-08-25 00:22:20 +0200matthewmosior(~matthewmo@173.170.253.91) (Remote host closed the connection)
2022-08-25 00:23:12 +0200motersen(~motersen@user/motersen) (Remote host closed the connection)
2022-08-25 00:23:12 +0200stiell(~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection)
2022-08-25 00:23:13 +0200jpds(~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection)
2022-08-25 00:23:27 +0200wonko(~wjc@2a0e:1c80:2::130)
2022-08-25 00:24:06 +0200jpds(~jpds@gateway/tor-sasl/jpds)
2022-08-25 00:24:08 +0200segfaultfizzbuzz(~segfaultf@157-131-253-58.fiber.dynamic.sonic.net)
2022-08-25 00:24:11 +0200motersen(~motersen@user/motersen)
2022-08-25 00:25:10 +0200hays(rootvegeta@fsf/member/hays) ()
2022-08-25 00:25:30 +0200stiell(~stiell@gateway/tor-sasl/stiell)
2022-08-25 00:25:50 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2022-08-25 00:26:28 +0200hays(~rootveget@fsf/member/hays)
2022-08-25 00:26:56 +0200zava(~zava@ip5f5bdf97.dynamic.kabel-deutschland.de) (Ping timeout: 260 seconds)
2022-08-25 00:31:01 +0200wonko(~wjc@2a0e:1c80:2::130) (Ping timeout: 260 seconds)
2022-08-25 00:31:12 +0200 <akegalj> qrpnxz: you got all that from reading rewrite rules? I guess `streamR` `unstream` from above are implementation details, not something for end user?
2022-08-25 00:32:55 +0200mvk(~mvk@2607:fea8:5ce3:8500::a1ec)
2022-08-25 00:35:53 +0200jpds(~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection)
2022-08-25 00:36:26 +0200jpds(~jpds@gateway/tor-sasl/jpds)
2022-08-25 00:37:54 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-08-25 00:38:16 +0200coot(~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot)
2022-08-25 00:38:58 +0200coot(~coot@213.134.176.158)
2022-08-25 00:39:34 +0200zava(~zava@ip5f5bdf97.dynamic.kabel-deutschland.de)
2022-08-25 00:39:49 +0200michalz(~michalz@185.246.204.75) (Remote host closed the connection)
2022-08-25 00:39:58 +0200coot(~coot@213.134.176.158) (Client Quit)
2022-08-25 00:40:04 +0200aeka(~aeka@user/hiruji)
2022-08-25 00:42:41 +0200matthewmosior(~matthewmo@173.170.253.91) (Ping timeout: 260 seconds)
2022-08-25 00:43:31 +0200coot(~coot@213.134.176.158)
2022-08-25 00:48:25 +0200coot(~coot@213.134.176.158) (Ping timeout: 252 seconds)
2022-08-25 00:48:52 +0200Pickchea(~private@user/pickchea) (Quit: Leaving)
2022-08-25 00:55:06 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-08-25 00:56:33 +0200zava(~zava@ip5f5bdf97.dynamic.kabel-deutschland.de) (Quit: WeeChat 3.5)
2022-08-25 00:56:43 +0200merijn(~merijn@c-001-001-007.client.esciencecenter.eduvpn.nl)
2022-08-25 00:58:21 +0200__monty__(~toonn@user/toonn) (Quit: leaving)
2022-08-25 00:58:49 +0200motersen(~motersen@user/motersen) (Ping timeout: 268 seconds)
2022-08-25 00:59:15 +0200motersen(~motersen@user/motersen)
2022-08-25 01:01:07 +0200matthewmosior(~matthewmo@173.170.253.91) (Ping timeout: 244 seconds)
2022-08-25 01:03:06 +0200xff0x(~xff0x@2405:6580:b080:900:3788:1bc5:ebdd:8f54) (Ping timeout: 260 seconds)
2022-08-25 01:03:36 +0200stiell(~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection)
2022-08-25 01:04:05 +0200stiell(~stiell@gateway/tor-sasl/stiell)
2022-08-25 01:05:14 +0200Sgeo(~Sgeo@user/sgeo)
2022-08-25 01:10:26 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-08-25 01:11:55 +0200dsrt^(~dsrt@96.70.11.181)
2022-08-25 01:12:23 +0200matthewmosior(~matthewmo@173.170.253.91) (Remote host closed the connection)
2022-08-25 01:14:50 +0200ec(~ec@gateway/tor-sasl/ec) (Remote host closed the connection)
2022-08-25 01:17:14 +0200Midjak(~Midjak@82.66.147.146) (Quit: This computer has gone to sleep)
2022-08-25 01:18:37 +0200bontaq(~user@ool-45779fe5.dyn.optonline.net) (Ping timeout: 268 seconds)
2022-08-25 01:20:50 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-08-25 01:25:16 +0200matthewmosior(~matthewmo@173.170.253.91) (Ping timeout: 260 seconds)
2022-08-25 01:25:24 +0200 <johnw> is there any tool to extracts a rather plain BNF from a happy grammar?
2022-08-25 01:25:27 +0200dsrt^(~dsrt@96.70.11.181) (Ping timeout: 252 seconds)
2022-08-25 01:27:12 +0200 <Axman6> @check \l -> unlines (lines l) == l
2022-08-25 01:27:13 +0200 <lambdabot> *** Failed! Falsifiable (after 2 tests and 1 shrink):
2022-08-25 01:27:13 +0200 <lambdabot> "\1076642"
2022-08-25 01:28:16 +0200 <qrpnxz> akegalj: yeah, i just looked at the source. stream and unstream and such aren't exposed i think (I'll check real quick), but looks like Stream, Bundle, New, are public API at the moment.
2022-08-25 01:28:26 +0200 <geekosaur> > generalCategory '\1076642'
2022-08-25 01:28:27 +0200 <lambdabot> PrivateUse
2022-08-25 01:29:46 +0200 <qrpnxz> actually, even stream and stuff is exposed now at Data.Vector.Generic
2022-08-25 01:30:52 +0200 <qrpnxz> basically when you go to a module like Unboxed, all the functions there look like `modify = G.modify` it unlines the generic version right there, then the generic version will be made up of a different special functions based on New, Bundle and such, and there's a lot of RULES that fuse these
2022-08-25 01:31:06 +0200 <qrpnxz> s/unlines/inlines
2022-08-25 01:31:25 +0200merijn(~merijn@c-001-001-007.client.esciencecenter.eduvpn.nl) (Ping timeout: 268 seconds)
2022-08-25 01:31:51 +0200codaraxis(~codaraxis@user/codaraxis)
2022-08-25 01:32:17 +0200crns(~netcrns@user/crns) (Quit: wawawooie)
2022-08-25 01:32:26 +0200 <qrpnxz> forget about Stream, the relevant type here is Bundle. stream :: Vector v a => v a -> Bundle v a
2022-08-25 01:32:34 +0200crns(~netcrns@p5dc33cc7.dip0.t-ipconnect.de)
2022-08-25 01:32:35 +0200crns(~netcrns@p5dc33cc7.dip0.t-ipconnect.de) (Changing host)
2022-08-25 01:32:35 +0200crns(~netcrns@user/crns)
2022-08-25 01:34:40 +0200xff0x(~xff0x@ap007189.d.east.v6connect.net)
2022-08-25 01:35:02 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-08-25 01:36:11 +0200matthewmosior(~matthewmo@173.170.253.91) (Remote host closed the connection)
2022-08-25 01:36:18 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-08-25 01:36:23 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2022-08-25 01:38:53 +0200justsomeguy(~justsomeg@user/justsomeguy)
2022-08-25 01:39:52 +0200 <qrpnxz> oh i see what bundle is doing. Okay so what bundle does is it captures a vector as just a vector, or a stream of `a`, or a stream of chunks and so on. As your operations get fused, some of them will work with all representations, some with only a few, some only with vector. At some point the optimal representation will be inline and the rest thrown away. This is how Conduit fusion works as well.
2022-08-25 01:40:06 +0200 <qrpnxz> s/or/and
2022-08-25 01:40:17 +0200jero98772(~jero98772@2800:484:1d80:d8ce:efcc:cbb3:7f2a:6dff) (Remote host closed the connection)
2022-08-25 01:40:26 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 260 seconds)
2022-08-25 01:40:56 +0200 <qrpnxz> rather sophisticated lib
2022-08-25 01:42:49 +0200ChanServ+o litharge
2022-08-25 01:42:49 +0200litharge-bo riverside!~riverside@213.205.241.143 litharge
2022-08-25 01:45:04 +0200califax(~califax@user/califx) (Ping timeout: 268 seconds)
2022-08-25 01:45:35 +0200califax(~califax@user/califx)
2022-08-25 01:45:41 +0200jpds(~jpds@gateway/tor-sasl/jpds) (Ping timeout: 268 seconds)
2022-08-25 01:51:41 +0200 <akegalj> qrpnxz: thanks, will look into that
2022-08-25 01:51:42 +0200 <qrpnxz> it's nice that it's exposed because in a lib you could have a function that returns what looks like a vector, but when you inline it it's actually an unstreamed Bundle with optimized stream of items, stream of chunks, vector. Then if the user was streaming your result, the vector never gets created, but if they actually wanted a vector, they'd have it. Not that that's the best way to do it.
2022-08-25 01:51:45 +0200 <qrpnxz> Perhaps explicitly returning a Bundle would be better, but hey if you wanted a simple Vector only API, but still optimization, that's an option.
2022-08-25 01:52:14 +0200 <qrpnxz> 👍
2022-08-25 01:54:53 +0200mastarija(~mastarija@2a05:4f46:e03:6000:b0c6:6951:8666:c637) (Ping timeout: 268 seconds)
2022-08-25 01:56:11 +0200gurkenglas(~gurkengla@p548ac72e.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
2022-08-25 01:57:27 +0200segfaultfizzbuzz(~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) (Ping timeout: 244 seconds)
2022-08-25 01:57:51 +0200luffy(~chenqisu1@183.217.200.212)
2022-08-25 01:59:42 +0200bilegeek(~bilegeek@2600:1008:b068:5637:7ab9:a362:c68d:9416)
2022-08-25 01:59:45 +0200nilradical(~nilradica@user/naso)
2022-08-25 01:59:52 +0200matthewmosior(~matthewmo@173.170.253.91) (Remote host closed the connection)
2022-08-25 02:00:16 +0200akegalj(~akegalj@135-40.dsl.iskon.hr) (Ping timeout: 260 seconds)
2022-08-25 02:02:19 +0200gurkenglas(~gurkengla@p548ac72e.dip0.t-ipconnect.de)
2022-08-25 02:02:57 +0200stiell(~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection)
2022-08-25 02:02:57 +0200califax(~califax@user/califx) (Remote host closed the connection)
2022-08-25 02:02:57 +0200motersen(~motersen@user/motersen) (Remote host closed the connection)
2022-08-25 02:03:08 +0200dcoutts_(~duncan@host86-151-9-109.range86-151.btcentralplus.com)
2022-08-25 02:04:37 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-08-25 02:06:06 +0200dcoutts(~duncan@host86-153-135-25.range86-153.btcentralplus.com) (Ping timeout: 268 seconds)
2022-08-25 02:09:36 +0200nate4(~nate@98.45.169.16)
2022-08-25 02:10:30 +0200 <dmj`> type family SnocSymbol (c :: Char) (sym :: Symbol) where SnocSymbol c sym = sym `AppendSymbol` (c `ConsSymbol` "")
2022-08-25 02:10:35 +0200 <dmj`> does this exist anywhere already
2022-08-25 02:12:35 +0200 <dmj`> seems like a good candidate for GHC.TypeLits
2022-08-25 02:13:41 +0200matthewmosior(~matthewmo@173.170.253.91) (Ping timeout: 260 seconds)
2022-08-25 02:14:13 +0200nate4(~nate@98.45.169.16) (Ping timeout: 252 seconds)
2022-08-25 02:14:36 +0200gurkenglas(~gurkengla@p548ac72e.dip0.t-ipconnect.de) (Ping timeout: 268 seconds)
2022-08-25 02:15:29 +0200causal(~user@50.35.83.177)
2022-08-25 02:15:54 +0200mvk(~mvk@2607:fea8:5ce3:8500::a1ec) (Quit: Going elsewhere)
2022-08-25 02:17:05 +0200mvk(~mvk@2607:fea8:5ce3:8500::a1ec)
2022-08-25 02:20:23 +0200motersen(~motersen@user/motersen)
2022-08-25 02:21:26 +0200califax(~califax@user/califx)
2022-08-25 02:21:54 +0200ryanbooker(uid4340@id-4340.hampstead.irccloud.com)
2022-08-25 02:22:36 +0200 <Axman6> feels like something Csongor Kiss would've written already - https://blog.csongor.co.uk/symbol-parsing-haskell/
2022-08-25 02:25:07 +0200jpds(~jpds@gateway/tor-sasl/jpds)
2022-08-25 02:30:54 +0200codaraxis(~codaraxis@user/codaraxis) (Quit: Leaving)
2022-08-25 02:30:57 +0200stiell(~stiell@gateway/tor-sasl/stiell)
2022-08-25 02:32:32 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-08-25 02:36:51 +0200 <dmj`> yea I couldn't find it on his github
2022-08-25 02:36:58 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2022-08-25 02:40:22 +0200dsrt^(~dsrt@96.70.11.181)
2022-08-25 02:40:40 +0200zebrag(~chris@user/zebrag) (Quit: Konversation terminated!)
2022-08-25 02:42:27 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 252 seconds)
2022-08-25 02:46:51 +0200nate4(~nate@98.45.169.16)
2022-08-25 02:52:11 +0200dsrt^(~dsrt@96.70.11.181) (Ping timeout: 260 seconds)
2022-08-25 02:55:27 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2022-08-25 02:55:38 +0200segfaultfizzbuzz(~segfaultf@157-131-253-58.fiber.dynamic.sonic.net)
2022-08-25 02:57:47 +0200eikke(~NicolasT@88.126.78.98) (Ping timeout: 255 seconds)
2022-08-25 02:59:01 +0200azimut(~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection)
2022-08-25 02:59:49 +0200azimut(~azimut@gateway/tor-sasl/azimut)
2022-08-25 03:04:08 +0200chexum(~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection)
2022-08-25 03:04:26 +0200mima(mmh@gateway/vpn/airvpn/mima) (Ping timeout: 260 seconds)
2022-08-25 03:04:36 +0200chexum(~quassel@gateway/tor-sasl/chexum)
2022-08-25 03:13:42 +0200dsrt^(~dsrt@96.70.11.181)
2022-08-25 03:18:11 +0200stiell(~stiell@gateway/tor-sasl/stiell) (Ping timeout: 268 seconds)
2022-08-25 03:20:43 +0200waleee(~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 268 seconds)
2022-08-25 03:22:52 +0200stiell(~stiell@gateway/tor-sasl/stiell)
2022-08-25 03:27:18 +0200merijn(~merijn@c-001-001-007.client.esciencecenter.eduvpn.nl)
2022-08-25 03:28:07 +0200zxx7529(~Thunderbi@user/zxx7529)
2022-08-25 03:29:42 +0200zxx7529(~Thunderbi@user/zxx7529) (Remote host closed the connection)
2022-08-25 03:29:56 +0200zxx7529(~Thunderbi@user/zxx7529)
2022-08-25 03:35:56 +0200_73(~user@pool-71-184-136-42.bstnma.fios.verizon.net)
2022-08-25 03:38:33 +0200Colere(~colere@about/linux/staff/sauvin) (Ping timeout: 252 seconds)
2022-08-25 03:38:42 +0200matthewmosior(~matthewmo@173.170.253.91) (Ping timeout: 244 seconds)
2022-08-25 03:48:24 +0200stiell(~stiell@gateway/tor-sasl/stiell) (Ping timeout: 268 seconds)
2022-08-25 03:49:21 +0200nate4(~nate@98.45.169.16) (Ping timeout: 260 seconds)
2022-08-25 03:50:06 +0200stiell(~stiell@gateway/tor-sasl/stiell)
2022-08-25 03:51:06 +0200beteigeuze(~Thunderbi@bl11-28-222.dsl.telepac.pt) (Ping timeout: 260 seconds)
2022-08-25 03:51:59 +0200nilradical(~nilradica@user/naso) (Remote host closed the connection)
2022-08-25 03:52:42 +0200nilradical(~nilradica@user/naso)
2022-08-25 03:53:32 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-08-25 03:53:35 +0200nilradical(~nilradica@user/naso) (Remote host closed the connection)
2022-08-25 03:53:50 +0200nilradical(~nilradica@user/naso)
2022-08-25 03:53:54 +0200Colere(~colere@about/linux/staff/sauvin)
2022-08-25 03:54:01 +0200segfaultfizzbuzz(~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) (Ping timeout: 260 seconds)
2022-08-25 03:56:51 +0200dsrt^(~dsrt@96.70.11.181) (Ping timeout: 248 seconds)
2022-08-25 03:58:06 +0200justsomeguy(~justsomeg@user/justsomeguy) (Ping timeout: 260 seconds)
2022-08-25 04:01:53 +0200merijn(~merijn@c-001-001-007.client.esciencecenter.eduvpn.nl) (Ping timeout: 268 seconds)
2022-08-25 04:06:00 +0200bilegeek(~bilegeek@2600:1008:b068:5637:7ab9:a362:c68d:9416) (Quit: Leaving)
2022-08-25 04:16:11 +0200td_(~td@94.134.91.14) (Ping timeout: 260 seconds)
2022-08-25 04:17:26 +0200segfaultfizzbuzz(~segfaultf@157-131-253-58.fiber.dynamic.sonic.net)
2022-08-25 04:17:48 +0200td_(~td@94.134.91.83)
2022-08-25 04:18:28 +0200justsomeguy(~justsomeg@user/justsomeguy)
2022-08-25 04:20:04 +0200zxx7529(~Thunderbi@user/zxx7529) (Remote host closed the connection)
2022-08-25 04:21:56 +0200fef(~thedawn@user/thedawn)
2022-08-25 04:23:42 +0200dsrt^(~dsrt@96.70.11.181)
2022-08-25 04:25:21 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection)
2022-08-25 04:28:24 +0200nate4(~nate@98.45.169.16)
2022-08-25 04:28:32 +0200motersen(~motersen@user/motersen) (Remote host closed the connection)
2022-08-25 04:28:32 +0200azimut(~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection)
2022-08-25 04:28:32 +0200fef(~thedawn@user/thedawn) (Remote host closed the connection)
2022-08-25 04:28:59 +0200motersen(~motersen@user/motersen)
2022-08-25 04:29:15 +0200fef(~thedawn@user/thedawn)
2022-08-25 04:30:02 +0200azimut(~azimut@gateway/tor-sasl/azimut)
2022-08-25 04:35:49 +0200dsrt^(~dsrt@96.70.11.181) (Ping timeout: 268 seconds)
2022-08-25 04:38:18 +0200machinedgod(~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 268 seconds)
2022-08-25 04:38:57 +0200justsomeguy(~justsomeg@user/justsomeguy) (Quit: WeeChat 3.5)
2022-08-25 04:42:01 +0200terrorjack(~terrorjac@2a01:4f8:1c1e:509a::1) (Quit: The Lounge - https://thelounge.chat)
2022-08-25 04:42:59 +0200terrorjack(~terrorjac@2a01:4f8:1c1e:509a::1)
2022-08-25 04:45:02 +0200mzan(~quassel@mail.asterisell.com) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
2022-08-25 04:45:58 +0200mzan(~quassel@mail.asterisell.com)
2022-08-25 04:53:33 +0200kannon(~NK@135-180-47-54.fiber.dynamic.sonic.net)
2022-08-25 04:53:56 +0200dos__^^(~user@user/dos/x-1723657)
2022-08-25 05:08:16 +0200matthewmosior(~matthewmo@173.170.253.91) (Remote host closed the connection)
2022-08-25 05:08:23 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-08-25 05:10:56 +0200matthewmosior(~matthewmo@173.170.253.91) (Remote host closed the connection)
2022-08-25 05:11:23 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-08-25 05:12:16 +0200fef(~thedawn@user/thedawn) (Ping timeout: 268 seconds)
2022-08-25 05:17:57 +0200famubu(~famubu@user/famubu)
2022-08-25 05:18:00 +0200 <famubu> Suppose we got an `add2` function which adds two integers. Is there a way to make a function `addn` that returns a new function that can add n integers?
2022-08-25 05:19:04 +0200 <famubu> As in `addn 3` will give a function `add3 :: Int -> Int -> Int -> Int`.
2022-08-25 05:19:13 +0200 <famubu> Is that possible?
2022-08-25 05:21:31 +0200matthewmosior(~matthewmo@173.170.253.91) (Ping timeout: 244 seconds)
2022-08-25 05:23:59 +0200 <qrpnxz> yes it is possible. One way is to create a stream of ((->) Int), i have a hack somewhere that uses delimited continuations. See also https://hackage.haskell.org/package/base-4.17.0.0/docs/Text-Printf.html#v:printf famubu
2022-08-25 05:24:09 +0200Igloo(~ian@matrix.chaos.earth.li) (Ping timeout: 252 seconds)
2022-08-25 05:24:16 +0200Igloo(~ian@matrix.chaos.earth.li)
2022-08-25 05:27:03 +0200 <famubu> qrpnxz: /clear
2022-08-25 05:27:07 +0200 <famubu> Oops..
2022-08-25 05:27:23 +0200famubumeant that for the irc client
2022-08-25 05:27:47 +0200 <dmj`> famubu: check out the sumOf answer here: https://stackoverflow.com/a/3467806
2022-08-25 05:29:13 +0200 <qrpnxz> lmao
2022-08-25 05:32:54 +0200 <famubu> qrpnxz: Thanks!
2022-08-25 05:33:14 +0200 <famubu> dmj`: That SO post seems to have everything I need.
2022-08-25 05:34:10 +0200qrpnxz(~qrpnxz@fsf/member/qrpnxz) (Quit: WeeChat 3.5)
2022-08-25 05:36:50 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-08-25 05:38:26 +0200nate4(~nate@98.45.169.16) (Ping timeout: 260 seconds)
2022-08-25 05:38:52 +0200qrpnxz(~qrpnxz@fsf/member/qrpnxz)
2022-08-25 05:39:28 +0200 <[Leary]> famubu: Note also the comments that this approach is not idiomatic Haskell. It makes some sense when the arguments have unrelated types as in `printf`, but uniform arguments should come in a list.
2022-08-25 05:40:14 +0200 <dmj`> famubu: nice
2022-08-25 05:40:41 +0200 <dmj`> famubu: there is also just `sum` :)
2022-08-25 05:44:22 +0200 <Hash> Holy shit I just realized somethign
2022-08-25 05:44:28 +0200 <Hash> Oh wow this is even the wrong window
2022-08-25 05:44:30 +0200 <Hash> Ha.
2022-08-25 05:44:44 +0200elkcl(~elkcl@broadband-37-110-156-162.ip.moscow.rt.ru) (Ping timeout: 255 seconds)
2022-08-25 05:46:14 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex)
2022-08-25 05:48:13 +0200 <famubu> Yeah saw in that SO post, what we probably need is just a list of args instead of a variadic arg function.
2022-08-25 05:48:21 +0200segfaultfizzbuzz(~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) (Ping timeout: 260 seconds)
2022-08-25 05:52:44 +0200segfaultfizzbuzz(~segfaultf@157-131-253-58.fiber.dynamic.sonic.net)
2022-08-25 05:52:46 +0200 <Axman6> Hash: well now we have to know too!
2022-08-25 05:54:46 +0200 <famubu> If we got a function like `add :: Int -> Int -> Int`, we can do `add 3 $ 2` where the `3` sort of 'attached' first and then `2`. `$` helps avoid parenthesis. Is there a similar way to avoid parenthesis where the second argument is attached first? Something like `add _ 2 $ 3`?
2022-08-25 05:55:15 +0200 <Axman6> famubu: don;t do it though - you'll run into more problems than it helps with, particularly with type inference. Since type classes are open, you can't do things like (print $ sumOf 1 2 3) because there's no way to know which type you want to have printed - anyone could add an instance for SumRes (Maybe Bool)
2022-08-25 05:55:36 +0200qrpnxz(~qrpnxz@fsf/member/qrpnxz) (Quit: WeeChat 3.5)
2022-08-25 05:55:38 +0200 <Axman6> flip add3
2022-08-25 05:56:54 +0200 <famubu> Axman6: I need to keep that in mind.
2022-08-25 05:57:14 +0200 <Axman6> "that" = variadic functions
2022-08-25 05:57:21 +0200 <famubu> Yeah understood. :)
2022-08-25 05:57:42 +0200 <famubu> Axman6: And flip works cool. Is it often used by people? Or is it something that is considered something fancy?
2022-08-25 05:57:49 +0200merijn(~merijn@c-001-001-007.client.esciencecenter.eduvpn.nl)
2022-08-25 05:57:58 +0200 <Axman6> it's relatively common, yes
2022-08-25 05:58:26 +0200 <famubu> Okay. +1
2022-08-25 05:58:29 +0200 <Axman6> but if you need to do something more fancy, lambdas are always an option: (\x y -> foo y True 7 x)
2022-08-25 05:59:15 +0200 <[Leary]> @pl \x y -> foo y True 7 x
2022-08-25 05:59:15 +0200 <lambdabot> flip (flip (flip foo True) 7)
2022-08-25 05:59:36 +0200 <[Leary]> Crucially, the lambda is a much better option than three flips.
2022-08-25 06:00:05 +0200 <[Leary]> But one is fine.
2022-08-25 06:00:11 +0200 <famubu> What pl ask lamdabot to do?
2022-08-25 06:00:15 +0200 <famubu> *what does
2022-08-25 06:00:34 +0200 <dolio> Eliminate variable bindings.
2022-08-25 06:00:49 +0200segfaultfizzbuzz(~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) (Ping timeout: 252 seconds)
2022-08-25 06:00:51 +0200 <famubu> Ah.. okay.
2022-08-25 06:04:23 +0200nate4(~nate@98.45.169.16)
2022-08-25 06:06:54 +0200qrpnxz(~qrpnxz@fsf/member/qrpnxz)
2022-08-25 06:09:19 +0200 <Hash> Axman6: haskell without side effects is useless in any sense.
2022-08-25 06:09:41 +0200 <dibblego> lies
2022-08-25 06:11:15 +0200qrpnxz(~qrpnxz@fsf/member/qrpnxz) (Ping timeout: 248 seconds)
2022-08-25 06:11:32 +0200Sgeo_(~Sgeo@user/sgeo)
2022-08-25 06:13:07 +0200segfaultfizzbuzz(~segfaultf@157-131-253-58.fiber.dynamic.sonic.net)
2022-08-25 06:13:14 +0200qrpnxz(~qrpnxz@fsf/member/qrpnxz)
2022-08-25 06:14:27 +0200sympt(~sympt@user/sympt)
2022-08-25 06:14:29 +0200Sgeo_(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2022-08-25 06:15:11 +0200nate4(~nate@98.45.169.16) (Ping timeout: 260 seconds)
2022-08-25 06:15:46 +0200Sgeo(~Sgeo@user/sgeo) (Ping timeout: 260 seconds)
2022-08-25 06:18:53 +0200Sgeo(~Sgeo@user/sgeo)
2022-08-25 06:19:45 +0200nilradical(~nilradica@user/naso) ()
2022-08-25 06:20:42 +0200Sgeo(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2022-08-25 06:23:07 +0200elkcl(~elkcl@broadband-37-110-156-162.ip.moscow.rt.ru)
2022-08-25 06:31:32 +0200ryanbooker(uid4340@id-4340.hampstead.irccloud.com) (Quit: Connection closed for inactivity)
2022-08-25 06:32:06 +0200merijn(~merijn@c-001-001-007.client.esciencecenter.eduvpn.nl) (Ping timeout: 260 seconds)
2022-08-25 06:33:48 +0200glguy(x@libera/staff/glguy) (Quit: rebirth)
2022-08-25 06:35:39 +0200motherfsck(~motherfsc@user/motherfsck) (Ping timeout: 252 seconds)
2022-08-25 06:37:16 +0200Sgeo(~Sgeo@user/sgeo)
2022-08-25 06:39:06 +0200matthewmosior(~matthewmo@173.170.253.91) (Ping timeout: 260 seconds)
2022-08-25 06:39:35 +0200 <johnw> Hash: ?
2022-08-25 06:41:05 +0200segfaultfizzbuzz(~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) (Ping timeout: 244 seconds)
2022-08-25 06:41:29 +0200 <Axman6> at the very least, it can be used to heat up my room - thanks entropy
2022-08-25 06:43:51 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection)
2022-08-25 06:44:58 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex)
2022-08-25 06:45:10 +0200 <dmj`> Hash: Haskell has influenced a lot of languages
2022-08-25 06:45:39 +0200 <Hash> Huh?
2022-08-25 06:45:44 +0200kannon(~NK@135-180-47-54.fiber.dynamic.sonic.net) (Ping timeout: 244 seconds)
2022-08-25 06:45:48 +0200 <Hash> Guy asked me wha I realized, I told him.
2022-08-25 06:46:04 +0200 <Hash> Who wants to fight me?
2022-08-25 06:46:15 +0200Hashhands out free joints
2022-08-25 06:46:52 +0200kannon(~NK@135-180-47-54.fiber.dynamic.sonic.net)
2022-08-25 06:49:21 +0200jao(~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 244 seconds)
2022-08-25 06:49:22 +0200mbuf(~Shakthi@122.165.55.71)
2022-08-25 06:49:30 +0200nate4(~nate@98.45.169.16)
2022-08-25 06:52:14 +0200kannon(~NK@135-180-47-54.fiber.dynamic.sonic.net) (Ping timeout: 255 seconds)
2022-08-25 06:52:31 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-08-25 06:53:30 +0200king_gs(~Thunderbi@2806:103e:29:da7a:8cff:b135:3864:cc72)
2022-08-25 06:53:52 +0200kannon(~NK@135-180-47-54.fiber.dynamic.sonic.net)
2022-08-25 06:54:35 +0200nate4(~nate@98.45.169.16) (Ping timeout: 268 seconds)
2022-08-25 06:55:31 +0200motherfsck(~motherfsc@user/motherfsck)
2022-08-25 06:56:53 +0200 <monochrom> Heating up your room is still a side effect.
2022-08-25 07:05:14 +0200Guest58(~Guest58@2600:4040:b6b0:c100:e89c:a045:89de:d7a)
2022-08-25 07:11:15 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2022-08-25 07:13:54 +0200king_gs(~Thunderbi@2806:103e:29:da7a:8cff:b135:3864:cc72) (Remote host closed the connection)
2022-08-25 07:14:13 +0200king_gs(~Thunderbi@2806:103e:29:da7a:8cff:b135:3864:cc72)
2022-08-25 07:16:40 +0200Guest58(~Guest58@2600:4040:b6b0:c100:e89c:a045:89de:d7a) (Quit: Ping timeout (120 seconds))
2022-08-25 07:18:33 +0200famubu(~famubu@user/famubu) (Quit: leaving)
2022-08-25 07:21:18 +0200coot(~coot@213.134.176.158)
2022-08-25 07:22:24 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2022-08-25 07:25:48 +0200coot(~coot@213.134.176.158) (Client Quit)
2022-08-25 07:26:19 +0200coot(~coot@213.134.176.158)
2022-08-25 07:26:30 +0200motherfs1(~motherfsc@user/motherfsck)
2022-08-25 07:26:31 +0200motherfsck(~motherfsc@user/motherfsck) (Read error: Connection reset by peer)
2022-08-25 07:28:51 +0200zeenk(~zeenk@2a02:2f04:a311:2d00:6865:d863:4c93:799f)
2022-08-25 07:31:01 +0200coot_(~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba)
2022-08-25 07:31:38 +0200 <jackdk> even putStrLn has no side-effects. It's what the runtime chooses to do with that `IO ()` that matters
2022-08-25 07:32:19 +0200coot(~coot@213.134.176.158) (Ping timeout: 248 seconds)
2022-08-25 07:34:17 +0200coot_(~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Remote host closed the connection)
2022-08-25 07:37:03 +0200coot(~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba)
2022-08-25 07:38:06 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2022-08-25 07:40:59 +0200odnes(~odnes@5-203-171-254.pat.nym.cosmote.net)
2022-08-25 07:43:28 +0200azimut(~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection)
2022-08-25 07:43:59 +0200azimut(~azimut@gateway/tor-sasl/azimut)
2022-08-25 07:45:28 +0200 <dmj`> anyone know what's going on here? https://gist.github.com/dmjio/919cf935b7e365cc427ff90e30641d9f
2022-08-25 07:46:16 +0200coot(~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Remote host closed the connection)
2022-08-25 07:47:17 +0200 <jackdk> My first thought is try turning off StarIsType
2022-08-25 07:48:28 +0200 <[_________]> dmj`: does `natVal (Proxy :: Proxy 100)` compile ? I wonder if it fails due to expression. ;)
2022-08-25 07:48:57 +0200coot(~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba)
2022-08-25 07:49:13 +0200 <dmj`> natVal (Proxy :: Proxy 100) -- compiles fine
2022-08-25 07:49:45 +0200 <dmj`> jackdk: only have data & poly kinds, type families and undecidable instances on
2022-08-25 07:49:53 +0200 <dmj`> ghc 9.2.2
2022-08-25 07:50:10 +0200 <johnw> dmj`: can you evaluate 10 * 10 at the type level like that?
2022-08-25 07:50:47 +0200 <Axman6> looks like it https://hackage.haskell.org/package/base-4.17.0.0/docs/GHC-TypeNats.html#t:-42-
2022-08-25 07:50:54 +0200 <dmj`> johnw: addition works fine, but when I try multiplication its a type error
2022-08-25 07:51:02 +0200 <dmj`> kind signatures are identical
2022-08-25 07:51:44 +0200 <[Leary]> The fact that it puts * in brackets there shows that it's not being parsed as an infix operator, but as a special identifier, which explains the error and makes sense in light of StarIsType.
2022-08-25 07:51:44 +0200 <jackdk> -XStarIsType is currently enabled by default https://www.irccloud.com/pastebin/sG58zSUJ/dmj%60
2022-08-25 07:51:47 +0200 <Axman6> I reckon trying to use {-# LANGUAGE NoStarAsType #-} should help
2022-08-25 07:51:55 +0200 <[Leary]> What they said.
2022-08-25 07:52:54 +0200 <dmj`> wild, thanks guys, [Leary] , jackdk , Axman6
2022-08-25 07:53:05 +0200 <dmj`> ghc is happy now
2022-08-25 07:53:41 +0200 <jackdk> The eventual plan is to turn it off by default, in which case it will render as `Type`, as in `Data.Kind.Type`, because there are many more kinds than Haskell98 had
2022-08-25 07:54:30 +0200coot(~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Remote host closed the connection)
2022-08-25 07:57:25 +0200coot(~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba)
2022-08-25 07:59:14 +0200nilradical(~nilradica@user/naso)
2022-08-25 07:59:32 +0200dmj`clutches his stars
2022-08-25 08:01:35 +0200coot(~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Remote host closed the connection)
2022-08-25 08:04:32 +0200coot(~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba)
2022-08-25 08:07:41 +0200nilradical(~nilradica@user/naso) (Read error: Connection reset by peer)
2022-08-25 08:08:17 +0200nilradical(~nilradica@user/naso)
2022-08-25 08:08:31 +0200 <monochrom> The star-spangled kind signature >:)
2022-08-25 08:09:38 +0200kannon(~NK@135-180-47-54.fiber.dynamic.sonic.net) (Ping timeout: 255 seconds)
2022-08-25 08:10:22 +0200kannon(~NK@135-180-47-54.fiber.dynamic.sonic.net)
2022-08-25 08:10:34 +0200Axman6salutes the Type spangled banner
2022-08-25 08:13:06 +0200nilradical(~nilradica@user/naso) (Read error: Connection reset by peer)
2022-08-25 08:13:40 +0200 <monochrom> "I can't let you do that, Dave"
2022-08-25 08:13:51 +0200nilradical(~nilradica@user/naso)
2022-08-25 08:14:36 +0200kannon(~NK@135-180-47-54.fiber.dynamic.sonic.net) (Ping timeout: 244 seconds)
2022-08-25 08:14:47 +0200coot(~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Remote host closed the connection)
2022-08-25 08:17:45 +0200coot(~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba)
2022-08-25 08:19:02 +0200nilradical(~nilradica@user/naso) (Ping timeout: 268 seconds)
2022-08-25 08:21:03 +0200mima(mmh@gateway/vpn/airvpn/mima)
2022-08-25 08:23:36 +0200coot(~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Remote host closed the connection)
2022-08-25 08:24:47 +0200jao(~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net)
2022-08-25 08:26:22 +0200coot(~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba)
2022-08-25 08:26:29 +0200coot(~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Remote host closed the connection)
2022-08-25 08:28:37 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2022-08-25 08:30:24 +0200yvan-sraka(~yvan-srak@2a02:2788:224:71c:b753:993e:4a:e55)
2022-08-25 08:33:27 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2022-08-25 08:33:27 +0200merijn(~merijn@c-001-001-007.client.esciencecenter.eduvpn.nl)
2022-08-25 08:35:20 +0200yvan-sraka(~yvan-srak@2a02:2788:224:71c:b753:993e:4a:e55) (Remote host closed the connection)
2022-08-25 08:35:27 +0200mc47(~mc47@xmonad/TheMC47)
2022-08-25 08:35:39 +0200yvan-sraka(~yvan-srak@2a02:2788:224:71c:4963:1d5e:3c4f:b4ac)
2022-08-25 08:36:51 +0200jonathanx(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Ping timeout: 248 seconds)
2022-08-25 08:39:45 +0200coot(~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba)
2022-08-25 08:44:40 +0200 <dminuoso> I think it was a mistake to allow non-colon type operator-constructors at all. :S
2022-08-25 08:45:18 +0200 <dminuoso> Though Im not sure this would have solved in this particular situation at all
2022-08-25 08:45:34 +0200jonathanx(~jonathan@94.234.115.159)
2022-08-25 08:48:13 +0200lortabac(~lortabac@2a01:e0a:541:b8f0:10be:940f:4ae:d4c8)
2022-08-25 08:48:16 +0200takuan(~takuan@178-116-218-225.access.telenet.be)
2022-08-25 08:48:22 +0200coot(~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Remote host closed the connection)
2022-08-25 08:50:29 +0200luffy(~chenqisu1@183.217.200.212) (Ping timeout: 268 seconds)
2022-08-25 08:51:06 +0200coot(~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba)
2022-08-25 08:51:30 +0200yvan-sraka(~yvan-srak@2a02:2788:224:71c:4963:1d5e:3c4f:b4ac) (Remote host closed the connection)
2022-08-25 08:51:44 +0200king_gs(~Thunderbi@2806:103e:29:da7a:8cff:b135:3864:cc72) (Remote host closed the connection)
2022-08-25 08:51:48 +0200yvan-sraka(~yvan-srak@2a02:2788:224:71c:2301:b332:9642:eb14)
2022-08-25 08:52:22 +0200nate4(~nate@98.45.169.16)
2022-08-25 08:53:03 +0200king_gs(~Thunderbi@2806:103e:29:da7a:8cff:b135:3864:cc72)
2022-08-25 08:54:02 +0200jonathanx(~jonathan@94.234.115.159) (Remote host closed the connection)
2022-08-25 08:54:19 +0200jonathanx(~jonathan@c-5eea739f-74736162.cust.telenor.se)
2022-08-25 08:57:21 +0200nate4(~nate@98.45.169.16) (Ping timeout: 260 seconds)
2022-08-25 08:57:43 +0200Sgeo(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2022-08-25 08:58:03 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2022-08-25 09:01:44 +0200 <sm> yesod types are intense
2022-08-25 09:04:53 +0200jonathanx(~jonathan@c-5eea739f-74736162.cust.telenor.se) (Ping timeout: 252 seconds)
2022-08-25 09:05:02 +0200jonathanx(~jonathan@h-98-128-168-222.NA.cust.bahnhof.se)
2022-08-25 09:09:52 +0200yvan-sraka(~yvan-srak@2a02:2788:224:71c:2301:b332:9642:eb14) (Remote host closed the connection)
2022-08-25 09:10:10 +0200yvan-sraka(~yvan-srak@2a02:2788:224:71c:c3d5:9201:4422:1143)
2022-08-25 09:16:17 +0200michalz(~michalz@185.246.204.75)
2022-08-25 09:21:00 +0200cfricke(~cfricke@user/cfricke)
2022-08-25 09:22:53 +0200alternateved(~user@staticline-31-183-146-203.toya.net.pl)
2022-08-25 09:23:38 +0200yvan-sraka(~yvan-srak@2a02:2788:224:71c:c3d5:9201:4422:1143) (Ping timeout: 252 seconds)
2022-08-25 09:26:27 +0200Batzy(~quassel@user/batzy) (Read error: Connection reset by peer)
2022-08-25 09:28:22 +0200nilradical(~nilradica@user/naso)
2022-08-25 09:29:56 +0200odnes(~odnes@5-203-171-254.pat.nym.cosmote.net) (Quit: Leaving)
2022-08-25 09:36:36 +0200ardell(~ardell@user/ardell)
2022-08-25 09:40:12 +0200 <dminuoso> For logging output, would you generally use a prettyprinter?
2022-08-25 09:42:30 +0200 <sm> yes
2022-08-25 09:42:48 +0200acidjnk(~acidjnk@p200300d6e7137a4448390a2d4fdf592b.dip0.t-ipconnect.de)
2022-08-25 09:42:57 +0200 <sm> ah no.. it depends.
2022-08-25 09:43:35 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2022-08-25 09:45:25 +0200 <dminuoso> Im just mildly annoyed because I have `pretty` in my dependency tree, but Im used to using `prettyprinter` which has a bit more batteries included.
2022-08-25 09:45:35 +0200eikke(~NicolasT@88.126.78.98)
2022-08-25 09:45:37 +0200 <dminuoso> And Im just questioning whether I should be using `pretty` at all now
2022-08-25 09:50:20 +0200fserucas(~fserucas@89.214.153.60)
2022-08-25 09:53:26 +0200`2jt(~jtomas@56.red-88-17-82.dynamicip.rima-tde.net)
2022-08-25 09:54:20 +0200 <sm> on another note, are there any yesod wizards about ? I'm wondering how to add a selectFieldList here:
2022-08-25 09:54:20 +0200 <sm> cfc0554#diff-4f785631673350333a037eca53769f9320f8b8a2856371597ef0687f52f86849R72-R124
2022-08-25 09:54:38 +0200 <sm> https://github.com/simonmichael/hledger/commit/cfc05540daad75a358a47741c16e7611fe42f54f#diff-4f785…
2022-08-25 09:54:50 +0200vglfr(~vglfr@145.224.94.75) (Ping timeout: 244 seconds)
2022-08-25 09:55:28 +0200 <sm> and why https://hackage.haskell.org/package/yesod-form-1.7.0/docs/Yesod-Form.html#v:selectFieldList has to run in the Handler
2022-08-25 09:57:37 +0200machinedgod(~machinedg@d198-53-218-113.abhsia.telus.net)
2022-08-25 09:58:36 +0200gurkenglas(~gurkengla@p548ac72e.dip0.t-ipconnect.de)
2022-08-25 09:58:55 +0200dsrt^(~dsrt@96.70.11.181)
2022-08-25 10:00:23 +0200tzh(~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Quit: zzz)
2022-08-25 10:02:49 +0200ccntrq(~Thunderbi@172.209.94.92.rev.sfr.net)
2022-08-25 10:05:49 +0200Pickchea(~private@user/pickchea)
2022-08-25 10:07:17 +0200wonko(~wjc@2a0e:1c80:2::130)
2022-08-25 10:12:21 +0200dsrt^(~dsrt@96.70.11.181) (Ping timeout: 252 seconds)
2022-08-25 10:21:35 +0200vglfr(~vglfr@37.73.8.134)
2022-08-25 10:21:56 +0200matthewmosior(~matthewmo@173.170.253.91) (Ping timeout: 255 seconds)
2022-08-25 10:23:08 +0200toeffel(~toeffel@user/toeffel)
2022-08-25 10:24:37 +0200shriekingnoise(~shrieking@186.137.167.202) (Quit: Quit)
2022-08-25 10:27:11 +0200GoldsteinQ(~goldstein@goldstein.rs) (Ping timeout: 260 seconds)
2022-08-25 10:32:44 +0200mc47(~mc47@xmonad/TheMC47) (Ping timeout: 255 seconds)
2022-08-25 10:34:55 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-08-25 10:38:13 +0200chele(~chele@user/chele)
2022-08-25 10:41:10 +0200zaquest(~notzaques@5.130.79.72) (Remote host closed the connection)
2022-08-25 10:41:44 +0200luffy(~chenqisu1@183.217.200.212)
2022-08-25 10:44:08 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2022-08-25 10:45:01 +0200ubert(~Thunderbi@77.119.217.249.wireless.dyn.drei.com)
2022-08-25 10:48:46 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 260 seconds)
2022-08-25 10:48:55 +0200akegalj(~akegalj@135-40.dsl.iskon.hr)
2022-08-25 10:52:19 +0200vglfr(~vglfr@37.73.8.134) (Ping timeout: 252 seconds)
2022-08-25 10:57:33 +0200nschoe(~quassel@178.251.84.79)
2022-08-25 11:00:48 +0200Pickchea(~private@user/pickchea) (Quit: Leaving)
2022-08-25 11:03:06 +0200kuribas(~user@silversquare.silversquare.eu)
2022-08-25 11:05:09 +0200Benzi-Junior(~BenziJuni@dsl-149-67-162.hive.is) (Ping timeout: 252 seconds)
2022-08-25 11:05:37 +0200adanwan(~adanwan@gateway/tor-sasl/adanwan) (Ping timeout: 268 seconds)
2022-08-25 11:05:57 +0200adanwan(~adanwan@gateway/tor-sasl/adanwan)
2022-08-25 11:06:14 +0200azimut(~azimut@gateway/tor-sasl/azimut) (Ping timeout: 268 seconds)
2022-08-25 11:06:14 +0200motersen(~motersen@user/motersen) (Ping timeout: 268 seconds)
2022-08-25 11:06:14 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 268 seconds)
2022-08-25 11:06:51 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 268 seconds)
2022-08-25 11:07:04 +0200motersen(~motersen@user/motersen)
2022-08-25 11:07:28 +0200stiell(~stiell@gateway/tor-sasl/stiell) (Ping timeout: 268 seconds)
2022-08-25 11:08:05 +0200jpds(~jpds@gateway/tor-sasl/jpds) (Ping timeout: 268 seconds)
2022-08-25 11:08:07 +0200king_gs(~Thunderbi@2806:103e:29:da7a:8cff:b135:3864:cc72) (Remote host closed the connection)
2022-08-25 11:08:26 +0200king_gs(~Thunderbi@2806:103e:29:da7a:8cff:b135:3864:cc72)
2022-08-25 11:08:30 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643)
2022-08-25 11:08:42 +0200ChaiTRex(~ChaiTRex@user/chaitrex) (Ping timeout: 268 seconds)
2022-08-25 11:08:55 +0200jpds(~jpds@gateway/tor-sasl/jpds)
2022-08-25 11:09:05 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex)
2022-08-25 11:09:33 +0200ChaiTRex(~ChaiTRex@user/chaitrex)
2022-08-25 11:09:35 +0200nate4(~nate@98.45.169.16)
2022-08-25 11:14:18 +0200nate4(~nate@98.45.169.16) (Ping timeout: 240 seconds)
2022-08-25 11:15:57 +0200azimut(~azimut@gateway/tor-sasl/azimut)
2022-08-25 11:16:38 +0200stiell(~stiell@gateway/tor-sasl/stiell)
2022-08-25 11:17:24 +0200notzmv(~zmv@user/notzmv) (Ping timeout: 268 seconds)
2022-08-25 11:23:35 +0200wonko(~wjc@2a0e:1c80:2::130) (Ping timeout: 255 seconds)
2022-08-25 11:24:17 +0200mc47(~mc47@xmonad/TheMC47)
2022-08-25 11:26:38 +0200nilradical(~nilradica@user/naso) (Remote host closed the connection)
2022-08-25 11:27:15 +0200nilradical(~nilradica@user/naso)
2022-08-25 11:32:30 +0200nilradical(~nilradica@user/naso) (Ping timeout: 264 seconds)
2022-08-25 11:35:17 +0200Benzi-Junior(~BenziJuni@88-149-67-162.du.xdsl.is)
2022-08-25 11:37:01 +0200jao(~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 268 seconds)
2022-08-25 11:38:44 +0200beteigeuze(~Thunderbi@bl11-28-222.dsl.telepac.pt)
2022-08-25 11:40:33 +0200dminuosowants SelectiveDo
2022-08-25 11:47:05 +0200econo(uid147250@user/econo) (Quit: Connection closed for inactivity)
2022-08-25 11:47:36 +0200azimut(~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection)
2022-08-25 11:48:21 +0200azimut(~azimut@gateway/tor-sasl/azimut)
2022-08-25 11:48:39 +0200vglfr(~vglfr@145.224.94.75)
2022-08-25 11:51:15 +0200adanwan(~adanwan@gateway/tor-sasl/adanwan) (Ping timeout: 268 seconds)
2022-08-25 11:51:55 +0200adanwan(~adanwan@gateway/tor-sasl/adanwan)
2022-08-25 11:52:42 +0200jpds1(~jpds@gateway/tor-sasl/jpds)
2022-08-25 11:52:52 +0200Chai-T-Rex(~ChaiTRex@user/chaitrex)
2022-08-25 11:53:06 +0200jpds(~jpds@gateway/tor-sasl/jpds) (Ping timeout: 268 seconds)
2022-08-25 11:53:43 +0200califax(~califax@user/califx) (Ping timeout: 268 seconds)
2022-08-25 11:54:24 +0200jpds1(~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection)
2022-08-25 11:55:34 +0200ChaiTRex(~ChaiTRex@user/chaitrex) (Ping timeout: 268 seconds)
2022-08-25 11:55:34 +0200jpds1(~jpds@gateway/tor-sasl/jpds)
2022-08-25 11:56:03 +0200califax(~califax@user/califx)
2022-08-25 11:57:30 +0200jpds1(~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection)
2022-08-25 11:57:30 +0200califax(~califax@user/califx) (Remote host closed the connection)
2022-08-25 11:57:52 +0200jpds1(~jpds@gateway/tor-sasl/jpds)
2022-08-25 11:58:01 +0200califax(~califax@user/califx)
2022-08-25 12:00:31 +0200nilradical(~nilradica@user/naso)
2022-08-25 12:01:02 +0200euandreh(~euandreh@179.214.113.107) (Quit: WeeChat 3.6)
2022-08-25 12:01:42 +0200adanwan(~adanwan@gateway/tor-sasl/adanwan) (Remote host closed the connection)
2022-08-25 12:01:54 +0200euandreh(~euandreh@179.214.113.107)
2022-08-25 12:02:08 +0200adanwan(~adanwan@gateway/tor-sasl/adanwan)
2022-08-25 12:03:02 +0200euandreh(~euandreh@179.214.113.107) (Client Quit)
2022-08-25 12:03:57 +0200euandreh(~euandreh@179.214.113.107)
2022-08-25 12:04:21 +0200euandreh(~euandreh@179.214.113.107) (Client Quit)
2022-08-25 12:05:32 +0200motersen(~motersen@user/motersen) ()
2022-08-25 12:05:54 +0200kannon(~NK@135-180-47-54.fiber.dynamic.sonic.net)
2022-08-25 12:06:03 +0200azimut(~azimut@gateway/tor-sasl/azimut) (Ping timeout: 268 seconds)
2022-08-25 12:10:12 +0200kannon(~NK@135-180-47-54.fiber.dynamic.sonic.net) (Ping timeout: 244 seconds)
2022-08-25 12:10:55 +0200zaquest(~notzaques@5.130.79.72)
2022-08-25 12:11:14 +0200nilradical(~nilradica@user/naso) (Remote host closed the connection)
2022-08-25 12:11:33 +0200nilradical(~nilradica@user/naso)
2022-08-25 12:15:32 +0200Pickchea(~private@user/pickchea)
2022-08-25 12:17:35 +0200mvk(~mvk@2607:fea8:5ce3:8500::a1ec) (Ping timeout: 255 seconds)
2022-08-25 12:18:08 +0200 <ardell> I've got some problems when reading from stdout (or stderr) https://paste.tomsmeding.com/sKbov0fp
2022-08-25 12:18:26 +0200 <ardell> Maybe the pipe is "full"? Because I use waitForProcess
2022-08-25 12:18:36 +0200 <ardell> But I have no idea how to handle this in Haskell
2022-08-25 12:19:36 +0200 <_________> ardell: stdin is for reading
2022-08-25 12:20:32 +0200eikke(~NicolasT@88.126.78.98) (Ping timeout: 244 seconds)
2022-08-25 12:20:38 +0200 <_________> oh, you meant process output
2022-08-25 12:20:54 +0200 <ardell> Right!
2022-08-25 12:23:02 +0200 <ardell> I don't even want to wait for the process to finish. It would be best to flush the pipe more often and process the data segmentally.
2022-08-25 12:25:44 +0200 <Maxdamantus> ardell: read the content before waiting for the process to exit.
2022-08-25 12:26:25 +0200 <Maxdamantus> ardell: reading the pipe is what allows the process to complete its `write` calls.
2022-08-25 12:27:44 +0200mc47(~mc47@xmonad/TheMC47) (Remote host closed the connection)
2022-08-25 12:27:53 +0200themc47(~mc47@xmonad/TheMC47)
2022-08-25 12:28:29 +0200 <Maxdamantus> though now that I think of it, the laziness of `hGetContents` will also be a problem.
2022-08-25 12:28:56 +0200kuribas`(~user@silversquare.silversquare.eu)
2022-08-25 12:30:51 +0200kuribas(~user@silversquare.silversquare.eu) (Ping timeout: 260 seconds)
2022-08-25 12:30:51 +0200 <Maxdamantus> turns out there's `hGetContents'` which is strict, so that should work (again, as long as you do it before waiting the process)
2022-08-25 12:32:07 +0200 <dminuoso> ardell: conduit-extras has some utilities for that.
2022-08-25 12:33:16 +0200 <dminuoso> Though it is curious that this would block
2022-08-25 12:33:32 +0200gmg(~user@user/gehmehgeh)
2022-08-25 12:33:38 +0200liz(~liz@host86-157-124-38.range86-157.btcentralplus.com)
2022-08-25 12:33:58 +0200 <Maxdamantus> Seems expected to me.
2022-08-25 12:34:20 +0200 <dminuoso> Why?
2022-08-25 12:34:22 +0200 <Maxdamantus> the process is trying to write to the stdout pipe, but nothing is reading from it.
2022-08-25 12:34:58 +0200 <dminuoso> Ohh yes, you're right
2022-08-25 12:35:04 +0200 <dminuoso> That's why readCreateProcess forks a process off
2022-08-25 12:35:27 +0200 <dminuoso> ardell: You should use hGetContents *before* waitForProcess
2022-08-25 12:35:46 +0200 <Maxdamantus> also, hGetContents'
2022-08-25 12:35:47 +0200 <dminuoso> pipes are not infinitely sized
2022-08-25 12:35:55 +0200 <Maxdamantus> (with an apostrophe)
2022-08-25 12:35:58 +0200 <dminuoso> Otherwise `seq` will block on the filled stdout pipe
2022-08-25 12:36:35 +0200 <dminuoso> Maxdamantus: That wouldnt matter here.
2022-08-25 12:36:36 +0200 <ardell> Maxdamantus: Nice! This works now: https://paste.tomsmeding.com/3u6s0f0z
2022-08-25 12:36:51 +0200 <ardell> I'll also try the strict version `hGetContents'`
2022-08-25 12:36:54 +0200 <dminuoso> ardell: You forgot to waitForProcess though.
2022-08-25 12:37:06 +0200 <dminuoso> Or you *must* use hGetContents'
2022-08-25 12:37:16 +0200nilradical(~nilradica@user/naso) (Remote host closed the connection)
2022-08-25 12:37:25 +0200 <dminuoso> Otherwise you are deferring potential failure into pure code
2022-08-25 12:37:26 +0200 <ardell> dminuoso: Because this does not work with lazy hGetContents it seems
2022-08-25 12:37:38 +0200 <dminuoso> What do you mean?
2022-08-25 12:37:49 +0200 <Maxdamantus> dminuoso: it should matter, assuming hGetContents is lazy.
2022-08-25 12:37:52 +0200nilradical(~nilradica@user/naso)
2022-08-25 12:38:05 +0200 <dminuoso> Maxdamantus: No it actually has different semantics.
2022-08-25 12:38:15 +0200 <Maxdamantus> dminuoso: since you need to iterate through the string to force the read.
2022-08-25 12:38:32 +0200 <Maxdamantus> dminuoso: hm. different how?
2022-08-25 12:40:07 +0200tcard(~tcard@p945242-ipngn9701hodogaya.kanagawa.ocn.ne.jp) (Remote host closed the connection)
2022-08-25 12:40:17 +0200 <ardell> dminuoso: https://paste.tomsmeding.com/YBnXpoNt
2022-08-25 12:40:24 +0200tcard(~tcard@114.164.44.242)
2022-08-25 12:40:39 +0200 <dminuoso> Maxdamantus: So in the general sense, with hGetContents you conceptually spawn a thread with it because you can just move on.
2022-08-25 12:40:50 +0200 <dminuoso> With hGetContents' you block
2022-08-25 12:41:08 +0200king_gs(~Thunderbi@2806:103e:29:da7a:8cff:b135:3864:cc72) (Quit: king_gs)
2022-08-25 12:41:21 +0200king_gs(~Thunderbi@187.201.216.244)
2022-08-25 12:41:23 +0200 <Maxdamantus> ardell: you should probably also wait for the process, otherwise it will be left as a zombie until your process exits.
2022-08-25 12:41:29 +0200 <dminuoso> If you first `hGetContents` and then waitForProcess you get more options, as you can spawn stuff in between
2022-08-25 12:42:19 +0200 <Maxdamantus> dminuoso: if "move on" is "wait for the child to exit", there isn't going to be anything causing the pipe to be read.
2022-08-25 12:42:21 +0200themc47(~mc47@xmonad/TheMC47) (Ping timeout: 268 seconds)
2022-08-25 12:42:56 +0200 <Maxdamantus> ie, if you only read after the child exits, which never happens.
2022-08-25 12:43:06 +0200 <dminuoso> Mmm
2022-08-25 12:43:14 +0200 <dminuoso> `process` gives me headaches
2022-08-25 12:43:16 +0200dminuososhrugs
2022-08-25 12:43:22 +0200luffy(~chenqisu1@183.217.200.212) (Remote host closed the connection)
2022-08-25 12:43:42 +0200luffy(~chenqisu1@183.217.200.212)
2022-08-25 12:43:54 +0200 <Maxdamantus> afk
2022-08-25 12:45:12 +0200 <dminuoso> ardell: By the way, `readProcess` does this wrapping for you automatically
2022-08-25 12:45:55 +0200toeffel(~toeffel@user/toeffel) (Quit: quit)
2022-08-25 12:46:27 +0200 <dminuoso> ardell: After staring at its internals, I understand *why* it uses hGetContents. In addition it uses `evaluate` inside a withForkWait wrapper, as a way to ensure writing input and reading output in parallel
2022-08-25 12:46:43 +0200nilradical(~nilradica@user/naso) (Ping timeout: 252 seconds)
2022-08-25 12:46:59 +0200 <dminuoso> There's some very careful consideration with regards to async threads there as well *shrugs*
2022-08-25 12:47:30 +0200gmg(~user@user/gehmehgeh) (Remote host closed the connection)
2022-08-25 12:48:15 +0200gmg(~user@user/gehmehgeh)
2022-08-25 12:52:55 +0200wonko(~wjc@2a0e:1c80:2::130)
2022-08-25 12:53:03 +0200 <ardell> There's still a lot I don't understand. And I just realized that `hGetContents'` is new in base-4.15 so it's quite current.
2022-08-25 12:53:39 +0200 <ardell> Would be nice to be as lazy as possible in the evaluation but still get the exitCode.
2022-08-25 12:54:09 +0200 <dminuoso> ardell: Use conduit-extras then
2022-08-25 12:54:10 +0200 <ardell> dminuoso: You read the source of `readProcess`? Maybe I should do the same first. :)
2022-08-25 12:54:19 +0200 <dminuoso> Oh, conduit-extra even
2022-08-25 12:54:24 +0200 <dminuoso> ardell: Yes.
2022-08-25 12:54:47 +0200 <dminuoso> ardell: with conduit you can *stream* the output but also get the exit code at the right moment
2022-08-25 12:55:03 +0200 <dminuoso> https://hackage.haskell.org/package/conduit-extra-1.3.6/docs/Data-Conduit-Process.html#v:sourcePro…
2022-08-25 12:55:11 +0200 <dminuoso> Or if you want all streams
2022-08-25 12:55:15 +0200 <dminuoso> tps://hackage.haskell.org/package/conduit-extra-1.3.6/docs/Data-Conduit-Process.html#v:sourceProcessWithStreams
2022-08-25 12:55:18 +0200 <dminuoso> https://hackage.haskell.org/package/conduit-extra-1.3.6/docs/Data-Conduit-Process.html#v:sourcePro…
2022-08-25 12:56:12 +0200eikke(~NicolasT@88.126.78.98)
2022-08-25 12:58:42 +0200Sinbad(~Sinbad@user/sinbad)
2022-08-25 12:59:21 +0200euandreh(~euandreh@179.214.113.107)
2022-08-25 13:00:38 +0200 <ardell> dminuoso: thanks, I'll look into this. It's not really necessary for my current use case but for later I need to learn about stream processing in Haskell anyway.
2022-08-25 13:07:52 +0200Sinbad(~Sinbad@user/sinbad) (Quit: WeeChat 3.6)
2022-08-25 13:08:37 +0200CiaoSen(~Jura@p200300c95738a5002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
2022-08-25 13:09:33 +0200pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
2022-08-25 13:13:17 +0200nilradical(~nilradica@user/naso)
2022-08-25 13:13:27 +0200 <merijn> What are we doing? parallel reading from subprocesses? :p
2022-08-25 13:13:38 +0200mc47(~mc47@xmonad/TheMC47)
2022-08-25 13:18:18 +0200 <Maxdamantus> ardell: if you're okay with it not being lazy, you could probably just do something like: exitCode <- length contents `seq` waitForProcess p
2022-08-25 13:18:28 +0200 <Maxdamantus> (using `hGetContents`)
2022-08-25 13:19:27 +0200 <merijn> Maxdamantus: That's not actually necessarily gonna work
2022-08-25 13:20:47 +0200 <merijn> Length won't finish until the handle is closed, but if the handle is closed by process termination it won't be closed until after you finish waiting
2022-08-25 13:21:01 +0200 <merijn> Additionally, the order of evaluation for seq is unspecified
2022-08-25 13:21:32 +0200 <Maxdamantus> the pipe gets closed when the child process exits, not when the parent process finishes waiting.
2022-08-25 13:21:41 +0200 <merijn> So your solution (at best) will *appear* to work non-deterministically
2022-08-25 13:22:02 +0200 <Maxdamantus> the child process terminates *before* the parent process finishes (or potentially even starts) waiting.
2022-08-25 13:23:19 +0200 <merijn> Maxdamantus: "It Depends"
2022-08-25 13:23:32 +0200 <merijn> if the handle happens to be a socket, it may stay active while the process is a zombie
2022-08-25 13:24:12 +0200 <merijn> (Although that means it's probably (maybe) fine with stdout)
2022-08-25 13:24:23 +0200euandreh(~euandreh@179.214.113.107) (Quit: WeeChat 3.6)
2022-08-25 13:24:43 +0200 <Maxdamantus> merijn: in this particular case, it's a pipe; `std_out = CreatePipe`. but actually, I'm fairly sure that won't even be true for sockets either.
2022-08-25 13:25:04 +0200 <merijn> OTOH, if I've learned one lesson the painful way, repeatedly, it's: Never do the "quick" thing when it comes to multiprocessing, it *will* fuck you over eventually in the hardest to debug ways
2022-08-25 13:25:19 +0200 <Maxdamantus> merijn: the other process will close their write end of the socket, causing `hGetContents` to reach EOF.
2022-08-25 13:25:33 +0200notzmv(~zmv@user/notzmv)
2022-08-25 13:25:53 +0200 <merijn> Maxdamantus: TCP sockets only get closed after the socket timeout expires, which is (by default, on linux) a few minutes after the process is zombified
2022-08-25 13:26:53 +0200euandreh(~euandreh@179.214.113.107)
2022-08-25 13:27:06 +0200 <Maxdamantus> merijn: you're probably thinking of cases where the other end disappears.
2022-08-25 13:27:12 +0200 <Maxdamantus> merijn: eg, due to network error.
2022-08-25 13:27:39 +0200 <merijn> Maxdamantus: No, when a process is zombified the socket is kept alive so the receiver can drain any data buffered at the OS
2022-08-25 13:27:40 +0200euandreh(~euandreh@179.214.113.107) (Client Quit)
2022-08-25 13:27:42 +0200 <Maxdamantus> merijn: if the OS running the other end of the socket is still alive, it should send some packet denoting that the socket is closed.
2022-08-25 13:28:01 +0200 <Maxdamantus> merijn: that works the same way as pipes.
2022-08-25 13:28:33 +0200 <Maxdamantus> Hmm.. Maybe I'll have to try this.
2022-08-25 13:29:34 +0200 <Maxdamantus> I wouldn't expect there to be a distinction here between pipes and TCP sockets. In both cases, the fds should be effectively `close(2)d` when the process exits, regardless of whether it's in a zombie state.
2022-08-25 13:30:10 +0200 <Maxdamantus> otherwise normal unix pipelines (eg, `cat file | cat`) wouldn't work.
2022-08-25 13:30:21 +0200wonko(~wjc@2a0e:1c80:2::130) (Ping timeout: 260 seconds)
2022-08-25 13:31:15 +0200Pickchea(~private@user/pickchea) (Ping timeout: 248 seconds)
2022-08-25 13:31:32 +0200nilradical(~nilradica@user/naso) (Remote host closed the connection)
2022-08-25 13:31:48 +0200nilradical(~nilradica@user/naso)
2022-08-25 13:32:21 +0200 <dminuoso> Also, keep async exceptions in mind.
2022-08-25 13:36:27 +0200 <merijn> dminuoso: I'd rather not xD
2022-08-25 13:36:57 +0200luffy(~chenqisu1@183.217.200.212) (Remote host closed the connection)
2022-08-25 13:37:22 +0200luffy(~chenqisu1@183.217.200.212)
2022-08-25 13:41:27 +0200 <maralorn> What the fuck! I just removed the Haskell spotlight extension from my firefox (which I wasn‘t using anyways) after noticing that it inserts a reference to google fonts into every page I was visiting.
2022-08-25 13:42:05 +0200 <maralorn> I am not certain how much data that really leaked, maybe that font call was cached most of the time, but I don‘t like it at all.
2022-08-25 13:42:50 +0200 <dminuoso> That extension is no longer available. :>
2022-08-25 13:43:37 +0200adanwan(~adanwan@gateway/tor-sasl/adanwan) (Remote host closed the connection)
2022-08-25 13:44:10 +0200luffy(~chenqisu1@183.217.200.212) (Ping timeout: 268 seconds)
2022-08-25 13:44:45 +0200adanwan(~adanwan@gateway/tor-sasl/adanwan)
2022-08-25 13:46:09 +0200 <Maxdamantus> merijn: I just tried it and the socket closes after all the data is read, when the other side is a zombie.
2022-08-25 13:46:23 +0200 <albet70> :t (|)
2022-08-25 13:46:24 +0200 <lambdabot> error: parse error on input ‘)’
2022-08-25 13:46:30 +0200 <Maxdamantus> Had to write some small C program because I couldn't convince bash to make a zombie process.
2022-08-25 13:46:49 +0200 <merijn> Maxdamantus: After all the data is read, sure, but your solution doesn't guarantee that
2022-08-25 13:47:18 +0200 <albet70> is '|' not a operator yet?
2022-08-25 13:47:37 +0200 <merijn> albet70: It can't be, it's reserved syntax
2022-08-25 13:47:38 +0200 <Maxdamantus> merijn: `length contents` will read all the data (until EOF)
2022-08-25 13:47:41 +0200 <hpc> it's syntax, like '=' and 'where'
2022-08-25 13:47:59 +0200 <merijn> Maxdamantus: No, because you rely on seq to do it, but you use seq wrong :)
2022-08-25 13:47:59 +0200 <hpc> perhaps you want (||) or (.|.)
2022-08-25 13:49:04 +0200 <albet70> could I make my own operator? does it need to change ghc parser?
2022-08-25 13:49:18 +0200 <Maxdamantus> merijn: seq will force the length to be computed before it produces the `waitForProcess p` action.
2022-08-25 13:49:31 +0200 <merijn> Maxdamantus: Seq does no such thing
2022-08-25 13:49:34 +0200jonathanx(~jonathan@h-98-128-168-222.NA.cust.bahnhof.se) (Ping timeout: 268 seconds)
2022-08-25 13:49:51 +0200 <Maxdamantus> merijn: the goal is to prevent waiting before the contents are read to EOF.
2022-08-25 13:50:35 +0200 <hpc> you can make your own operators, but they can't already be syntax
2022-08-25 13:50:43 +0200 <hpc> so you can't make (|) or (--) for instance
2022-08-25 13:50:49 +0200 <merijn> Maxdamantus: Right, but it is extremely unclear your use of seq has the semantics you want
2022-08-25 13:50:56 +0200 <hpc> maybe you can define (|||)
2022-08-25 13:51:27 +0200 <albet70> hpc , what about (/.\)
2022-08-25 13:51:51 +0200 <Maxdamantus> merijn: maybe there's a more clear way of writing it, I don't know (tbh I don't really write a lot of Haskell nowadays—though I often deal with unix fd/process semantics). but I'm pretty sure it will reliably work.
2022-08-25 13:52:38 +0200 <albet70> or (/_)
2022-08-25 13:53:39 +0200 <hpc> :t (/.\)
2022-08-25 13:53:40 +0200 <lambdabot> error: Variable not in scope: /.\
2022-08-25 13:53:44 +0200 <hpc> should work
2022-08-25 13:54:42 +0200 <hpc> i don't think (/_) will work though? '_' is a letter-y character so you can write identifiers_like_this
2022-08-25 13:54:44 +0200 <hpc> :t (/_)
2022-08-25 13:54:49 +0200 <lambdabot> error:
2022-08-25 13:54:49 +0200 <lambdabot> • Found hole: _ :: a
2022-08-25 13:54:49 +0200 <lambdabot> Where: ‘a’ is a rigid type variable bound by
2022-08-25 13:54:54 +0200 <hpc> yeah :(
2022-08-25 13:55:16 +0200 <albet70> _ doesn't exist in ghc?
2022-08-25 13:56:36 +0200 <hpc> when ghc parses the identifier "_", that means a hole
2022-08-25 13:57:11 +0200matthewmosior(~matthewmo@173.170.253.91) (Ping timeout: 260 seconds)
2022-08-25 13:57:14 +0200 <albet70> I thought that _ only existed in ghci
2022-08-25 13:57:18 +0200 <hpc> iirc it also can't be the first character of a letter-y identifier
2022-08-25 13:57:27 +0200 <merijn> hpc: It can
2022-08-25 13:57:31 +0200 <hpc> ah
2022-08-25 13:57:43 +0200 <merijn> > let _foo = 3 in _foo
2022-08-25 13:57:45 +0200 <lambdabot> 3
2022-08-25 13:57:47 +0200 <albet70> _a isn't an identifier?
2022-08-25 13:57:50 +0200 <hpc> anyhoo, otherwise it's just part of the character set you can make letter-y identifiers out of
2022-08-25 13:57:57 +0200 <hpc> merijn: oh, i was thinking of '
2022-08-25 13:58:17 +0200 <hpc> > let _a = 3 in _a
2022-08-25 13:58:18 +0200 <lambdabot> 3
2022-08-25 14:05:34 +0200cfricke(~cfricke@user/cfricke) (Quit: WeeChat 3.6)
2022-08-25 14:05:35 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex) (Quit: = "")
2022-08-25 14:11:19 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-08-25 14:11:38 +0200jonathanx(~jonathan@c-5eea739f-74736162.cust.telenor.se)
2022-08-25 14:17:21 +0200mc47(~mc47@xmonad/TheMC47) (Ping timeout: 268 seconds)
2022-08-25 14:18:31 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2022-08-25 14:18:42 +0200 <kuribas`> albet70: it's an identifier like another, however you don't get a warning if you don't use it.
2022-08-25 14:20:12 +0200 <kuribas`> I believe you can make it into a hole with some extension.
2022-08-25 14:20:24 +0200 <dminuoso> albet70: No, formally its called an "irrefutable pattern" that doesnt bind to a name.
2022-08-25 14:21:08 +0200 <kuribas`> dminuoso: you are talking about '_'?
2022-08-25 14:22:57 +0200 <dminuoso> kuribas`: Any identifier that starts with _
2022-08-25 14:23:17 +0200 <kuribas`> > let _ = 3 in _
2022-08-25 14:23:21 +0200 <dminuoso> Even `a` is an irrefutable pattern, that just happens to bind a matching value to a name
2022-08-25 14:23:22 +0200 <lambdabot> error:
2022-08-25 14:23:22 +0200 <lambdabot> • Found hole: _ :: t
2022-08-25 14:23:22 +0200 <lambdabot> Where: ‘t’ is a rigid type variable bound by
2022-08-25 14:23:33 +0200 <dminuoso> Oh.
2022-08-25 14:23:42 +0200 <dminuoso> _s is actually bindable? TIL.
2022-08-25 14:25:13 +0200euandreh(~euandreh@179.214.113.107)
2022-08-25 14:26:48 +0200 <kuribas`> dminuoso: yes, but you don't get a defined but not used error.
2022-08-25 14:27:03 +0200califax(~califax@user/califx) (Quit: ZNC 1.8.2 - https://znc.in)
2022-08-25 14:27:04 +0200califax_(~califax@user/califx)
2022-08-25 14:27:38 +0200ix(~ix@2a02:8010:674f:0:d65d:64ff:fe52:5efe) (Ping timeout: 244 seconds)
2022-08-25 14:28:16 +0200califax_califax
2022-08-25 14:31:09 +0200B-J(~BenziJuni@dsl-149-67-162.hive.is)
2022-08-25 14:31:32 +0200Benzi-Junior(~BenziJuni@88-149-67-162.du.xdsl.is) (Ping timeout: 268 seconds)
2022-08-25 14:33:01 +0200 <dminuoso> Is there something like `wither` or `traverse` that will stop on first Just?
2022-08-25 14:33:02 +0200jespada(~jespada@181.28.113.105)
2022-08-25 14:33:32 +0200 <dminuoso> Some kind of: (a -> f (Maybe b)) -> [a] -> f (Maybe b)
2022-08-25 14:33:34 +0200 <merijn> dminuoso: Sounds like you want Clowns to the left of me, Jokers to the right
2022-08-25 14:34:10 +0200matthewmosior(~matthewmo@173.170.253.91) (Remote host closed the connection)
2022-08-25 14:34:17 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-08-25 14:34:19 +0200 <merijn> dminuoso: Assuming I ever understood that paper correctly, it is McBride after all...
2022-08-25 14:34:22 +0200 <merijn> https://www.cis.upenn.edu/~cis39903/static/clowns.pdf
2022-08-25 14:35:22 +0200 <merijn> That's like a "gradual traverse" or some kinda "traverse zipper" or something
2022-08-25 14:35:41 +0200 <dminuoso> Mmm, Im not gonna depend on `bifunctors` for this one
2022-08-25 14:36:21 +0200 <jackdk> something foldMap-esque, using the `First` monoid?
2022-08-25 14:37:16 +0200 <dminuoso> jackdk: not quite foldMap, I want Applicative/Monadic effects as well
2022-08-25 14:37:26 +0200king_gs(~Thunderbi@187.201.216.244) (Ping timeout: 260 seconds)
2022-08-25 14:41:03 +0200 <merijn> dminuoso: Wait, don't you want asum?
2022-08-25 14:41:13 +0200 <merijn> > asum [Nothing, Just 2, Just 3, Nothing]
2022-08-25 14:41:15 +0200 <lambdabot> Just 2
2022-08-25 14:44:52 +0200Pickchea(~private@user/pickchea)
2022-08-25 14:45:09 +0200 <dminuoso> merijn: A sort of asumM, if you want
2022-08-25 14:45:50 +0200ncf(~n@monade.li) (Ping timeout: 268 seconds)
2022-08-25 14:46:28 +0200ncf(~n@monade.li)
2022-08-25 14:50:51 +0200matthewmosior(~matthewmo@173.170.253.91) (Remote host closed the connection)
2022-08-25 14:51:41 +0200 <lortabac> @hoogle (a -> f (Maybe b)) -> [a] -> f (Maybe b) -- dminuoso
2022-08-25 14:51:42 +0200 <lambdabot> Control.Monad.Extra firstJustM :: Monad m => (a -> m (Maybe b)) -> [a] -> m (Maybe b)
2022-08-25 14:51:42 +0200 <lambdabot> Extra firstJustM :: Monad m => (a -> m (Maybe b)) -> [a] -> m (Maybe b)
2022-08-25 14:51:47 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-08-25 14:52:10 +0200 <lortabac> apparently it's in 'extra'
2022-08-25 14:52:50 +0200mc47(~mc47@xmonad/TheMC47)
2022-08-25 14:53:04 +0200 <dminuoso> Mmm yeah that looks about right. Isnt there some way to combine First/Alt in some magical ways to get the same behavior?
2022-08-25 14:53:14 +0200 <dminuoso> It feels like there's enough parts in base
2022-08-25 14:55:01 +0200califax(~califax@user/califx) (Ping timeout: 268 seconds)
2022-08-25 14:55:58 +0200 <lortabac> maybe the Alternative instance for MaybeT?
2022-08-25 14:56:35 +0200 <dminuoso> Mmm, so then I could just `runMaybeT . asum`
2022-08-25 14:56:40 +0200 <dminuoso> That looks about right. Thanks
2022-08-25 15:01:36 +0200 <raehik> is there some common way to check approximate equality of floats? refactoring some tests that check things like (== 0.7)
2022-08-25 15:02:09 +0200toeffel(~toeffel@user/toeffel)
2022-08-25 15:02:10 +0200 <raehik> does hspec have something? or do I just roll a function and remember to use it where there are floats
2022-08-25 15:02:44 +0200califax(~califax@user/califx)
2022-08-25 15:04:09 +0200 <merijn> raehik: Yes, you compare if it's within a given epsilon
2022-08-25 15:04:29 +0200 <merijn> raehik: So, "x >= 0.7 + epsilon && x <= 0.7 + epsilon"
2022-08-25 15:04:34 +0200 <merijn> eh
2022-08-25 15:04:45 +0200 <merijn> make one of the +s a -, obviously
2022-08-25 15:05:19 +0200xff0x(~xff0x@ap007189.d.east.v6connect.net) (Ping timeout: 252 seconds)
2022-08-25 15:05:28 +0200 <raehik> OK, and no pre-rolled stuff that chooses an epsilon and hands me a type class or w/e. cheers
2022-08-25 15:06:28 +0200Pickchea(~private@user/pickchea) (Quit: Leaving)
2022-08-25 15:07:03 +0200 <raehik> drives home that the Eq instance is more about structural equality
2022-08-25 15:08:21 +0200 <merijn> There is no sensible universal epsilon
2022-08-25 15:08:47 +0200 <merijn> It's heavily computation dependent
2022-08-25 15:08:55 +0200 <merijn> not to mention dependent on your error tolerance
2022-08-25 15:11:05 +0200nate4(~nate@98.45.169.16)
2022-08-25 15:15:57 +0200nate4(~nate@98.45.169.16) (Ping timeout: 252 seconds)
2022-08-25 15:17:11 +0200toeffel(~toeffel@user/toeffel) (Quit: quit)
2022-08-25 15:22:30 +0200cfricke(~cfricke@user/cfricke)
2022-08-25 15:23:21 +0200 <kuribas`> merijn: don't you need to scale the epsilon?
2022-08-25 15:24:25 +0200dsrt^(~dsrt@96.70.11.181)
2022-08-25 15:25:00 +0200 <merijn> Yes, no, maybe
2022-08-25 15:25:11 +0200 <merijn> That's what I said: There is no sensible universal epsilon
2022-08-25 15:25:13 +0200jmdaemon(~jmdaemon@user/jmdaemon) (Ping timeout: 268 seconds)
2022-08-25 15:26:52 +0200toeffel(~toeffel@user/toeffel)
2022-08-25 15:27:03 +0200ryantrinkle(~ryan@2607:f00:3:14c0:7c6b:7160:d1ff:3f7) (Ping timeout: 244 seconds)
2022-08-25 15:27:58 +0200matthewmosior(~matthewmo@173.170.253.91) (Remote host closed the connection)
2022-08-25 15:28:47 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-08-25 15:28:55 +0200jonathanx(~jonathan@c-5eea739f-74736162.cust.telenor.se) (Read error: Connection reset by peer)
2022-08-25 15:29:18 +0200mastarija(~mastarija@2a05:4f46:e03:6000:cf81:4038:e6c6:74b4)
2022-08-25 15:30:08 +0200jonathanx(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se)
2022-08-25 15:30:14 +0200segfaultfizzbuzz(~segfaultf@157-131-253-58.fiber.dynamic.sonic.net)
2022-08-25 15:31:11 +0200king_gs(~Thunderbi@187.201.216.244)
2022-08-25 15:33:26 +0200matthewmosior(~matthewmo@173.170.253.91) (Ping timeout: 260 seconds)
2022-08-25 15:33:36 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-08-25 15:33:43 +0200akegalj(~akegalj@135-40.dsl.iskon.hr) (Quit: leaving)
2022-08-25 15:34:18 +0200mncheckm(~mncheck@193.224.205.254) (Remote host closed the connection)
2022-08-25 15:36:56 +0200segfaultfizzbuzz(~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) (Ping timeout: 255 seconds)
2022-08-25 15:37:27 +0200xff0x(~xff0x@2405:6580:b080:900:ae06:3e97:decd:45dd)
2022-08-25 15:38:41 +0200dsrt^(~dsrt@96.70.11.181) (Ping timeout: 260 seconds)
2022-08-25 15:41:00 +0200matthewmosior(~matthewmo@173.170.253.91) (Remote host closed the connection)
2022-08-25 15:47:15 +0200hpc(~juzz@ip98-169-32-242.dc.dc.cox.net) (Ping timeout: 248 seconds)
2022-08-25 15:48:27 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2022-08-25 15:49:31 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-08-25 15:50:08 +0200ix(~ix@2a02:8010:674f:0:d65d:64ff:fe52:5efe)
2022-08-25 15:50:39 +0200segfaultfizzbuzz(~segfaultf@157-131-253-58.fiber.dynamic.sonic.net)
2022-08-25 15:52:49 +0200mncheck(~mncheck@193.224.205.254)
2022-08-25 15:53:03 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 268 seconds)
2022-08-25 15:54:26 +0200matthewmosior(~matthewmo@173.170.253.91) (Ping timeout: 260 seconds)
2022-08-25 15:55:55 +0200 <merijn> bah...my carefully constructed race condition test doesn't work in one of my setups. RIP >.>
2022-08-25 15:56:17 +0200 <merijn> I wish concurrency wasn't such a 2nd class citizen in Haskell
2022-08-25 15:56:42 +0200 <merijn> Also, same, but for exceptions :p
2022-08-25 15:59:07 +0200califax(~califax@user/califx) (Remote host closed the connection)
2022-08-25 15:59:40 +0200hpc(~juzz@ip98-169-32-242.dc.dc.cox.net)
2022-08-25 16:00:00 +0200 <carbolymer> merijn: how would you make concurrency 1st class citizen?
2022-08-25 16:00:08 +0200 <carbolymer> tbh `async` is nice to work
2022-08-25 16:00:11 +0200 <carbolymer> with
2022-08-25 16:00:26 +0200 <merijn> carbolymer: the concurrency in async is implicit, though
2022-08-25 16:00:32 +0200 <merijn> It's not something you can pass around as values
2022-08-25 16:00:45 +0200califax(~califax@user/califx)
2022-08-25 16:00:47 +0200 <carbolymer> merijn: concurrency as value? elaborate pls
2022-08-25 16:00:54 +0200 <merijn> carbolymer: there's also no real effective way to manage/control thread structures
2022-08-25 16:01:04 +0200Killy(~killy@2001:470:69fc:105::2:6ec1)
2022-08-25 16:01:33 +0200 <carbolymer> merijn: there's version of `forConcurrentlyN` where you can controll the pool of threads, and I saw work stealing somewhere I think
2022-08-25 16:01:35 +0200 <merijn> carbolymer: I can explicit, inspectable hierarchies of threads you can limit
2022-08-25 16:01:54 +0200 <carbolymer> ah
2022-08-25 16:02:04 +0200 <merijn> carbolymer: I have my own library for that, because async was insufficient for what I needed
2022-08-25 16:02:40 +0200 <merijn> carbolymer: In fact, this observation that concurrency still kinda sucks in Haskell is derived directly from working on said library for doing thread pool concurrency
2022-08-25 16:03:04 +0200 <carbolymer> having few drawbacks doesn't mean "sucks"
2022-08-25 16:03:17 +0200 <merijn> carbolymer: Another example, why is everything spawned from a main thread? Why can't I have a program defined of multiple independent entry points
2022-08-25 16:03:32 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-08-25 16:03:39 +0200 <carbolymer> merijn: valid point
2022-08-25 16:03:45 +0200 <merijn> carbolymer: You say "few drawbacks", I say "no mortal has any hope of ever constructing correct code with this"
2022-08-25 16:03:59 +0200 <merijn> I mean, don't get me wrong, Haskell is still miles better than many other languages
2022-08-25 16:04:38 +0200 <carbolymer> merijn: well if you're careful e.g. you build your multithreaded program in term of "tasks" and then throw them into pool of threads, it's fine; at least it worked for me in 90% of the cases
2022-08-25 16:05:01 +0200 <merijn> But, having worked on distributed systems and concurrent runtimes for most of the past 1.5 decade, I'd consider myself fairly expert in writing this stuff. And I have very little faith in my ability to create actually correct stuff
2022-08-25 16:05:15 +0200 <merijn> carbolymer: That's the entire problem with the current tools
2022-08-25 16:05:19 +0200 <geekosaur> merijn, because only windows supports that concept and even that requires a hack
2022-08-25 16:05:27 +0200 <merijn> carbolymer: They kinda, mostly work 90-95% of the time
2022-08-25 16:05:36 +0200 <merijn> Which lulls you into a false sense of security
2022-08-25 16:05:55 +0200 <merijn> geekosaur: Nonsense, you can easily support that in the runtime
2022-08-25 16:06:00 +0200segfaultfizzbuzz(~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) (Ping timeout: 268 seconds)
2022-08-25 16:06:06 +0200 <merijn> geekosaur: There's no reason the language/compiler couldn't handle that
2022-08-25 16:06:23 +0200kannon(~NK@135-180-47-54.fiber.dynamic.sonic.net)
2022-08-25 16:06:31 +0200 <carbolymer> merijn: so you would like to have java-like ForkJoinPool?
2022-08-25 16:06:44 +0200 <merijn> carbolymer: I don't know java's forkjoinpool, so I can't say
2022-08-25 16:07:24 +0200lortabac(~lortabac@2a01:e0a:541:b8f0:10be:940f:4ae:d4c8) (Quit: WeeChat 2.8)
2022-08-25 16:07:32 +0200 <merijn> I don't think it'd even be TOO hard to make GHC/Haskell's support better, I just fear it can't be done backwards compatibly and therefore a doomed effort from the start :\
2022-08-25 16:07:36 +0200 <carbolymer> merijn: a thread pool which can grow, then from the tasks in the thread pool you can push more tasks into the pool, and there was a way to collect everything afair
2022-08-25 16:08:29 +0200 <merijn> carbolymer: The problem is that async exception make everything nearly infinitely hard and the compiler/runtime don't have any adequate tooling/support for managing that
2022-08-25 16:09:09 +0200ryantrinkle(~ryan@2607:fb90:cd1c:c620:bd17:cb61:34d1:12f)
2022-08-25 16:09:28 +0200shriekingnoise(~shrieking@186.137.167.202)
2022-08-25 16:09:46 +0200 <merijn> carbolymer: Your "worked for me in 90% of the cases" is true, until you have to deal with async exceptions. And having wrapped my stuff into a library that I'm actually using (as are some others) you suddenly realise that you can't control the rest of the world and somehow have to handle that stuff properly 100% of the time, not 95%
2022-08-25 16:10:46 +0200kannon(~NK@135-180-47-54.fiber.dynamic.sonic.net) (Ping timeout: 260 seconds)
2022-08-25 16:10:52 +0200 <merijn> I end up basically manually auditing the transitive callgraphs of some functions to handle things reliably. Which sucks, because transitive callgraphs are notoriously unstable >.>
2022-08-25 16:11:09 +0200 <merijn> I want better tools to cover this stuff without going through that effort
2022-08-25 16:11:18 +0200ardell(~ardell@user/ardell) (Quit: Leaving)
2022-08-25 16:11:21 +0200 <carbolymer> merijn: I prefer to avoid them as much as I can
2022-08-25 16:11:54 +0200 <carbolymer> merijn: because it will confuse af next person looking at my code using async exceptions for communication
2022-08-25 16:12:20 +0200 <merijn> carbolymer: the problem is that you have no other way of stopping running threads
2022-08-25 16:12:39 +0200 <carbolymer> I know
2022-08-25 16:12:43 +0200 <carbolymer> sadpikatchu.jpg
2022-08-25 16:12:44 +0200 <merijn> carbolymer: And since there is no way to monitor "child" threads (or even a notion of child threads or thread groups) async exceptions are the only way
2022-08-25 16:13:19 +0200 <carbolymer> merijn: would you rather not have them in GHC?
2022-08-25 16:13:39 +0200 <merijn> carbolymer: I want things like hierarchies, monitors, "thread groups per library" so that libraries that use concurrency internally can expose control over that concurrency to their callers
2022-08-25 16:13:53 +0200 <merijn> error handling/termination handling
2022-08-25 16:14:35 +0200 <carbolymer> merijn: is there a language with those concurrency features out there?
2022-08-25 16:14:47 +0200 <carbolymer> I'm curious how it would work in practice
2022-08-25 16:15:38 +0200king_gs(~Thunderbi@187.201.216.244) (Ping timeout: 255 seconds)
2022-08-25 16:16:08 +0200 <merijn> carbolymer: Erlang has some, but not all
2022-08-25 16:16:39 +0200 <merijn> Oh, I'd also want a method of limiting who can async interrupt, that alone would simplify live drastically
2022-08-25 16:19:21 +0200causal(~user@50.35.83.177) (Quit: WeeChat 3.6)
2022-08-25 16:21:49 +0200matthewmosior(~matthewmo@173.170.253.91) (Ping timeout: 244 seconds)
2022-08-25 16:22:18 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-08-25 16:23:08 +0200gurkenglas(~gurkengla@p548ac72e.dip0.t-ipconnect.de) (Ping timeout: 268 seconds)
2022-08-25 16:24:40 +0200segfaultfizzbuzz(~segfaultf@157-131-253-58.fiber.dynamic.sonic.net)
2022-08-25 16:24:58 +0200 <merijn> Now I just need someone to pay for the time it takes to invent ;)
2022-08-25 16:25:05 +0200 <carbolymer> invent
2022-08-25 16:25:07 +0200 <carbolymer> or implement?
2022-08-25 16:25:32 +0200 <merijn> both
2022-08-25 16:25:36 +0200 <carbolymer> :)
2022-08-25 16:25:51 +0200 <merijn> you'd have to figure out all the details on how to implement it
2022-08-25 16:26:16 +0200 <merijn> Sadly there are fairly little jobs whose description is "hack on whatever pet compiler feature you like" :p
2022-08-25 16:28:10 +0200gurkenglas(~gurkengla@p548ac72e.dip0.t-ipconnect.de)
2022-08-25 16:30:42 +0200 <carbolymer> well if it's not 50% of your job time, it shouldn't be a big problem
2022-08-25 16:32:48 +0200 <carbolymer> merijn: do you have any good resources to read up about concurrency or its problems?
2022-08-25 16:34:03 +0200 <merijn> Not really, same problem as when people ask me about computer performance, I learned most I know through osmosis of hanging around in environments where people work on that. Which isn't a very easily followed method of learning :p
2022-08-25 16:34:39 +0200 <carbolymer> I feel that there's no good book about concurrency in general
2022-08-25 16:35:03 +0200 <carbolymer> and most of my stuff I've learned from "Java Concurrency in Practice" which is quite good, even when you're not writing Java
2022-08-25 16:35:33 +0200waleee(~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340)
2022-08-25 16:35:47 +0200 <merijn> Simon Marlow's Parallel & Concurrent Haskell is a good book, but I'm not sure to what extent it helps understand the scope of problems
2022-08-25 16:36:51 +0200 <carbolymer> I feel that "Parallel & Concurrent Haskell" is very haskell-related, and covers good practices; I'd love to read about the bad ones :)
2022-08-25 16:37:50 +0200ryantrinkle(~ryan@2607:fb90:cd1c:c620:bd17:cb61:34d1:12f) (Ping timeout: 244 seconds)
2022-08-25 16:37:53 +0200shriekingnoise(~shrieking@186.137.167.202) (Quit: Quit)
2022-08-25 16:37:53 +0200cfricke(~cfricke@user/cfricke) (Quit: WeeChat 3.6)
2022-08-25 16:41:00 +0200gurkenglas(~gurkengla@p548ac72e.dip0.t-ipconnect.de) (Ping timeout: 268 seconds)
2022-08-25 16:41:23 +0200shriekingnoise(~shrieking@186.137.167.202)
2022-08-25 16:45:35 +0200yvan-sraka(~yvan-srak@37.171.49.59)
2022-08-25 16:49:42 +0200dos__^^(~user@user/dos/x-1723657) (Remote host closed the connection)
2022-08-25 16:52:10 +0200dos__^^(~user@user/dos/x-1723657)
2022-08-25 16:55:00 +0200zebrag(~chris@user/zebrag)
2022-08-25 16:55:50 +0200yvan-sraka(~yvan-srak@37.171.49.59) (Remote host closed the connection)
2022-08-25 16:56:09 +0200yvan-sraka(~yvan-srak@37.171.49.59)
2022-08-25 16:57:38 +0200dsrt^(~dsrt@96.70.11.181)
2022-08-25 17:00:45 +0200tzh(~tzh@c-24-21-73-154.hsd1.wa.comcast.net)
2022-08-25 17:07:13 +0200adanwan(~adanwan@gateway/tor-sasl/adanwan) (Remote host closed the connection)
2022-08-25 17:07:15 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 248 seconds)
2022-08-25 17:07:35 +0200adanwan(~adanwan@gateway/tor-sasl/adanwan)
2022-08-25 17:08:31 +0200cfricke(~cfricke@user/cfricke)
2022-08-25 17:09:06 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2022-08-25 17:09:45 +0200toeffel(~toeffel@user/toeffel) (Quit: quit)
2022-08-25 17:10:00 +0200dsrt^(~dsrt@96.70.11.181) (Ping timeout: 268 seconds)
2022-08-25 17:18:04 +0200toeffel(~toeffel@user/toeffel)
2022-08-25 17:21:27 +0200ryantrinkle(~ryan@2607:f00:3:14c0:7c6b:7160:d1ff:3f7)
2022-08-25 17:25:50 +0200ober_(~ober@c-24-61-80-64.hsd1.ma.comcast.net)
2022-08-25 17:26:36 +0200eikke(~NicolasT@88.126.78.98) (Ping timeout: 260 seconds)
2022-08-25 17:27:51 +0200 <ober_> What are the Paths_.* modules for and where are they documented?
2022-08-25 17:28:10 +0200nilradical(~nilradica@user/naso) ()
2022-08-25 17:28:21 +0200 <merijn> ober_: They're generated by cabal and used for accessing package metadata (and thus documented in the cabal docs)
2022-08-25 17:28:32 +0200matthewmosior(~matthewmo@173.170.253.91) (Ping timeout: 255 seconds)
2022-08-25 17:28:35 +0200 <geekosaur> https://cabal.readthedocs.io/en/3.6/cabal-package.html?highlight=Paths_pkgname#accessing-data-file…
2022-08-25 17:29:24 +0200 <albet70> what's the benefit of do notation?
2022-08-25 17:29:36 +0200 <merijn> albet70: It's easy to read and write?
2022-08-25 17:29:46 +0200 <geekosaur> it lets you write imperative-ish code somewhat more naturally
2022-08-25 17:29:51 +0200 <albet70> when to use >>= and when for do notation?
2022-08-25 17:30:14 +0200 <geekosaur> I generally use >>= for short stuff and do notation for longer stuff
2022-08-25 17:30:23 +0200toeffel(~toeffel@user/toeffel) (Quit: quit)
2022-08-25 17:34:00 +0200toeffel(~toeffel@user/toeffel)
2022-08-25 17:34:40 +0200 <pareto-optimal-d> geekosaur: I do the same. Also use >>= a lot in ghci because if everything is one line it's more convenient history.
2022-08-25 17:34:51 +0200mvk(~mvk@2607:fea8:5ce3:8500::a1ec)
2022-08-25 17:34:51 +0200gentauro(~gentauro@user/gentauro) (Read error: Connection reset by peer)
2022-08-25 17:38:44 +0200coot(~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot)
2022-08-25 17:40:06 +0200gentauro(~gentauro@user/gentauro)
2022-08-25 17:45:58 +0200yvan-sraka(~yvan-srak@37.171.49.59) (Remote host closed the connection)
2022-08-25 17:47:50 +0200rik_tig(~rik_tig@user/rik-tig/x-5430394)
2022-08-25 17:49:58 +0200dsrt^(~dsrt@96.70.11.181)
2022-08-25 17:50:04 +0200segfaultfizzbuzz(~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) (Ping timeout: 268 seconds)
2022-08-25 17:54:36 +0200toeffel(~toeffel@user/toeffel) (Quit: quit)
2022-08-25 17:54:38 +0200yvan-sraka(~yvan-srak@37.173.219.26)
2022-08-25 17:57:34 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-08-25 18:03:57 +0200kuribas`(~user@silversquare.silversquare.eu) (Remote host closed the connection)
2022-08-25 18:05:51 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2022-08-25 18:06:46 +0200cfricke(~cfricke@user/cfricke) (Quit: WeeChat 3.6)
2022-08-25 18:08:12 +0200jao(~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net)
2022-08-25 18:11:20 +0200eikke(~NicolasT@88.126.78.98)
2022-08-25 18:11:33 +0200 <eikke> I have a package which uses an internal/named library next to the public one. The public library exports some definitions from modules in the internal one. When I render Haddocks locally, the documentation of those re-exported values shows up nicely. However, on Hackage (manually uploaded docs using --haddock-for-hackage), these re-exported values are listed but they don't have any documentation attached
2022-08-25 18:11:39 +0200 <eikke> to them. Is this a known issue?
2022-08-25 18:12:03 +0200yvan-sraka(~yvan-srak@37.173.219.26) (Remote host closed the connection)
2022-08-25 18:13:16 +0200dsrt^(~dsrt@96.70.11.181) (Ping timeout: 260 seconds)
2022-08-25 18:13:28 +0200chele(~chele@user/chele) (Quit: Leaving)
2022-08-25 18:14:49 +0200 <merijn> eikke: It is
2022-08-25 18:15:08 +0200 <merijn> eikke: It's been there for at least 4 years, I think?
2022-08-25 18:15:09 +0200eikke(~NicolasT@88.126.78.98) (Changing host)
2022-08-25 18:15:09 +0200eikke(~NicolasT@user/NicolasT)
2022-08-25 18:15:14 +0200 <merijn> I should have an issue about it
2022-08-25 18:15:52 +0200toeffel(~toeffel@user/toeffel)
2022-08-25 18:16:36 +0200 <eikke> Any known work-arounds?
2022-08-25 18:16:40 +0200 <merijn> eikke: Does it work if you explicitly re-export symbols?
2022-08-25 18:16:53 +0200 <merijn> Or where you already doing that?
2022-08-25 18:17:16 +0200 <eikke> That's what I'm doing :) module M (foo) where import MInternal (foo) (etc)
2022-08-25 18:19:08 +0200 <merijn> eikke: hmm, maybe a different issue then I was thinking off
2022-08-25 18:19:49 +0200 <eikke> Maybe I should try with some newer version of cabal/haddock/...
2022-08-25 18:20:38 +0200mvk(~mvk@2607:fea8:5ce3:8500::a1ec) (Ping timeout: 240 seconds)
2022-08-25 18:20:54 +0200 <merijn> eikke: Also might wanna look into the home module/visibility story of haddock https://haskell-haddock.readthedocs.io/en/latest/markup.html?#hyperlinking-and-re-exported-entities
2022-08-25 18:22:39 +0200ec(~ec@gateway/tor-sasl/ec)
2022-08-25 18:25:00 +0200cstml(~cstml@user/cstml)
2022-08-25 18:28:28 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2022-08-25 18:29:18 +0200alternateved(~user@staticline-31-183-146-203.toya.net.pl) (Remote host closed the connection)
2022-08-25 18:30:26 +0200segfaultfizzbuzz(~segfaultf@157-131-253-58.fiber.dynamic.sonic.net)
2022-08-25 18:32:29 +0200FragByte_(~christian@user/fragbyte)
2022-08-25 18:33:06 +0200fserucas(~fserucas@89.214.153.60) (Ping timeout: 260 seconds)
2022-08-25 18:35:44 +0200FragByte(~christian@user/fragbyte) (Ping timeout: 268 seconds)
2022-08-25 18:35:44 +0200FragByte_FragByte
2022-08-25 18:36:00 +0200mbuf(~Shakthi@122.165.55.71) (Quit: Leaving)
2022-08-25 18:36:02 +0200zebrag(~chris@user/zebrag) (Quit: Konversation terminated!)
2022-08-25 18:36:25 +0200zebrag(~chris@user/zebrag)
2022-08-25 18:37:01 +0200cstml(~cstml@user/cstml) (Quit: WeeChat 3.5)
2022-08-25 18:41:17 +0200machinedgod(~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 252 seconds)
2022-08-25 18:43:10 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2022-08-25 18:47:06 +0200segfaultfizzbuzz(~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) (Ping timeout: 260 seconds)
2022-08-25 18:49:26 +0200nschoe(~quassel@178.251.84.79) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
2022-08-25 18:49:39 +0200ubert(~Thunderbi@77.119.217.249.wireless.dyn.drei.com) (Ping timeout: 248 seconds)
2022-08-25 18:50:02 +0200ubert(~Thunderbi@77.119.173.191.wireless.dyn.drei.com)
2022-08-25 18:50:09 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2022-08-25 18:50:56 +0200cstml(~cstml@user/cstml)
2022-08-25 18:53:34 +0200cstml(~cstml@user/cstml) (Client Quit)
2022-08-25 18:54:29 +0200paddymahoney(~paddymaho@cpe9050ca207f83-cm9050ca207f80.cpe.net.cable.rogers.com) (Ping timeout: 252 seconds)
2022-08-25 18:55:16 +0200CiaoSen(~Jura@p200300c95738a5002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 244 seconds)
2022-08-25 19:00:04 +0200pavonia(~user@user/siracusa) (Quit: Bye!)
2022-08-25 19:00:19 +0200waleee(~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 248 seconds)
2022-08-25 19:01:58 +0200califax(~califax@user/califx) (Remote host closed the connection)
2022-08-25 19:03:12 +0200califax(~califax@user/califx)
2022-08-25 19:10:32 +0200ardell(~ardell@user/ardell)
2022-08-25 19:12:36 +0200nate4(~nate@98.45.169.16)
2022-08-25 19:13:36 +0200vglfr(~vglfr@145.224.94.75) (Read error: Connection reset by peer)
2022-08-25 19:13:43 +0200vglfr(~vglfr@145.224.94.75)
2022-08-25 19:15:35 +0200segfaultfizzbuzz(~segfaultf@157-131-253-58.fiber.dynamic.sonic.net)
2022-08-25 19:17:38 +0200nate4(~nate@98.45.169.16) (Ping timeout: 268 seconds)
2022-08-25 19:20:06 +0200segfaultfizzbuzz(~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) (Ping timeout: 268 seconds)
2022-08-25 19:27:10 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2022-08-25 19:30:37 +0200merijn(~merijn@c-001-001-007.client.esciencecenter.eduvpn.nl) (Ping timeout: 268 seconds)
2022-08-25 19:31:54 +0200AlexNoo_(~AlexNoo@178.34.163.186)
2022-08-25 19:33:46 +0200AlexZenon(~alzenon@178.34.150.204) (Ping timeout: 260 seconds)
2022-08-25 19:34:59 +0200Alex_test(~al_test@178.34.150.204) (Ping timeout: 248 seconds)
2022-08-25 19:35:31 +0200AlexNoo(~AlexNoo@178.34.150.204) (Ping timeout: 268 seconds)
2022-08-25 19:35:41 +0200ober_(~ober@c-24-61-80-64.hsd1.ma.comcast.net) (Quit: Leaving)
2022-08-25 19:36:17 +0200rik_tig(~rik_tig@user/rik-tig/x-5430394) (Ping timeout: 252 seconds)
2022-08-25 19:37:37 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2022-08-25 19:39:03 +0200Alex_test(~al_test@178.34.163.186)
2022-08-25 19:39:04 +0200jmdaemon(~jmdaemon@user/jmdaemon)
2022-08-25 19:39:16 +0200AlexZenon(~alzenon@178.34.163.186)
2022-08-25 19:41:25 +0200eikke(~NicolasT@user/NicolasT) (Ping timeout: 252 seconds)
2022-08-25 19:42:03 +0200eikke(~NicolasT@user/NicolasT)
2022-08-25 19:46:36 +0200eikke(~NicolasT@user/NicolasT) (Ping timeout: 260 seconds)
2022-08-25 19:47:58 +0200jespada(~jespada@181.28.113.105) (Quit: Textual IRC Client: www.textualapp.com)
2022-08-25 19:48:38 +0200segfaultfizzbuzz(~segfaultf@157-131-253-58.fiber.dynamic.sonic.net)
2022-08-25 19:49:28 +0200kannon(~NK@135-180-47-54.fiber.dynamic.sonic.net)
2022-08-25 19:51:56 +0200Tuplanolla(~Tuplanoll@91-159-69-12.elisa-laajakaista.fi)
2022-08-25 19:52:50 +0200cheater(~Username@user/cheater) (Quit: BitchX: good to the last drop!)
2022-08-25 19:53:03 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2022-08-25 19:53:26 +0200segfaultfizzbuzz(~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) (Ping timeout: 268 seconds)
2022-08-25 19:53:26 +0200rik_tig(~rik_tig@user/rik-tig/x-5430394)
2022-08-25 19:53:30 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2022-08-25 19:54:11 +0200kannon(~NK@135-180-47-54.fiber.dynamic.sonic.net) (Ping timeout: 260 seconds)
2022-08-25 19:56:45 +0200merijn(~merijn@c-001-001-007.client.esciencecenter.eduvpn.nl)
2022-08-25 19:58:36 +0200econo(uid147250@user/econo)
2022-08-25 19:59:07 +0200Pickchea(~private@user/pickchea)
2022-08-25 20:02:30 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2022-08-25 20:06:25 +0200mhatta(~mhatta@www21123ui.sakura.ne.jp)
2022-08-25 20:06:52 +0200kannon(~NK@135-180-47-54.fiber.dynamic.sonic.net)
2022-08-25 20:09:06 +0200hgolden(~hgolden2@cpe-172-251-233-141.socal.res.rr.com) (Remote host closed the connection)
2022-08-25 20:10:12 +0200glguy(x@libera/staff-emeritus/glguy)
2022-08-25 20:11:26 +0200kannon(~NK@135-180-47-54.fiber.dynamic.sonic.net) (Ping timeout: 255 seconds)
2022-08-25 20:28:54 +0200instantaphex(~jb@c-73-171-252-84.hsd1.fl.comcast.net)
2022-08-25 20:30:51 +0200merijn(~merijn@c-001-001-007.client.esciencecenter.eduvpn.nl) (Ping timeout: 244 seconds)
2022-08-25 20:31:13 +0200guest8080(~guest8080@207.102.57.162)
2022-08-25 20:33:16 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2022-08-25 20:34:44 +0200Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Ping timeout: 268 seconds)
2022-08-25 20:35:48 +0200Lord_of_Life(~Lord@user/lord-of-life/x-2819915)
2022-08-25 20:38:24 +0200kannon(~NK@135-180-47-54.fiber.dynamic.sonic.net)
2022-08-25 20:38:41 +0200coot(~coot@213.134.176.158)
2022-08-25 20:38:56 +0200segfaultfizzbuzz(~segfaultf@157-131-253-58.fiber.dynamic.sonic.net)
2022-08-25 20:39:17 +0200 <guest8080> So, I'm thinking about doing a Haskell project to learn some more about it.  I have some functional programming understanding.  What I'm trying to decide on is what packages should I base my project on (json/yaml parser as an example say).  I've looked through hackage and I it looks like the entire history is there but no way to understand what
2022-08-25 20:39:17 +0200 <guest8080> are the currently used packages vs older (dying?) packages.  What should someone starting out look for to make good package dependency decisions?
2022-08-25 20:40:15 +0200 <Clint> guest8080: if they're in stackage, you can infer that they haven't completely bitrotted to the point of unbuildability
2022-08-25 20:41:51 +0200 <guest8080> Ok, great.  I'll look there first or for confirmation.  Thanks!
2022-08-25 20:42:29 +0200azimut(~azimut@gateway/tor-sasl/azimut)
2022-08-25 20:42:44 +0200kannon(~NK@135-180-47-54.fiber.dynamic.sonic.net) (Ping timeout: 244 seconds)
2022-08-25 20:43:23 +0200segfaultfizzbuzz(~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) (Ping timeout: 252 seconds)
2022-08-25 20:43:27 +0200guest8080(~guest8080@207.102.57.162) (Quit: Client closed)
2022-08-25 20:44:31 +0200emad(~emad@156.214.65.212)
2022-08-25 20:44:46 +0200emad(~emad@156.214.65.212) (Remote host closed the connection)
2022-08-25 20:46:13 +0200benin0(~benin@183.82.205.66)
2022-08-25 20:49:18 +0200instantaphex(~jb@c-73-171-252-84.hsd1.fl.comcast.net) (Ping timeout: 240 seconds)
2022-08-25 20:50:42 +0200ardell_(~ardell@user/ardell)
2022-08-25 20:53:12 +0200lortabac(~lortabac@2a01:e0a:541:b8f0:a028:dd7c:b36:1982)
2022-08-25 20:53:50 +0200ardell(~ardell@user/ardell) (Ping timeout: 268 seconds)
2022-08-25 20:57:46 +0200`2jt(~jtomas@56.red-88-17-82.dynamicip.rima-tde.net) (Ping timeout: 260 seconds)
2022-08-25 21:00:31 +0200ccntrq(~Thunderbi@172.209.94.92.rev.sfr.net) (Remote host closed the connection)
2022-08-25 21:01:38 +0200AlexNoo_AlexNoo
2022-08-25 21:02:02 +0200Midjak(~Midjak@82.66.147.146)
2022-08-25 21:02:28 +0200td_(~td@94.134.91.83) (Quit: waking up from the american dream ...)
2022-08-25 21:05:20 +0200darkstardev13(~darkstard@50.53.212.60)
2022-08-25 21:05:24 +0200tzh_(~tzh@c-24-21-73-154.hsd1.or.comcast.net)
2022-08-25 21:05:27 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Read error: Connection reset by peer)
2022-08-25 21:05:28 +0200darkstarx(~darkstard@50.53.212.60) (Remote host closed the connection)
2022-08-25 21:05:37 +0200tzh(~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Remote host closed the connection)
2022-08-25 21:05:38 +0200AlexZenon_2(~alzenon@178.34.163.186)
2022-08-25 21:06:11 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2022-08-25 21:07:13 +0200AlexZenon(~alzenon@178.34.163.186) (Ping timeout: 252 seconds)
2022-08-25 21:09:01 +0200Miliang(~Miliang@46.245.107.78)
2022-08-25 21:11:46 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2022-08-25 21:13:05 +0200toeffel(~toeffel@user/toeffel) (Ping timeout: 252 seconds)
2022-08-25 21:13:42 +0200Miliang(~Miliang@46.245.107.78) (Client Quit)
2022-08-25 21:14:33 +0200merijn(~merijn@c-001-001-007.client.esciencecenter.eduvpn.nl)
2022-08-25 21:15:47 +0200AlexZenon_2(~alzenon@178.34.163.186) (Read error: Connection reset by peer)
2022-08-25 21:15:47 +0200Alex_test(~al_test@178.34.163.186) (Read error: Connection reset by peer)
2022-08-25 21:15:51 +0200waleee(~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340)
2022-08-25 21:16:05 +0200Alex_test(~al_test@178.34.163.186)
2022-08-25 21:16:05 +0200AlexZenon(~alzenon@178.34.163.186)
2022-08-25 21:18:44 +0200 <troydm> are monad calls like a >> b tail recursive?
2022-08-25 21:19:07 +0200 <troydm> e.g. optimized by compiler during runtime to be tail recursive?
2022-08-25 21:19:15 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2022-08-25 21:19:19 +0200merijn(~merijn@c-001-001-007.client.esciencecenter.eduvpn.nl) (Ping timeout: 252 seconds)
2022-08-25 21:19:59 +0200`2jt(~jtomas@56.red-88-17-82.dynamicip.rima-tde.net)
2022-08-25 21:21:00 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2022-08-25 21:26:32 +0200 <tdammers> I think you mean "tail *call*" - >> itself is not recursive, so it can't be tail recursive either
2022-08-25 21:27:29 +0200 <tdammers> except that Haskell doesn't really have "calls", the execution model works somewhat differently
2022-08-25 21:28:12 +0200 <tdammers> and: >> is a typeclass method, meaning that it's polymorphic, and its performance characteristics depend on the concrete implementation (i.e., which Monad instance you pick)
2022-08-25 21:29:03 +0200 <tdammers> calling it a "monad call" is misleading, because the "monad" part isn't relevant to the evaluation semantics either
2022-08-25 21:29:53 +0200segfaultfizzbuzz(~segfaultf@157-131-253-58.fiber.dynamic.sonic.net)
2022-08-25 21:30:18 +0200 <tdammers> HOWEVER - in general, recursion is efficient in Haskell; tail recursion will generally run in constant space. It's not "tail call optimization" in the classic sense though, it's just a consequence of how Haskell evaluates expressions.
2022-08-25 21:31:05 +0200 <tdammers> And because >> is just a regular typeclass method that resolves to a vanilla Haskell function, it is just as efficient
2022-08-25 21:33:11 +0200 <tdammers> If you want to see for yourself, try something like this: foldl' (>>) (putStrLn "Let's go!") (map print ([0..] :: Integer))
2022-08-25 21:33:22 +0200_73(~user@pool-71-184-136-42.bstnma.fios.verizon.net) (Ping timeout: 268 seconds)
2022-08-25 21:33:43 +0200 <tdammers> This will not overflow a call stack - it will happily churn along in mostly constant memory, until the integers get so big that they eat up all your RAM
2022-08-25 21:34:21 +0200segfaultfizzbuzz(~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) (Ping timeout: 252 seconds)
2022-08-25 21:34:35 +0200coot(~coot@213.134.176.158) (Remote host closed the connection)
2022-08-25 21:34:49 +0200machinedgod(~machinedg@d198-53-218-113.abhsia.telus.net)
2022-08-25 21:37:07 +0200 <sm> guest8080: also just check the last upload date(s)
2022-08-25 21:37:24 +0200coot(~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba)
2022-08-25 21:40:22 +0200myme1(~myme@2a01:799:d5a:cd00:bb5a:372d:4d0c:faeb) (Quit: WeeChat 3.4.1)
2022-08-25 21:42:07 +0200slaydr(~slaydr@75.164.14.186)
2022-08-25 21:43:16 +0200themc47(~mc47@xmonad/TheMC47)
2022-08-25 21:43:55 +0200coot(~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot)
2022-08-25 21:44:44 +0200mc47(~mc47@xmonad/TheMC47) (Ping timeout: 244 seconds)
2022-08-25 21:50:29 +0200pavonia(~user@user/siracusa)
2022-08-25 21:53:25 +0200merijn(~merijn@c-001-001-007.client.esciencecenter.eduvpn.nl)
2022-08-25 21:58:41 +0200matthewmosior(~matthewmo@173.170.253.91) (Ping timeout: 244 seconds)
2022-08-25 22:02:45 +0200segfaultfizzbuzz(~segfaultf@157-131-253-58.fiber.dynamic.sonic.net)
2022-08-25 22:07:13 +0200segfaultfizzbuzz(~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) (Ping timeout: 268 seconds)
2022-08-25 22:07:24 +0200TonyStone(~TonyStone@2603-7080-8607-c36a-0cc7-7d4a-4464-7c91.res6.spectrum.com) (Remote host closed the connection)
2022-08-25 22:11:40 +0200azimut(~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection)
2022-08-25 22:12:05 +0200azimut(~azimut@gateway/tor-sasl/azimut)
2022-08-25 22:12:31 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-08-25 22:21:35 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2022-08-25 22:24:15 +0200lortabac(~lortabac@2a01:e0a:541:b8f0:a028:dd7c:b36:1982) (Quit: WeeChat 2.8)
2022-08-25 22:26:25 +0200merijn(~merijn@c-001-001-007.client.esciencecenter.eduvpn.nl) (Ping timeout: 252 seconds)
2022-08-25 22:26:26 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 260 seconds)
2022-08-25 22:28:59 +0200sagax(~sagax_nb@user/sagax)
2022-08-25 22:32:25 +0200themc47(~mc47@xmonad/TheMC47) (Remote host closed the connection)
2022-08-25 22:39:45 +0200TonyStone(~TonyStone@cpe-74-76-51-197.nycap.res.rr.com)
2022-08-25 22:40:32 +0200merijn(~merijn@c-001-001-007.client.esciencecenter.eduvpn.nl)
2022-08-25 22:45:11 +0200merijn(~merijn@c-001-001-007.client.esciencecenter.eduvpn.nl) (Ping timeout: 244 seconds)
2022-08-25 22:47:01 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2022-08-25 22:55:28 +0200segfaultfizzbuzz(~segfaultf@157-131-253-58.fiber.dynamic.sonic.net)
2022-08-25 22:55:42 +0200mastarija(~mastarija@2a05:4f46:e03:6000:cf81:4038:e6c6:74b4) (Quit: WeeChat 3.5)
2022-08-25 22:58:49 +0200Midjak(~Midjak@82.66.147.146) (Quit: Leaving)
2022-08-25 23:00:13 +0200Midjak(~Midjak@82.66.147.146)
2022-08-25 23:00:15 +0200segfaultfizzbuzz(~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) (Ping timeout: 268 seconds)
2022-08-25 23:00:19 +0200euandreh(~euandreh@179.214.113.107) (Ping timeout: 248 seconds)
2022-08-25 23:02:17 +0200euandreh(~euandreh@179.214.113.107)
2022-08-25 23:02:29 +0200_73(~user@pool-173-76-102-248.bstnma.fios.verizon.net)
2022-08-25 23:03:28 +0200mvk(~mvk@2607:fea8:5ce3:8500::a1ec)
2022-08-25 23:05:02 +0200Kaipei(~Kaiepi@142.68.249.28)
2022-08-25 23:06:17 +0200azimut(~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection)
2022-08-25 23:06:34 +0200azimut(~azimut@gateway/tor-sasl/azimut)
2022-08-25 23:07:51 +0200Kaiepi(~Kaiepi@142.68.249.28) (Ping timeout: 260 seconds)
2022-08-25 23:10:23 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2022-08-25 23:12:26 +0200 <L29Ah> i have this code:
2022-08-25 23:12:26 +0200 <L29Ah> data T = A | B | C | D
2022-08-25 23:12:26 +0200 <L29Ah> type TLength = 4
2022-08-25 23:12:46 +0200 <L29Ah> how do i put the T's length into TLength without hardcode or TH?
2022-08-25 23:12:58 +0200 <geekosaur> uh
2022-08-25 23:13:10 +0200 <geekosaur> do you really intend that to be a type level Natural?
2022-08-25 23:13:13 +0200 <L29Ah> yes
2022-08-25 23:13:27 +0200 <L29Ah> it will be an argument for a fixed length vector
2022-08-25 23:13:50 +0200 <L29Ah> so i have a safe vector with named indexes
2022-08-25 23:13:51 +0200takuan(~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
2022-08-25 23:14:01 +0200 <geekosaur> I think you're stuck with TH since a type alias can't be built dynamically
2022-08-25 23:14:07 +0200nate4(~nate@98.45.169.16)
2022-08-25 23:14:11 +0200 <L29Ah> i don't strictly need a type alias
2022-08-25 23:14:12 +0200 <geekosaur> singletons won't help you here
2022-08-25 23:14:29 +0200segfaultfizzbuzz(~segfaultf@157-131-253-58.fiber.dynamic.sonic.net)
2022-08-25 23:15:36 +0200jpds1jpds
2022-08-25 23:15:40 +0200 <monochrom> There may be some way using GHC.Generics or Data.Data that I won't help with.
2022-08-25 23:16:00 +0200 <geekosaur> well. if you can get by without the type alias then you might be able to promote `fromEnum (maxBound :: T)` to a `KnownNat`
2022-08-25 23:16:17 +0200monochromfollows the latest health recommendations and washes hands often >:)
2022-08-25 23:16:46 +0200 <L29Ah> but i need to specify the length to mkN type signature somehow
2022-08-25 23:16:52 +0200 <L29Ah> https://hackage.haskell.org/package/fixed-vector-1.2.1.0/docs/Data-Vector-Fixed.html
2022-08-25 23:16:54 +0200 <geekosaur> (this relying on `deriving`-based `Enum` indexes starting from 0, and you will need `deriving Enum` to do it)
2022-08-25 23:16:58 +0200matthewmosior(~matthewmo@173.170.253.91) (Remote host closed the connection)
2022-08-25 23:17:05 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-08-25 23:18:18 +0200 <geekosaur> also this seems a lot of work to duplicate Array and Ix…
2022-08-25 23:18:19 +0200slaydr(~slaydr@75.164.14.186) (Quit: Leaving)
2022-08-25 23:18:56 +0200nate4(~nate@98.45.169.16) (Ping timeout: 260 seconds)
2022-08-25 23:19:07 +0200 <geekosaur> oh., sorry, `deriving (Enum, Bounded)`
2022-08-25 23:20:07 +0200 <geekosaur> and add 1 🙂
2022-08-25 23:20:25 +0200 <geekosaur> fromEnum (maxBound :: T) + 1
2022-08-25 23:20:43 +0200 <monochrom> See, this is the kind of off-by-1 errors that type-level length tracking promised to eliminate!
2022-08-25 23:20:50 +0200 <geekosaur> but you still need to use singletons to promote it
2022-08-25 23:20:50 +0200 <L29Ah> not sure why isn't it Array, maybe has to do with the fact that Array n can't be constructed from Array (n-1) or smth
2022-08-25 23:20:55 +0200 <monochrom> I mean >:)
2022-08-25 23:21:27 +0200 <geekosaur> still, it has to reinvent Ix the hard way, from the sound of it
2022-08-25 23:21:43 +0200 <geekosaur> granting that Ix isn't type level so it may not be "safe enough"
2022-08-25 23:22:03 +0200 <monochrom> This is type-level Ix, yeah.
2022-08-25 23:22:27 +0200 <monochrom> I might say "porting" instead of "reinventing" :)
2022-08-25 23:22:28 +0200 <geekosaur> I don't know your threat model
2022-08-25 23:22:50 +0200 <monochrom> But again I follow health recommendations and wash my hands off this :)
2022-08-25 23:23:39 +0200 <monochrom> A little bit of abridged true story in the unix-and-c course I teach though.
2022-08-25 23:23:47 +0200 <geekosaur> oh, I'm not altogether certain I want to be involved with it either. Ix might well be good enough, depending on threat model, and iirc there's a wrapper for Vector that supports Ix
2022-08-25 23:24:16 +0200hgolden(~hgolden@cpe-172-251-233-141.socal.res.rr.com)
2022-08-25 23:24:36 +0200 <monochrom> In homework, I give my students a "char *p" as a parameter to their function. I guaranteed that p points to a C nul-terminated string.
2022-08-25 23:24:52 +0200 <monochrom> Students have need of making a copy. So they go...
2022-08-25 23:24:55 +0200 <geekosaur> I do know that type level is painful enough that it takes a lot to make me reach for it
2022-08-25 23:25:00 +0200 <monochrom> char *q = malloc(sizeof(p))
2022-08-25 23:25:02 +0200 <monochrom> <_<
2022-08-25 23:25:45 +0200 <geekosaur> I'd roll my eyes but I've forgotten what it was like to be that level 😈
2022-08-25 23:25:46 +0200 <monochrom> I only found out by compiling their code with "gcc -O2" which adds run-time guards against buffer overflow.
2022-08-25 23:26:20 +0200 <monochrom> What is my threat model? Answer: I run their code in a docker container. :)
2022-08-25 23:26:36 +0200matthewmosior(~matthewmo@173.170.253.91) (Remote host closed the connection)
2022-08-25 23:29:55 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-08-25 23:31:55 +0200 <johnw> do you valgrind their code too?
2022-08-25 23:32:03 +0200segfaultfizzbuzz(~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) (Ping timeout: 252 seconds)
2022-08-25 23:32:18 +0200 <monochrom> Yes for a few selected questions.
2022-08-25 23:33:39 +0200hgolden(~hgolden@cpe-172-251-233-141.socal.res.rr.com) (Quit: Leaving)
2022-08-25 23:34:31 +0200 <monochrom> They also know about valgrind. I gave them an exercise on it.
2022-08-25 23:34:34 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2022-08-25 23:34:41 +0200matthewmosior(~matthewmo@173.170.253.91) (Ping timeout: 260 seconds)
2022-08-25 23:35:20 +0200hgolden(~hgolden@cpe-172-251-233-141.socal.res.rr.com)
2022-08-25 23:39:56 +0200acidjnk(~acidjnk@p200300d6e7137a4448390a2d4fdf592b.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
2022-08-25 23:42:47 +0200 <dolio> Do they ever learn that using C is a bad idea?
2022-08-25 23:42:55 +0200 <monochrom> :)
2022-08-25 23:43:02 +0200 <monochrom> But it's a unix syscall course.
2022-08-25 23:43:32 +0200 <monochrom> But I think they hate C by now.
2022-08-25 23:43:39 +0200hgolden(~hgolden@cpe-172-251-233-141.socal.res.rr.com) (Quit: Leaving)
2022-08-25 23:43:48 +0200 <geekosaur> good
2022-08-25 23:43:55 +0200 <ente`> I was gonna ask
2022-08-25 23:43:58 +0200 <ente`> does that make you happy
2022-08-25 23:44:23 +0200hgolden(~Howard@cpe-172-251-233-141.socal.res.rr.com)
2022-08-25 23:44:28 +0200 <ente`> cause we had various weird C assignments in college
2022-08-25 23:44:35 +0200zeenk(~zeenk@2a02:2f04:a311:2d00:6865:d863:4c93:799f) (Quit: Konversation terminated!)
2022-08-25 23:44:51 +0200td_(~td@94.134.91.83)
2022-08-25 23:44:57 +0200 <monochrom> I'm not happy. They hate C for the wrong reasons.
2022-08-25 23:44:58 +0200 <geekosaur> C still has its place. but please write applications in something sane
2022-08-25 23:45:25 +0200 <geekosaur> (this does not mean C++)
2022-08-25 23:45:28 +0200waleee(~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Quit: WeeChat 3.6)
2022-08-25 23:45:31 +0200 <ente`> Vala
2022-08-25 23:45:34 +0200 <ente`> :D
2022-08-25 23:46:21 +0200 <ente`> ping me when it's the year of MirageOS on the desktop
2022-08-25 23:47:02 +0200 <geekosaur> Vala's just the FSF's failed attempt to ride the coat-tails of Go, having missed the point of it completely because it's pretty much the opposite of the FSF's aims
2022-08-25 23:47:25 +0200 <dolio> Doesn't vala predate go?
2022-08-25 23:47:51 +0200 <ente`> yes
2022-08-25 23:48:12 +0200 <geekosaur> does it? I recall Go coming out pretty early
2022-08-25 23:48:19 +0200 <ente`> Vala is the FSF's failed attempt to recreate C# for GObject
2022-08-25 23:48:45 +0200 <geekosaur> (shortly after Dart, which struck me as dumb)
2022-08-25 23:49:23 +0200 <dolio> Go is before Dart.
2022-08-25 23:49:50 +0200 <ente`> wikipedia dates Vala to 2006 and Go to 2009
2022-08-25 23:50:32 +0200 <ente`> and Haskell to 1990 in case anyone didn't know it's older than both
2022-08-25 23:51:07 +0200 <dolio> Which always made even less sense to me (making dart after go).
2022-08-25 23:51:20 +0200 <monochrom> When I teach Haskell I ride the coat-tail of Java and Rust :)
2022-08-25 23:51:36 +0200gustik(~gustik@2a01:c844:2457:2220:475d:34f:d571:996f)
2022-08-25 23:51:40 +0200 <geekosaur> it does seem at least one of them is redundant
2022-08-25 23:52:06 +0200 <geekosaur> apparnetly everyone else agrees, since I seem to see very little take-up of dart
2022-08-25 23:52:19 +0200 <dolio> Dart seems worse, though, so it makes less sense to build it after.
2022-08-25 23:52:32 +0200 <ente`> I kind of ignore anything that's too new tbh
2022-08-25 23:52:58 +0200 <geekosaur> (and I want my name back, dammit. I named an C-embedded report generator that in the 1980s)
2022-08-25 23:53:00 +0200 <ente`> there's enough of old, stable programming languages I haven't yet bothered to learn
2022-08-25 23:53:02 +0200 <dolio> I imagine the answer is that it's two completely different teams with no communication at google.
2022-08-25 23:54:17 +0200 <geekosaur> https://www.google.com/search?q=dilbert+battling+business+units&oq=battling+business+units+&aqs=ch…
2022-08-25 23:54:59 +0200jtomas(~jtomas@56.red-88-17-82.dynamicip.rima-tde.net)
2022-08-25 23:57:23 +0200`2jt(~jtomas@56.red-88-17-82.dynamicip.rima-tde.net) (Ping timeout: 248 seconds)
2022-08-25 23:59:29 +0200azimut(~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection)
2022-08-25 23:59:52 +0200azimut(~azimut@gateway/tor-sasl/azimut)