2022-08-25 00:00:06 +0200 | acidjnk | (~acidjnk@p200300d6e7137a442d4bcc663cf92581.dip0.t-ipconnect.de) (Ping timeout: 260 seconds) |
2022-08-25 00:10:57 +0200 | beteigeuze | (~Thunderbi@bl11-28-222.dsl.telepac.pt) |
2022-08-25 00:16:14 +0200 | gmg | (~user@user/gehmehgeh) (Quit: Leaving) |
2022-08-25 00:21:06 +0200 | segfaultfizzbuzz | (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) (Ping timeout: 260 seconds) |
2022-08-25 00:22:20 +0200 | matthewmosior | (~matthewmo@173.170.253.91) (Remote host closed the connection) |
2022-08-25 00:23:12 +0200 | motersen | (~motersen@user/motersen) (Remote host closed the connection) |
2022-08-25 00:23:12 +0200 | stiell | (~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection) |
2022-08-25 00:23:13 +0200 | jpds | (~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection) |
2022-08-25 00:23:27 +0200 | wonko | (~wjc@2a0e:1c80:2::130) |
2022-08-25 00:24:06 +0200 | jpds | (~jpds@gateway/tor-sasl/jpds) |
2022-08-25 00:24:08 +0200 | segfaultfizzbuzz | (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) |
2022-08-25 00:24:11 +0200 | motersen | (~motersen@user/motersen) |
2022-08-25 00:25:10 +0200 | hays | (rootvegeta@fsf/member/hays) () |
2022-08-25 00:25:30 +0200 | stiell | (~stiell@gateway/tor-sasl/stiell) |
2022-08-25 00:25:50 +0200 | [itchyjunk] | (~itchyjunk@user/itchyjunk/x-7353470) |
2022-08-25 00:26:28 +0200 | hays | (~rootveget@fsf/member/hays) |
2022-08-25 00:26:56 +0200 | zava | (~zava@ip5f5bdf97.dynamic.kabel-deutschland.de) (Ping timeout: 260 seconds) |
2022-08-25 00:31:01 +0200 | wonko | (~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 +0200 | mvk | (~mvk@2607:fea8:5ce3:8500::a1ec) |
2022-08-25 00:35:53 +0200 | jpds | (~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection) |
2022-08-25 00:36:26 +0200 | jpds | (~jpds@gateway/tor-sasl/jpds) |
2022-08-25 00:37:54 +0200 | matthewmosior | (~matthewmo@173.170.253.91) |
2022-08-25 00:38:16 +0200 | coot | (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot) |
2022-08-25 00:38:58 +0200 | coot | (~coot@213.134.176.158) |
2022-08-25 00:39:34 +0200 | zava | (~zava@ip5f5bdf97.dynamic.kabel-deutschland.de) |
2022-08-25 00:39:49 +0200 | michalz | (~michalz@185.246.204.75) (Remote host closed the connection) |
2022-08-25 00:39:58 +0200 | coot | (~coot@213.134.176.158) (Client Quit) |
2022-08-25 00:40:04 +0200 | aeka | (~aeka@user/hiruji) |
2022-08-25 00:42:41 +0200 | matthewmosior | (~matthewmo@173.170.253.91) (Ping timeout: 260 seconds) |
2022-08-25 00:43:31 +0200 | coot | (~coot@213.134.176.158) |
2022-08-25 00:48:25 +0200 | coot | (~coot@213.134.176.158) (Ping timeout: 252 seconds) |
2022-08-25 00:48:52 +0200 | Pickchea | (~private@user/pickchea) (Quit: Leaving) |
2022-08-25 00:55:06 +0200 | matthewmosior | (~matthewmo@173.170.253.91) |
2022-08-25 00:56:33 +0200 | zava | (~zava@ip5f5bdf97.dynamic.kabel-deutschland.de) (Quit: WeeChat 3.5) |
2022-08-25 00:56:43 +0200 | merijn | (~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 +0200 | motersen | (~motersen@user/motersen) (Ping timeout: 268 seconds) |
2022-08-25 00:59:15 +0200 | motersen | (~motersen@user/motersen) |
2022-08-25 01:01:07 +0200 | matthewmosior | (~matthewmo@173.170.253.91) (Ping timeout: 244 seconds) |
2022-08-25 01:03:06 +0200 | xff0x | (~xff0x@2405:6580:b080:900:3788:1bc5:ebdd:8f54) (Ping timeout: 260 seconds) |
2022-08-25 01:03:36 +0200 | stiell | (~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection) |
2022-08-25 01:04:05 +0200 | stiell | (~stiell@gateway/tor-sasl/stiell) |
2022-08-25 01:05:14 +0200 | Sgeo | (~Sgeo@user/sgeo) |
2022-08-25 01:10:26 +0200 | matthewmosior | (~matthewmo@173.170.253.91) |
2022-08-25 01:11:55 +0200 | dsrt^ | (~dsrt@96.70.11.181) |
2022-08-25 01:12:23 +0200 | matthewmosior | (~matthewmo@173.170.253.91) (Remote host closed the connection) |
2022-08-25 01:14:50 +0200 | ec | (~ec@gateway/tor-sasl/ec) (Remote host closed the connection) |
2022-08-25 01:17:14 +0200 | Midjak | (~Midjak@82.66.147.146) (Quit: This computer has gone to sleep) |
2022-08-25 01:18:37 +0200 | bontaq | (~user@ool-45779fe5.dyn.optonline.net) (Ping timeout: 268 seconds) |
2022-08-25 01:20:50 +0200 | matthewmosior | (~matthewmo@173.170.253.91) |
2022-08-25 01:25:16 +0200 | matthewmosior | (~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 +0200 | dsrt^ | (~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 +0200 | merijn | (~merijn@c-001-001-007.client.esciencecenter.eduvpn.nl) (Ping timeout: 268 seconds) |
2022-08-25 01:31:51 +0200 | codaraxis | (~codaraxis@user/codaraxis) |
2022-08-25 01:32:17 +0200 | crns | (~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 +0200 | crns | (~netcrns@p5dc33cc7.dip0.t-ipconnect.de) |
2022-08-25 01:32:35 +0200 | crns | (~netcrns@p5dc33cc7.dip0.t-ipconnect.de) (Changing host) |
2022-08-25 01:32:35 +0200 | crns | (~netcrns@user/crns) |
2022-08-25 01:34:40 +0200 | xff0x | (~xff0x@ap007189.d.east.v6connect.net) |
2022-08-25 01:35:02 +0200 | matthewmosior | (~matthewmo@173.170.253.91) |
2022-08-25 01:36:11 +0200 | matthewmosior | (~matthewmo@173.170.253.91) (Remote host closed the connection) |
2022-08-25 01:36:18 +0200 | matthewmosior | (~matthewmo@173.170.253.91) |
2022-08-25 01:36:23 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
2022-08-25 01:38:53 +0200 | justsomeguy | (~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 +0200 | jero98772 | (~jero98772@2800:484:1d80:d8ce:efcc:cbb3:7f2a:6dff) (Remote host closed the connection) |
2022-08-25 01:40:26 +0200 | raehik | (~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 +0200 | ChanServ | +o litharge |
2022-08-25 01:42:49 +0200 | litharge | -bo riverside!~riverside@213.205.241.143 litharge |
2022-08-25 01:45:04 +0200 | califax | (~califax@user/califx) (Ping timeout: 268 seconds) |
2022-08-25 01:45:35 +0200 | califax | (~califax@user/califx) |
2022-08-25 01:45:41 +0200 | jpds | (~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 +0200 | mastarija | (~mastarija@2a05:4f46:e03:6000:b0c6:6951:8666:c637) (Ping timeout: 268 seconds) |
2022-08-25 01:56:11 +0200 | gurkenglas | (~gurkengla@p548ac72e.dip0.t-ipconnect.de) (Ping timeout: 260 seconds) |
2022-08-25 01:57:27 +0200 | segfaultfizzbuzz | (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) (Ping timeout: 244 seconds) |
2022-08-25 01:57:51 +0200 | luffy | (~chenqisu1@183.217.200.212) |
2022-08-25 01:59:42 +0200 | bilegeek | (~bilegeek@2600:1008:b068:5637:7ab9:a362:c68d:9416) |
2022-08-25 01:59:45 +0200 | nilradical | (~nilradica@user/naso) |
2022-08-25 01:59:52 +0200 | matthewmosior | (~matthewmo@173.170.253.91) (Remote host closed the connection) |
2022-08-25 02:00:16 +0200 | akegalj | (~akegalj@135-40.dsl.iskon.hr) (Ping timeout: 260 seconds) |
2022-08-25 02:02:19 +0200 | gurkenglas | (~gurkengla@p548ac72e.dip0.t-ipconnect.de) |
2022-08-25 02:02:57 +0200 | stiell | (~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection) |
2022-08-25 02:02:57 +0200 | califax | (~califax@user/califx) (Remote host closed the connection) |
2022-08-25 02:02:57 +0200 | motersen | (~motersen@user/motersen) (Remote host closed the connection) |
2022-08-25 02:03:08 +0200 | dcoutts_ | (~duncan@host86-151-9-109.range86-151.btcentralplus.com) |
2022-08-25 02:04:37 +0200 | matthewmosior | (~matthewmo@173.170.253.91) |
2022-08-25 02:06:06 +0200 | dcoutts | (~duncan@host86-153-135-25.range86-153.btcentralplus.com) (Ping timeout: 268 seconds) |
2022-08-25 02:09:36 +0200 | nate4 | (~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 +0200 | matthewmosior | (~matthewmo@173.170.253.91) (Ping timeout: 260 seconds) |
2022-08-25 02:14:13 +0200 | nate4 | (~nate@98.45.169.16) (Ping timeout: 252 seconds) |
2022-08-25 02:14:36 +0200 | gurkenglas | (~gurkengla@p548ac72e.dip0.t-ipconnect.de) (Ping timeout: 268 seconds) |
2022-08-25 02:15:29 +0200 | causal | (~user@50.35.83.177) |
2022-08-25 02:15:54 +0200 | mvk | (~mvk@2607:fea8:5ce3:8500::a1ec) (Quit: Going elsewhere) |
2022-08-25 02:17:05 +0200 | mvk | (~mvk@2607:fea8:5ce3:8500::a1ec) |
2022-08-25 02:20:23 +0200 | motersen | (~motersen@user/motersen) |
2022-08-25 02:21:26 +0200 | califax | (~califax@user/califx) |
2022-08-25 02:21:54 +0200 | ryanbooker | (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 +0200 | jpds | (~jpds@gateway/tor-sasl/jpds) |
2022-08-25 02:30:54 +0200 | codaraxis | (~codaraxis@user/codaraxis) (Quit: Leaving) |
2022-08-25 02:30:57 +0200 | stiell | (~stiell@gateway/tor-sasl/stiell) |
2022-08-25 02:32:32 +0200 | matthewmosior | (~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 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2022-08-25 02:40:22 +0200 | dsrt^ | (~dsrt@96.70.11.181) |
2022-08-25 02:40:40 +0200 | zebrag | (~chris@user/zebrag) (Quit: Konversation terminated!) |
2022-08-25 02:42:27 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 252 seconds) |
2022-08-25 02:46:51 +0200 | nate4 | (~nate@98.45.169.16) |
2022-08-25 02:52:11 +0200 | dsrt^ | (~dsrt@96.70.11.181) (Ping timeout: 260 seconds) |
2022-08-25 02:55:27 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2022-08-25 02:55:38 +0200 | segfaultfizzbuzz | (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) |
2022-08-25 02:57:47 +0200 | eikke | (~NicolasT@88.126.78.98) (Ping timeout: 255 seconds) |
2022-08-25 02:59:01 +0200 | azimut | (~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection) |
2022-08-25 02:59:49 +0200 | azimut | (~azimut@gateway/tor-sasl/azimut) |
2022-08-25 03:04:08 +0200 | chexum | (~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection) |
2022-08-25 03:04:26 +0200 | mima | (mmh@gateway/vpn/airvpn/mima) (Ping timeout: 260 seconds) |
2022-08-25 03:04:36 +0200 | chexum | (~quassel@gateway/tor-sasl/chexum) |
2022-08-25 03:13:42 +0200 | dsrt^ | (~dsrt@96.70.11.181) |
2022-08-25 03:18:11 +0200 | stiell | (~stiell@gateway/tor-sasl/stiell) (Ping timeout: 268 seconds) |
2022-08-25 03:20:43 +0200 | waleee | (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 268 seconds) |
2022-08-25 03:22:52 +0200 | stiell | (~stiell@gateway/tor-sasl/stiell) |
2022-08-25 03:27:18 +0200 | merijn | (~merijn@c-001-001-007.client.esciencecenter.eduvpn.nl) |
2022-08-25 03:28:07 +0200 | zxx7529 | (~Thunderbi@user/zxx7529) |
2022-08-25 03:29:42 +0200 | zxx7529 | (~Thunderbi@user/zxx7529) (Remote host closed the connection) |
2022-08-25 03:29:56 +0200 | zxx7529 | (~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 +0200 | Colere | (~colere@about/linux/staff/sauvin) (Ping timeout: 252 seconds) |
2022-08-25 03:38:42 +0200 | matthewmosior | (~matthewmo@173.170.253.91) (Ping timeout: 244 seconds) |
2022-08-25 03:48:24 +0200 | stiell | (~stiell@gateway/tor-sasl/stiell) (Ping timeout: 268 seconds) |
2022-08-25 03:49:21 +0200 | nate4 | (~nate@98.45.169.16) (Ping timeout: 260 seconds) |
2022-08-25 03:50:06 +0200 | stiell | (~stiell@gateway/tor-sasl/stiell) |
2022-08-25 03:51:06 +0200 | beteigeuze | (~Thunderbi@bl11-28-222.dsl.telepac.pt) (Ping timeout: 260 seconds) |
2022-08-25 03:51:59 +0200 | nilradical | (~nilradica@user/naso) (Remote host closed the connection) |
2022-08-25 03:52:42 +0200 | nilradical | (~nilradica@user/naso) |
2022-08-25 03:53:32 +0200 | matthewmosior | (~matthewmo@173.170.253.91) |
2022-08-25 03:53:35 +0200 | nilradical | (~nilradica@user/naso) (Remote host closed the connection) |
2022-08-25 03:53:50 +0200 | nilradical | (~nilradica@user/naso) |
2022-08-25 03:53:54 +0200 | Colere | (~colere@about/linux/staff/sauvin) |
2022-08-25 03:54:01 +0200 | segfaultfizzbuzz | (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) (Ping timeout: 260 seconds) |
2022-08-25 03:56:51 +0200 | dsrt^ | (~dsrt@96.70.11.181) (Ping timeout: 248 seconds) |
2022-08-25 03:58:06 +0200 | justsomeguy | (~justsomeg@user/justsomeguy) (Ping timeout: 260 seconds) |
2022-08-25 04:01:53 +0200 | merijn | (~merijn@c-001-001-007.client.esciencecenter.eduvpn.nl) (Ping timeout: 268 seconds) |
2022-08-25 04:06:00 +0200 | bilegeek | (~bilegeek@2600:1008:b068:5637:7ab9:a362:c68d:9416) (Quit: Leaving) |
2022-08-25 04:16:11 +0200 | td_ | (~td@94.134.91.14) (Ping timeout: 260 seconds) |
2022-08-25 04:17:26 +0200 | segfaultfizzbuzz | (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) |
2022-08-25 04:17:48 +0200 | td_ | (~td@94.134.91.83) |
2022-08-25 04:18:28 +0200 | justsomeguy | (~justsomeg@user/justsomeguy) |
2022-08-25 04:20:04 +0200 | zxx7529 | (~Thunderbi@user/zxx7529) (Remote host closed the connection) |
2022-08-25 04:21:56 +0200 | fef | (~thedawn@user/thedawn) |
2022-08-25 04:23:42 +0200 | dsrt^ | (~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 +0200 | nate4 | (~nate@98.45.169.16) |
2022-08-25 04:28:32 +0200 | motersen | (~motersen@user/motersen) (Remote host closed the connection) |
2022-08-25 04:28:32 +0200 | azimut | (~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection) |
2022-08-25 04:28:32 +0200 | fef | (~thedawn@user/thedawn) (Remote host closed the connection) |
2022-08-25 04:28:59 +0200 | motersen | (~motersen@user/motersen) |
2022-08-25 04:29:15 +0200 | fef | (~thedawn@user/thedawn) |
2022-08-25 04:30:02 +0200 | azimut | (~azimut@gateway/tor-sasl/azimut) |
2022-08-25 04:35:49 +0200 | dsrt^ | (~dsrt@96.70.11.181) (Ping timeout: 268 seconds) |
2022-08-25 04:38:18 +0200 | machinedgod | (~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 268 seconds) |
2022-08-25 04:38:57 +0200 | justsomeguy | (~justsomeg@user/justsomeguy) (Quit: WeeChat 3.5) |
2022-08-25 04:42:01 +0200 | terrorjack | (~terrorjac@2a01:4f8:1c1e:509a::1) (Quit: The Lounge - https://thelounge.chat) |
2022-08-25 04:42:59 +0200 | terrorjack | (~terrorjac@2a01:4f8:1c1e:509a::1) |
2022-08-25 04:45:02 +0200 | mzan | (~quassel@mail.asterisell.com) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.) |
2022-08-25 04:45:58 +0200 | mzan | (~quassel@mail.asterisell.com) |
2022-08-25 04:53:33 +0200 | kannon | (~NK@135-180-47-54.fiber.dynamic.sonic.net) |
2022-08-25 04:53:56 +0200 | dos__^^ | (~user@user/dos/x-1723657) |
2022-08-25 05:08:16 +0200 | matthewmosior | (~matthewmo@173.170.253.91) (Remote host closed the connection) |
2022-08-25 05:08:23 +0200 | matthewmosior | (~matthewmo@173.170.253.91) |
2022-08-25 05:10:56 +0200 | matthewmosior | (~matthewmo@173.170.253.91) (Remote host closed the connection) |
2022-08-25 05:11:23 +0200 | matthewmosior | (~matthewmo@173.170.253.91) |
2022-08-25 05:12:16 +0200 | fef | (~thedawn@user/thedawn) (Ping timeout: 268 seconds) |
2022-08-25 05:17:57 +0200 | famubu | (~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 +0200 | matthewmosior | (~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 +0200 | Igloo | (~ian@matrix.chaos.earth.li) (Ping timeout: 252 seconds) |
2022-08-25 05:24:16 +0200 | Igloo | (~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 +0200 | famubu | meant 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 +0200 | qrpnxz | (~qrpnxz@fsf/member/qrpnxz) (Quit: WeeChat 3.5) |
2022-08-25 05:36:50 +0200 | matthewmosior | (~matthewmo@173.170.253.91) |
2022-08-25 05:38:26 +0200 | nate4 | (~nate@98.45.169.16) (Ping timeout: 260 seconds) |
2022-08-25 05:38:52 +0200 | qrpnxz | (~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 +0200 | elkcl | (~elkcl@broadband-37-110-156-162.ip.moscow.rt.ru) (Ping timeout: 255 seconds) |
2022-08-25 05:46:14 +0200 | bitdex | (~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 +0200 | segfaultfizzbuzz | (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) (Ping timeout: 260 seconds) |
2022-08-25 05:52:44 +0200 | segfaultfizzbuzz | (~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 +0200 | qrpnxz | (~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 +0200 | merijn | (~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 +0200 | segfaultfizzbuzz | (~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 +0200 | nate4 | (~nate@98.45.169.16) |
2022-08-25 06:06:54 +0200 | qrpnxz | (~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 +0200 | qrpnxz | (~qrpnxz@fsf/member/qrpnxz) (Ping timeout: 248 seconds) |
2022-08-25 06:11:32 +0200 | Sgeo_ | (~Sgeo@user/sgeo) |
2022-08-25 06:13:07 +0200 | segfaultfizzbuzz | (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) |
2022-08-25 06:13:14 +0200 | qrpnxz | (~qrpnxz@fsf/member/qrpnxz) |
2022-08-25 06:14:27 +0200 | sympt | (~sympt@user/sympt) |
2022-08-25 06:14:29 +0200 | Sgeo_ | (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
2022-08-25 06:15:11 +0200 | nate4 | (~nate@98.45.169.16) (Ping timeout: 260 seconds) |
2022-08-25 06:15:46 +0200 | Sgeo | (~Sgeo@user/sgeo) (Ping timeout: 260 seconds) |
2022-08-25 06:18:53 +0200 | Sgeo | (~Sgeo@user/sgeo) |
2022-08-25 06:19:45 +0200 | nilradical | (~nilradica@user/naso) () |
2022-08-25 06:20:42 +0200 | Sgeo | (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
2022-08-25 06:23:07 +0200 | elkcl | (~elkcl@broadband-37-110-156-162.ip.moscow.rt.ru) |
2022-08-25 06:31:32 +0200 | ryanbooker | (uid4340@id-4340.hampstead.irccloud.com) (Quit: Connection closed for inactivity) |
2022-08-25 06:32:06 +0200 | merijn | (~merijn@c-001-001-007.client.esciencecenter.eduvpn.nl) (Ping timeout: 260 seconds) |
2022-08-25 06:33:48 +0200 | glguy | (x@libera/staff/glguy) (Quit: rebirth) |
2022-08-25 06:35:39 +0200 | motherfsck | (~motherfsc@user/motherfsck) (Ping timeout: 252 seconds) |
2022-08-25 06:37:16 +0200 | Sgeo | (~Sgeo@user/sgeo) |
2022-08-25 06:39:06 +0200 | matthewmosior | (~matthewmo@173.170.253.91) (Ping timeout: 260 seconds) |
2022-08-25 06:39:35 +0200 | <johnw> | Hash: ? |
2022-08-25 06:41:05 +0200 | segfaultfizzbuzz | (~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 +0200 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection) |
2022-08-25 06:44:58 +0200 | bitdex | (~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 +0200 | kannon | (~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 +0200 | Hash | hands out free joints |
2022-08-25 06:46:52 +0200 | kannon | (~NK@135-180-47-54.fiber.dynamic.sonic.net) |
2022-08-25 06:49:21 +0200 | jao | (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 244 seconds) |
2022-08-25 06:49:22 +0200 | mbuf | (~Shakthi@122.165.55.71) |
2022-08-25 06:49:30 +0200 | nate4 | (~nate@98.45.169.16) |
2022-08-25 06:52:14 +0200 | kannon | (~NK@135-180-47-54.fiber.dynamic.sonic.net) (Ping timeout: 255 seconds) |
2022-08-25 06:52:31 +0200 | matthewmosior | (~matthewmo@173.170.253.91) |
2022-08-25 06:53:30 +0200 | king_gs | (~Thunderbi@2806:103e:29:da7a:8cff:b135:3864:cc72) |
2022-08-25 06:53:52 +0200 | kannon | (~NK@135-180-47-54.fiber.dynamic.sonic.net) |
2022-08-25 06:54:35 +0200 | nate4 | (~nate@98.45.169.16) (Ping timeout: 268 seconds) |
2022-08-25 06:55:31 +0200 | motherfsck | (~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 +0200 | Guest58 | (~Guest58@2600:4040:b6b0:c100:e89c:a045:89de:d7a) |
2022-08-25 07:11:15 +0200 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
2022-08-25 07:13:54 +0200 | king_gs | (~Thunderbi@2806:103e:29:da7a:8cff:b135:3864:cc72) (Remote host closed the connection) |
2022-08-25 07:14:13 +0200 | king_gs | (~Thunderbi@2806:103e:29:da7a:8cff:b135:3864:cc72) |
2022-08-25 07:16:40 +0200 | Guest58 | (~Guest58@2600:4040:b6b0:c100:e89c:a045:89de:d7a) (Quit: Ping timeout (120 seconds)) |
2022-08-25 07:18:33 +0200 | famubu | (~famubu@user/famubu) (Quit: leaving) |
2022-08-25 07:21:18 +0200 | coot | (~coot@213.134.176.158) |
2022-08-25 07:22:24 +0200 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2022-08-25 07:25:48 +0200 | coot | (~coot@213.134.176.158) (Client Quit) |
2022-08-25 07:26:19 +0200 | coot | (~coot@213.134.176.158) |
2022-08-25 07:26:30 +0200 | motherfs1 | (~motherfsc@user/motherfsck) |
2022-08-25 07:26:31 +0200 | motherfsck | (~motherfsc@user/motherfsck) (Read error: Connection reset by peer) |
2022-08-25 07:28:51 +0200 | zeenk | (~zeenk@2a02:2f04:a311:2d00:6865:d863:4c93:799f) |
2022-08-25 07:31:01 +0200 | coot_ | (~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 +0200 | coot | (~coot@213.134.176.158) (Ping timeout: 248 seconds) |
2022-08-25 07:34:17 +0200 | coot_ | (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Remote host closed the connection) |
2022-08-25 07:37:03 +0200 | coot | (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) |
2022-08-25 07:38:06 +0200 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
2022-08-25 07:40:59 +0200 | odnes | (~odnes@5-203-171-254.pat.nym.cosmote.net) |
2022-08-25 07:43:28 +0200 | azimut | (~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection) |
2022-08-25 07:43:59 +0200 | azimut | (~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 +0200 | coot | (~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 +0200 | coot | (~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 +0200 | coot | (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Remote host closed the connection) |
2022-08-25 07:57:25 +0200 | coot | (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) |
2022-08-25 07:59:14 +0200 | nilradical | (~nilradica@user/naso) |
2022-08-25 07:59:32 +0200 | dmj` | clutches his stars |
2022-08-25 08:01:35 +0200 | coot | (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Remote host closed the connection) |
2022-08-25 08:04:32 +0200 | coot | (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) |
2022-08-25 08:07:41 +0200 | nilradical | (~nilradica@user/naso) (Read error: Connection reset by peer) |
2022-08-25 08:08:17 +0200 | nilradical | (~nilradica@user/naso) |
2022-08-25 08:08:31 +0200 | <monochrom> | The star-spangled kind signature >:) |
2022-08-25 08:09:38 +0200 | kannon | (~NK@135-180-47-54.fiber.dynamic.sonic.net) (Ping timeout: 255 seconds) |
2022-08-25 08:10:22 +0200 | kannon | (~NK@135-180-47-54.fiber.dynamic.sonic.net) |
2022-08-25 08:10:34 +0200 | Axman6 | salutes the Type spangled banner |
2022-08-25 08:13:06 +0200 | nilradical | (~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 +0200 | nilradical | (~nilradica@user/naso) |
2022-08-25 08:14:36 +0200 | kannon | (~NK@135-180-47-54.fiber.dynamic.sonic.net) (Ping timeout: 244 seconds) |
2022-08-25 08:14:47 +0200 | coot | (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Remote host closed the connection) |
2022-08-25 08:17:45 +0200 | coot | (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) |
2022-08-25 08:19:02 +0200 | nilradical | (~nilradica@user/naso) (Ping timeout: 268 seconds) |
2022-08-25 08:21:03 +0200 | mima | (mmh@gateway/vpn/airvpn/mima) |
2022-08-25 08:23:36 +0200 | coot | (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Remote host closed the connection) |
2022-08-25 08:24:47 +0200 | jao | (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) |
2022-08-25 08:26:22 +0200 | coot | (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) |
2022-08-25 08:26:29 +0200 | coot | (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Remote host closed the connection) |
2022-08-25 08:28:37 +0200 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2022-08-25 08:30:24 +0200 | yvan-sraka | (~yvan-srak@2a02:2788:224:71c:b753:993e:4a:e55) |
2022-08-25 08:33:27 +0200 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
2022-08-25 08:33:27 +0200 | merijn | (~merijn@c-001-001-007.client.esciencecenter.eduvpn.nl) |
2022-08-25 08:35:20 +0200 | yvan-sraka | (~yvan-srak@2a02:2788:224:71c:b753:993e:4a:e55) (Remote host closed the connection) |
2022-08-25 08:35:27 +0200 | mc47 | (~mc47@xmonad/TheMC47) |
2022-08-25 08:35:39 +0200 | yvan-sraka | (~yvan-srak@2a02:2788:224:71c:4963:1d5e:3c4f:b4ac) |
2022-08-25 08:36:51 +0200 | jonathanx | (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Ping timeout: 248 seconds) |
2022-08-25 08:39:45 +0200 | coot | (~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 +0200 | jonathanx | (~jonathan@94.234.115.159) |
2022-08-25 08:48:13 +0200 | lortabac | (~lortabac@2a01:e0a:541:b8f0:10be:940f:4ae:d4c8) |
2022-08-25 08:48:16 +0200 | takuan | (~takuan@178-116-218-225.access.telenet.be) |
2022-08-25 08:48:22 +0200 | coot | (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Remote host closed the connection) |
2022-08-25 08:50:29 +0200 | luffy | (~chenqisu1@183.217.200.212) (Ping timeout: 268 seconds) |
2022-08-25 08:51:06 +0200 | coot | (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) |
2022-08-25 08:51:30 +0200 | yvan-sraka | (~yvan-srak@2a02:2788:224:71c:4963:1d5e:3c4f:b4ac) (Remote host closed the connection) |
2022-08-25 08:51:44 +0200 | king_gs | (~Thunderbi@2806:103e:29:da7a:8cff:b135:3864:cc72) (Remote host closed the connection) |
2022-08-25 08:51:48 +0200 | yvan-sraka | (~yvan-srak@2a02:2788:224:71c:2301:b332:9642:eb14) |
2022-08-25 08:52:22 +0200 | nate4 | (~nate@98.45.169.16) |
2022-08-25 08:53:03 +0200 | king_gs | (~Thunderbi@2806:103e:29:da7a:8cff:b135:3864:cc72) |
2022-08-25 08:54:02 +0200 | jonathanx | (~jonathan@94.234.115.159) (Remote host closed the connection) |
2022-08-25 08:54:19 +0200 | jonathanx | (~jonathan@c-5eea739f-74736162.cust.telenor.se) |
2022-08-25 08:57:21 +0200 | nate4 | (~nate@98.45.169.16) (Ping timeout: 260 seconds) |
2022-08-25 08:57:43 +0200 | Sgeo | (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
2022-08-25 08:58:03 +0200 | tromp | (~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 +0200 | jonathanx | (~jonathan@c-5eea739f-74736162.cust.telenor.se) (Ping timeout: 252 seconds) |
2022-08-25 09:05:02 +0200 | jonathanx | (~jonathan@h-98-128-168-222.NA.cust.bahnhof.se) |
2022-08-25 09:09:52 +0200 | yvan-sraka | (~yvan-srak@2a02:2788:224:71c:2301:b332:9642:eb14) (Remote host closed the connection) |
2022-08-25 09:10:10 +0200 | yvan-sraka | (~yvan-srak@2a02:2788:224:71c:c3d5:9201:4422:1143) |
2022-08-25 09:16:17 +0200 | michalz | (~michalz@185.246.204.75) |
2022-08-25 09:21:00 +0200 | cfricke | (~cfricke@user/cfricke) |
2022-08-25 09:22:53 +0200 | alternateved | (~user@staticline-31-183-146-203.toya.net.pl) |
2022-08-25 09:23:38 +0200 | yvan-sraka | (~yvan-srak@2a02:2788:224:71c:c3d5:9201:4422:1143) (Ping timeout: 252 seconds) |
2022-08-25 09:26:27 +0200 | Batzy | (~quassel@user/batzy) (Read error: Connection reset by peer) |
2022-08-25 09:28:22 +0200 | nilradical | (~nilradica@user/naso) |
2022-08-25 09:29:56 +0200 | odnes | (~odnes@5-203-171-254.pat.nym.cosmote.net) (Quit: Leaving) |
2022-08-25 09:36:36 +0200 | ardell | (~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 +0200 | acidjnk | (~acidjnk@p200300d6e7137a4448390a2d4fdf592b.dip0.t-ipconnect.de) |
2022-08-25 09:42:57 +0200 | <sm> | ah no.. it depends. |
2022-08-25 09:43:35 +0200 | eggplantade | (~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 +0200 | eikke | (~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 +0200 | fserucas | (~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 +0200 | vglfr | (~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 +0200 | machinedgod | (~machinedg@d198-53-218-113.abhsia.telus.net) |
2022-08-25 09:58:36 +0200 | gurkenglas | (~gurkengla@p548ac72e.dip0.t-ipconnect.de) |
2022-08-25 09:58:55 +0200 | dsrt^ | (~dsrt@96.70.11.181) |
2022-08-25 10:00:23 +0200 | tzh | (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Quit: zzz) |
2022-08-25 10:02:49 +0200 | ccntrq | (~Thunderbi@172.209.94.92.rev.sfr.net) |
2022-08-25 10:05:49 +0200 | Pickchea | (~private@user/pickchea) |
2022-08-25 10:07:17 +0200 | wonko | (~wjc@2a0e:1c80:2::130) |
2022-08-25 10:12:21 +0200 | dsrt^ | (~dsrt@96.70.11.181) (Ping timeout: 252 seconds) |
2022-08-25 10:21:35 +0200 | vglfr | (~vglfr@37.73.8.134) |
2022-08-25 10:21:56 +0200 | matthewmosior | (~matthewmo@173.170.253.91) (Ping timeout: 255 seconds) |
2022-08-25 10:23:08 +0200 | toeffel | (~toeffel@user/toeffel) |
2022-08-25 10:24:37 +0200 | shriekingnoise | (~shrieking@186.137.167.202) (Quit: Quit) |
2022-08-25 10:27:11 +0200 | GoldsteinQ | (~goldstein@goldstein.rs) (Ping timeout: 260 seconds) |
2022-08-25 10:32:44 +0200 | mc47 | (~mc47@xmonad/TheMC47) (Ping timeout: 255 seconds) |
2022-08-25 10:34:55 +0200 | matthewmosior | (~matthewmo@173.170.253.91) |
2022-08-25 10:38:13 +0200 | chele | (~chele@user/chele) |
2022-08-25 10:41:10 +0200 | zaquest | (~notzaques@5.130.79.72) (Remote host closed the connection) |
2022-08-25 10:41:44 +0200 | luffy | (~chenqisu1@183.217.200.212) |
2022-08-25 10:44:08 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2022-08-25 10:45:01 +0200 | ubert | (~Thunderbi@77.119.217.249.wireless.dyn.drei.com) |
2022-08-25 10:48:46 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 260 seconds) |
2022-08-25 10:48:55 +0200 | akegalj | (~akegalj@135-40.dsl.iskon.hr) |
2022-08-25 10:52:19 +0200 | vglfr | (~vglfr@37.73.8.134) (Ping timeout: 252 seconds) |
2022-08-25 10:57:33 +0200 | nschoe | (~quassel@178.251.84.79) |
2022-08-25 11:00:48 +0200 | Pickchea | (~private@user/pickchea) (Quit: Leaving) |
2022-08-25 11:03:06 +0200 | kuribas | (~user@silversquare.silversquare.eu) |
2022-08-25 11:05:09 +0200 | Benzi-Junior | (~BenziJuni@dsl-149-67-162.hive.is) (Ping timeout: 252 seconds) |
2022-08-25 11:05:37 +0200 | adanwan | (~adanwan@gateway/tor-sasl/adanwan) (Ping timeout: 268 seconds) |
2022-08-25 11:05:57 +0200 | adanwan | (~adanwan@gateway/tor-sasl/adanwan) |
2022-08-25 11:06:14 +0200 | azimut | (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 268 seconds) |
2022-08-25 11:06:14 +0200 | motersen | (~motersen@user/motersen) (Ping timeout: 268 seconds) |
2022-08-25 11:06:14 +0200 | FinnElija | (~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 268 seconds) |
2022-08-25 11:06:51 +0200 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 268 seconds) |
2022-08-25 11:07:04 +0200 | motersen | (~motersen@user/motersen) |
2022-08-25 11:07:28 +0200 | stiell | (~stiell@gateway/tor-sasl/stiell) (Ping timeout: 268 seconds) |
2022-08-25 11:08:05 +0200 | jpds | (~jpds@gateway/tor-sasl/jpds) (Ping timeout: 268 seconds) |
2022-08-25 11:08:07 +0200 | king_gs | (~Thunderbi@2806:103e:29:da7a:8cff:b135:3864:cc72) (Remote host closed the connection) |
2022-08-25 11:08:26 +0200 | king_gs | (~Thunderbi@2806:103e:29:da7a:8cff:b135:3864:cc72) |
2022-08-25 11:08:30 +0200 | FinnElija | (~finn_elij@user/finn-elija/x-0085643) |
2022-08-25 11:08:42 +0200 | ChaiTRex | (~ChaiTRex@user/chaitrex) (Ping timeout: 268 seconds) |
2022-08-25 11:08:55 +0200 | jpds | (~jpds@gateway/tor-sasl/jpds) |
2022-08-25 11:09:05 +0200 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) |
2022-08-25 11:09:33 +0200 | ChaiTRex | (~ChaiTRex@user/chaitrex) |
2022-08-25 11:09:35 +0200 | nate4 | (~nate@98.45.169.16) |
2022-08-25 11:14:18 +0200 | nate4 | (~nate@98.45.169.16) (Ping timeout: 240 seconds) |
2022-08-25 11:15:57 +0200 | azimut | (~azimut@gateway/tor-sasl/azimut) |
2022-08-25 11:16:38 +0200 | stiell | (~stiell@gateway/tor-sasl/stiell) |
2022-08-25 11:17:24 +0200 | notzmv | (~zmv@user/notzmv) (Ping timeout: 268 seconds) |
2022-08-25 11:23:35 +0200 | wonko | (~wjc@2a0e:1c80:2::130) (Ping timeout: 255 seconds) |
2022-08-25 11:24:17 +0200 | mc47 | (~mc47@xmonad/TheMC47) |
2022-08-25 11:26:38 +0200 | nilradical | (~nilradica@user/naso) (Remote host closed the connection) |
2022-08-25 11:27:15 +0200 | nilradical | (~nilradica@user/naso) |
2022-08-25 11:32:30 +0200 | nilradical | (~nilradica@user/naso) (Ping timeout: 264 seconds) |
2022-08-25 11:35:17 +0200 | Benzi-Junior | (~BenziJuni@88-149-67-162.du.xdsl.is) |
2022-08-25 11:37:01 +0200 | jao | (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 268 seconds) |
2022-08-25 11:38:44 +0200 | beteigeuze | (~Thunderbi@bl11-28-222.dsl.telepac.pt) |
2022-08-25 11:40:33 +0200 | dminuoso | wants SelectiveDo |
2022-08-25 11:47:05 +0200 | econo | (uid147250@user/econo) (Quit: Connection closed for inactivity) |
2022-08-25 11:47:36 +0200 | azimut | (~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection) |
2022-08-25 11:48:21 +0200 | azimut | (~azimut@gateway/tor-sasl/azimut) |
2022-08-25 11:48:39 +0200 | vglfr | (~vglfr@145.224.94.75) |
2022-08-25 11:51:15 +0200 | adanwan | (~adanwan@gateway/tor-sasl/adanwan) (Ping timeout: 268 seconds) |
2022-08-25 11:51:55 +0200 | adanwan | (~adanwan@gateway/tor-sasl/adanwan) |
2022-08-25 11:52:42 +0200 | jpds1 | (~jpds@gateway/tor-sasl/jpds) |
2022-08-25 11:52:52 +0200 | Chai-T-Rex | (~ChaiTRex@user/chaitrex) |
2022-08-25 11:53:06 +0200 | jpds | (~jpds@gateway/tor-sasl/jpds) (Ping timeout: 268 seconds) |
2022-08-25 11:53:43 +0200 | califax | (~califax@user/califx) (Ping timeout: 268 seconds) |
2022-08-25 11:54:24 +0200 | jpds1 | (~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection) |
2022-08-25 11:55:34 +0200 | ChaiTRex | (~ChaiTRex@user/chaitrex) (Ping timeout: 268 seconds) |
2022-08-25 11:55:34 +0200 | jpds1 | (~jpds@gateway/tor-sasl/jpds) |
2022-08-25 11:56:03 +0200 | califax | (~califax@user/califx) |
2022-08-25 11:57:30 +0200 | jpds1 | (~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection) |
2022-08-25 11:57:30 +0200 | califax | (~califax@user/califx) (Remote host closed the connection) |
2022-08-25 11:57:52 +0200 | jpds1 | (~jpds@gateway/tor-sasl/jpds) |
2022-08-25 11:58:01 +0200 | califax | (~califax@user/califx) |
2022-08-25 12:00:31 +0200 | nilradical | (~nilradica@user/naso) |
2022-08-25 12:01:02 +0200 | euandreh | (~euandreh@179.214.113.107) (Quit: WeeChat 3.6) |
2022-08-25 12:01:42 +0200 | adanwan | (~adanwan@gateway/tor-sasl/adanwan) (Remote host closed the connection) |
2022-08-25 12:01:54 +0200 | euandreh | (~euandreh@179.214.113.107) |
2022-08-25 12:02:08 +0200 | adanwan | (~adanwan@gateway/tor-sasl/adanwan) |
2022-08-25 12:03:02 +0200 | euandreh | (~euandreh@179.214.113.107) (Client Quit) |
2022-08-25 12:03:57 +0200 | euandreh | (~euandreh@179.214.113.107) |
2022-08-25 12:04:21 +0200 | euandreh | (~euandreh@179.214.113.107) (Client Quit) |
2022-08-25 12:05:32 +0200 | motersen | (~motersen@user/motersen) () |
2022-08-25 12:05:54 +0200 | kannon | (~NK@135-180-47-54.fiber.dynamic.sonic.net) |
2022-08-25 12:06:03 +0200 | azimut | (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 268 seconds) |
2022-08-25 12:10:12 +0200 | kannon | (~NK@135-180-47-54.fiber.dynamic.sonic.net) (Ping timeout: 244 seconds) |
2022-08-25 12:10:55 +0200 | zaquest | (~notzaques@5.130.79.72) |
2022-08-25 12:11:14 +0200 | nilradical | (~nilradica@user/naso) (Remote host closed the connection) |
2022-08-25 12:11:33 +0200 | nilradical | (~nilradica@user/naso) |
2022-08-25 12:15:32 +0200 | Pickchea | (~private@user/pickchea) |
2022-08-25 12:17:35 +0200 | mvk | (~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 +0200 | eikke | (~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 +0200 | mc47 | (~mc47@xmonad/TheMC47) (Remote host closed the connection) |
2022-08-25 12:27:53 +0200 | themc47 | (~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 +0200 | kuribas` | (~user@silversquare.silversquare.eu) |
2022-08-25 12:30:51 +0200 | kuribas | (~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 +0200 | gmg | (~user@user/gehmehgeh) |
2022-08-25 12:33:38 +0200 | liz | (~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 +0200 | nilradical | (~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 +0200 | nilradical | (~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 +0200 | tcard | (~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 +0200 | tcard | (~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 +0200 | king_gs | (~Thunderbi@2806:103e:29:da7a:8cff:b135:3864:cc72) (Quit: king_gs) |
2022-08-25 12:41:21 +0200 | king_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 +0200 | themc47 | (~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 +0200 | dminuoso | shrugs |
2022-08-25 12:43:22 +0200 | luffy | (~chenqisu1@183.217.200.212) (Remote host closed the connection) |
2022-08-25 12:43:42 +0200 | luffy | (~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 +0200 | toeffel | (~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 +0200 | nilradical | (~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 +0200 | gmg | (~user@user/gehmehgeh) (Remote host closed the connection) |
2022-08-25 12:48:15 +0200 | gmg | (~user@user/gehmehgeh) |
2022-08-25 12:52:55 +0200 | wonko | (~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 +0200 | eikke | (~NicolasT@88.126.78.98) |
2022-08-25 12:58:42 +0200 | Sinbad | (~Sinbad@user/sinbad) |
2022-08-25 12:59:21 +0200 | euandreh | (~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 +0200 | Sinbad | (~Sinbad@user/sinbad) (Quit: WeeChat 3.6) |
2022-08-25 13:08:37 +0200 | CiaoSen | (~Jura@p200300c95738a5002a3a4dfffe84dbd5.dip0.t-ipconnect.de) |
2022-08-25 13:09:33 +0200 | pretty_dumm_guy | (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) |
2022-08-25 13:13:17 +0200 | nilradical | (~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 +0200 | mc47 | (~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 +0200 | euandreh | (~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 +0200 | notzmv | (~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 +0200 | euandreh | (~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 +0200 | euandreh | (~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 +0200 | wonko | (~wjc@2a0e:1c80:2::130) (Ping timeout: 260 seconds) |
2022-08-25 13:31:15 +0200 | Pickchea | (~private@user/pickchea) (Ping timeout: 248 seconds) |
2022-08-25 13:31:32 +0200 | nilradical | (~nilradica@user/naso) (Remote host closed the connection) |
2022-08-25 13:31:48 +0200 | nilradical | (~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 +0200 | luffy | (~chenqisu1@183.217.200.212) (Remote host closed the connection) |
2022-08-25 13:37:22 +0200 | luffy | (~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 +0200 | adanwan | (~adanwan@gateway/tor-sasl/adanwan) (Remote host closed the connection) |
2022-08-25 13:44:10 +0200 | luffy | (~chenqisu1@183.217.200.212) (Ping timeout: 268 seconds) |
2022-08-25 13:44:45 +0200 | adanwan | (~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 +0200 | jonathanx | (~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 +0200 | matthewmosior | (~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 +0200 | cfricke | (~cfricke@user/cfricke) (Quit: WeeChat 3.6) |
2022-08-25 14:05:35 +0200 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) (Quit: = "") |
2022-08-25 14:11:19 +0200 | matthewmosior | (~matthewmo@173.170.253.91) |
2022-08-25 14:11:38 +0200 | jonathanx | (~jonathan@c-5eea739f-74736162.cust.telenor.se) |
2022-08-25 14:17:21 +0200 | mc47 | (~mc47@xmonad/TheMC47) (Ping timeout: 268 seconds) |
2022-08-25 14:18:31 +0200 | raehik | (~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 +0200 | euandreh | (~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 +0200 | califax | (~califax@user/califx) (Quit: ZNC 1.8.2 - https://znc.in) |
2022-08-25 14:27:04 +0200 | califax_ | (~califax@user/califx) |
2022-08-25 14:27:38 +0200 | ix | (~ix@2a02:8010:674f:0:d65d:64ff:fe52:5efe) (Ping timeout: 244 seconds) |
2022-08-25 14:28:16 +0200 | califax_ | califax |
2022-08-25 14:31:09 +0200 | B-J | (~BenziJuni@dsl-149-67-162.hive.is) |
2022-08-25 14:31:32 +0200 | Benzi-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 +0200 | jespada | (~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 +0200 | matthewmosior | (~matthewmo@173.170.253.91) (Remote host closed the connection) |
2022-08-25 14:34:17 +0200 | matthewmosior | (~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 +0200 | king_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 +0200 | Pickchea | (~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 +0200 | ncf | (~n@monade.li) (Ping timeout: 268 seconds) |
2022-08-25 14:46:28 +0200 | ncf | (~n@monade.li) |
2022-08-25 14:50:51 +0200 | matthewmosior | (~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 +0200 | matthewmosior | (~matthewmo@173.170.253.91) |
2022-08-25 14:52:10 +0200 | <lortabac> | apparently it's in 'extra' |
2022-08-25 14:52:50 +0200 | mc47 | (~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 +0200 | califax | (~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 +0200 | toeffel | (~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 +0200 | califax | (~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 +0200 | xff0x | (~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 +0200 | Pickchea | (~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 +0200 | nate4 | (~nate@98.45.169.16) |
2022-08-25 15:15:57 +0200 | nate4 | (~nate@98.45.169.16) (Ping timeout: 252 seconds) |
2022-08-25 15:17:11 +0200 | toeffel | (~toeffel@user/toeffel) (Quit: quit) |
2022-08-25 15:22:30 +0200 | cfricke | (~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 +0200 | dsrt^ | (~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 +0200 | jmdaemon | (~jmdaemon@user/jmdaemon) (Ping timeout: 268 seconds) |
2022-08-25 15:26:52 +0200 | toeffel | (~toeffel@user/toeffel) |
2022-08-25 15:27:03 +0200 | ryantrinkle | (~ryan@2607:f00:3:14c0:7c6b:7160:d1ff:3f7) (Ping timeout: 244 seconds) |
2022-08-25 15:27:58 +0200 | matthewmosior | (~matthewmo@173.170.253.91) (Remote host closed the connection) |
2022-08-25 15:28:47 +0200 | matthewmosior | (~matthewmo@173.170.253.91) |
2022-08-25 15:28:55 +0200 | jonathanx | (~jonathan@c-5eea739f-74736162.cust.telenor.se) (Read error: Connection reset by peer) |
2022-08-25 15:29:18 +0200 | mastarija | (~mastarija@2a05:4f46:e03:6000:cf81:4038:e6c6:74b4) |
2022-08-25 15:30:08 +0200 | jonathanx | (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) |
2022-08-25 15:30:14 +0200 | segfaultfizzbuzz | (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) |
2022-08-25 15:31:11 +0200 | king_gs | (~Thunderbi@187.201.216.244) |
2022-08-25 15:33:26 +0200 | matthewmosior | (~matthewmo@173.170.253.91) (Ping timeout: 260 seconds) |
2022-08-25 15:33:36 +0200 | matthewmosior | (~matthewmo@173.170.253.91) |
2022-08-25 15:33:43 +0200 | akegalj | (~akegalj@135-40.dsl.iskon.hr) (Quit: leaving) |
2022-08-25 15:34:18 +0200 | mncheckm | (~mncheck@193.224.205.254) (Remote host closed the connection) |
2022-08-25 15:36:56 +0200 | segfaultfizzbuzz | (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) (Ping timeout: 255 seconds) |
2022-08-25 15:37:27 +0200 | xff0x | (~xff0x@2405:6580:b080:900:ae06:3e97:decd:45dd) |
2022-08-25 15:38:41 +0200 | dsrt^ | (~dsrt@96.70.11.181) (Ping timeout: 260 seconds) |
2022-08-25 15:41:00 +0200 | matthewmosior | (~matthewmo@173.170.253.91) (Remote host closed the connection) |
2022-08-25 15:47:15 +0200 | hpc | (~juzz@ip98-169-32-242.dc.dc.cox.net) (Ping timeout: 248 seconds) |
2022-08-25 15:48:27 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2022-08-25 15:49:31 +0200 | matthewmosior | (~matthewmo@173.170.253.91) |
2022-08-25 15:50:08 +0200 | ix | (~ix@2a02:8010:674f:0:d65d:64ff:fe52:5efe) |
2022-08-25 15:50:39 +0200 | segfaultfizzbuzz | (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) |
2022-08-25 15:52:49 +0200 | mncheck | (~mncheck@193.224.205.254) |
2022-08-25 15:53:03 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 268 seconds) |
2022-08-25 15:54:26 +0200 | matthewmosior | (~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 +0200 | califax | (~califax@user/califx) (Remote host closed the connection) |
2022-08-25 15:59:40 +0200 | hpc | (~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 +0200 | califax | (~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 +0200 | Killy | (~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 +0200 | matthewmosior | (~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 +0200 | segfaultfizzbuzz | (~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 +0200 | kannon | (~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 +0200 | lortabac | (~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 +0200 | ryantrinkle | (~ryan@2607:fb90:cd1c:c620:bd17:cb61:34d1:12f) |
2022-08-25 16:09:28 +0200 | shriekingnoise | (~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 +0200 | kannon | (~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 +0200 | ardell | (~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 +0200 | king_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 +0200 | causal | (~user@50.35.83.177) (Quit: WeeChat 3.6) |
2022-08-25 16:21:49 +0200 | matthewmosior | (~matthewmo@173.170.253.91) (Ping timeout: 244 seconds) |
2022-08-25 16:22:18 +0200 | matthewmosior | (~matthewmo@173.170.253.91) |
2022-08-25 16:23:08 +0200 | gurkenglas | (~gurkengla@p548ac72e.dip0.t-ipconnect.de) (Ping timeout: 268 seconds) |
2022-08-25 16:24:40 +0200 | segfaultfizzbuzz | (~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 +0200 | gurkenglas | (~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 +0200 | waleee | (~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 +0200 | ryantrinkle | (~ryan@2607:fb90:cd1c:c620:bd17:cb61:34d1:12f) (Ping timeout: 244 seconds) |
2022-08-25 16:37:53 +0200 | shriekingnoise | (~shrieking@186.137.167.202) (Quit: Quit) |
2022-08-25 16:37:53 +0200 | cfricke | (~cfricke@user/cfricke) (Quit: WeeChat 3.6) |
2022-08-25 16:41:00 +0200 | gurkenglas | (~gurkengla@p548ac72e.dip0.t-ipconnect.de) (Ping timeout: 268 seconds) |
2022-08-25 16:41:23 +0200 | shriekingnoise | (~shrieking@186.137.167.202) |
2022-08-25 16:45:35 +0200 | yvan-sraka | (~yvan-srak@37.171.49.59) |
2022-08-25 16:49:42 +0200 | dos__^^ | (~user@user/dos/x-1723657) (Remote host closed the connection) |
2022-08-25 16:52:10 +0200 | dos__^^ | (~user@user/dos/x-1723657) |
2022-08-25 16:55:00 +0200 | zebrag | (~chris@user/zebrag) |
2022-08-25 16:55:50 +0200 | yvan-sraka | (~yvan-srak@37.171.49.59) (Remote host closed the connection) |
2022-08-25 16:56:09 +0200 | yvan-sraka | (~yvan-srak@37.171.49.59) |
2022-08-25 16:57:38 +0200 | dsrt^ | (~dsrt@96.70.11.181) |
2022-08-25 17:00:45 +0200 | tzh | (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) |
2022-08-25 17:07:13 +0200 | adanwan | (~adanwan@gateway/tor-sasl/adanwan) (Remote host closed the connection) |
2022-08-25 17:07:15 +0200 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 248 seconds) |
2022-08-25 17:07:35 +0200 | adanwan | (~adanwan@gateway/tor-sasl/adanwan) |
2022-08-25 17:08:31 +0200 | cfricke | (~cfricke@user/cfricke) |
2022-08-25 17:09:06 +0200 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
2022-08-25 17:09:45 +0200 | toeffel | (~toeffel@user/toeffel) (Quit: quit) |
2022-08-25 17:10:00 +0200 | dsrt^ | (~dsrt@96.70.11.181) (Ping timeout: 268 seconds) |
2022-08-25 17:18:04 +0200 | toeffel | (~toeffel@user/toeffel) |
2022-08-25 17:21:27 +0200 | ryantrinkle | (~ryan@2607:f00:3:14c0:7c6b:7160:d1ff:3f7) |
2022-08-25 17:25:50 +0200 | ober_ | (~ober@c-24-61-80-64.hsd1.ma.comcast.net) |
2022-08-25 17:26:36 +0200 | eikke | (~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 +0200 | nilradical | (~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 +0200 | matthewmosior | (~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 +0200 | toeffel | (~toeffel@user/toeffel) (Quit: quit) |
2022-08-25 17:34:00 +0200 | toeffel | (~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 +0200 | mvk | (~mvk@2607:fea8:5ce3:8500::a1ec) |
2022-08-25 17:34:51 +0200 | gentauro | (~gentauro@user/gentauro) (Read error: Connection reset by peer) |
2022-08-25 17:38:44 +0200 | coot | (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot) |
2022-08-25 17:40:06 +0200 | gentauro | (~gentauro@user/gentauro) |
2022-08-25 17:45:58 +0200 | yvan-sraka | (~yvan-srak@37.171.49.59) (Remote host closed the connection) |
2022-08-25 17:47:50 +0200 | rik_tig | (~rik_tig@user/rik-tig/x-5430394) |
2022-08-25 17:49:58 +0200 | dsrt^ | (~dsrt@96.70.11.181) |
2022-08-25 17:50:04 +0200 | segfaultfizzbuzz | (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) (Ping timeout: 268 seconds) |
2022-08-25 17:54:36 +0200 | toeffel | (~toeffel@user/toeffel) (Quit: quit) |
2022-08-25 17:54:38 +0200 | yvan-sraka | (~yvan-srak@37.173.219.26) |
2022-08-25 17:57:34 +0200 | matthewmosior | (~matthewmo@173.170.253.91) |
2022-08-25 18:03:57 +0200 | kuribas` | (~user@silversquare.silversquare.eu) (Remote host closed the connection) |
2022-08-25 18:05:51 +0200 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
2022-08-25 18:06:46 +0200 | cfricke | (~cfricke@user/cfricke) (Quit: WeeChat 3.6) |
2022-08-25 18:08:12 +0200 | jao | (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) |
2022-08-25 18:11:20 +0200 | eikke | (~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 +0200 | yvan-sraka | (~yvan-srak@37.173.219.26) (Remote host closed the connection) |
2022-08-25 18:13:16 +0200 | dsrt^ | (~dsrt@96.70.11.181) (Ping timeout: 260 seconds) |
2022-08-25 18:13:28 +0200 | chele | (~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 +0200 | eikke | (~NicolasT@88.126.78.98) (Changing host) |
2022-08-25 18:15:09 +0200 | eikke | (~NicolasT@user/NicolasT) |
2022-08-25 18:15:14 +0200 | <merijn> | I should have an issue about it |
2022-08-25 18:15:52 +0200 | toeffel | (~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 +0200 | mvk | (~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 +0200 | ec | (~ec@gateway/tor-sasl/ec) |
2022-08-25 18:25:00 +0200 | cstml | (~cstml@user/cstml) |
2022-08-25 18:28:28 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2022-08-25 18:29:18 +0200 | alternateved | (~user@staticline-31-183-146-203.toya.net.pl) (Remote host closed the connection) |
2022-08-25 18:30:26 +0200 | segfaultfizzbuzz | (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) |
2022-08-25 18:32:29 +0200 | FragByte_ | (~christian@user/fragbyte) |
2022-08-25 18:33:06 +0200 | fserucas | (~fserucas@89.214.153.60) (Ping timeout: 260 seconds) |
2022-08-25 18:35:44 +0200 | FragByte | (~christian@user/fragbyte) (Ping timeout: 268 seconds) |
2022-08-25 18:35:44 +0200 | FragByte_ | FragByte |
2022-08-25 18:36:00 +0200 | mbuf | (~Shakthi@122.165.55.71) (Quit: Leaving) |
2022-08-25 18:36:02 +0200 | zebrag | (~chris@user/zebrag) (Quit: Konversation terminated!) |
2022-08-25 18:36:25 +0200 | zebrag | (~chris@user/zebrag) |
2022-08-25 18:37:01 +0200 | cstml | (~cstml@user/cstml) (Quit: WeeChat 3.5) |
2022-08-25 18:41:17 +0200 | machinedgod | (~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 252 seconds) |
2022-08-25 18:43:10 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
2022-08-25 18:47:06 +0200 | segfaultfizzbuzz | (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) (Ping timeout: 260 seconds) |
2022-08-25 18:49:26 +0200 | nschoe | (~quassel@178.251.84.79) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.) |
2022-08-25 18:49:39 +0200 | ubert | (~Thunderbi@77.119.217.249.wireless.dyn.drei.com) (Ping timeout: 248 seconds) |
2022-08-25 18:50:02 +0200 | ubert | (~Thunderbi@77.119.173.191.wireless.dyn.drei.com) |
2022-08-25 18:50:09 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2022-08-25 18:50:56 +0200 | cstml | (~cstml@user/cstml) |
2022-08-25 18:53:34 +0200 | cstml | (~cstml@user/cstml) (Client Quit) |
2022-08-25 18:54:29 +0200 | paddymahoney | (~paddymaho@cpe9050ca207f83-cm9050ca207f80.cpe.net.cable.rogers.com) (Ping timeout: 252 seconds) |
2022-08-25 18:55:16 +0200 | CiaoSen | (~Jura@p200300c95738a5002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 244 seconds) |
2022-08-25 19:00:04 +0200 | pavonia | (~user@user/siracusa) (Quit: Bye!) |
2022-08-25 19:00:19 +0200 | waleee | (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 248 seconds) |
2022-08-25 19:01:58 +0200 | califax | (~califax@user/califx) (Remote host closed the connection) |
2022-08-25 19:03:12 +0200 | califax | (~califax@user/califx) |
2022-08-25 19:10:32 +0200 | ardell | (~ardell@user/ardell) |
2022-08-25 19:12:36 +0200 | nate4 | (~nate@98.45.169.16) |
2022-08-25 19:13:36 +0200 | vglfr | (~vglfr@145.224.94.75) (Read error: Connection reset by peer) |
2022-08-25 19:13:43 +0200 | vglfr | (~vglfr@145.224.94.75) |
2022-08-25 19:15:35 +0200 | segfaultfizzbuzz | (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) |
2022-08-25 19:17:38 +0200 | nate4 | (~nate@98.45.169.16) (Ping timeout: 268 seconds) |
2022-08-25 19:20:06 +0200 | segfaultfizzbuzz | (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) (Ping timeout: 268 seconds) |
2022-08-25 19:27:10 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
2022-08-25 19:30:37 +0200 | merijn | (~merijn@c-001-001-007.client.esciencecenter.eduvpn.nl) (Ping timeout: 268 seconds) |
2022-08-25 19:31:54 +0200 | AlexNoo_ | (~AlexNoo@178.34.163.186) |
2022-08-25 19:33:46 +0200 | AlexZenon | (~alzenon@178.34.150.204) (Ping timeout: 260 seconds) |
2022-08-25 19:34:59 +0200 | Alex_test | (~al_test@178.34.150.204) (Ping timeout: 248 seconds) |
2022-08-25 19:35:31 +0200 | AlexNoo | (~AlexNoo@178.34.150.204) (Ping timeout: 268 seconds) |
2022-08-25 19:35:41 +0200 | ober_ | (~ober@c-24-61-80-64.hsd1.ma.comcast.net) (Quit: Leaving) |
2022-08-25 19:36:17 +0200 | rik_tig | (~rik_tig@user/rik-tig/x-5430394) (Ping timeout: 252 seconds) |
2022-08-25 19:37:37 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2022-08-25 19:39:03 +0200 | Alex_test | (~al_test@178.34.163.186) |
2022-08-25 19:39:04 +0200 | jmdaemon | (~jmdaemon@user/jmdaemon) |
2022-08-25 19:39:16 +0200 | AlexZenon | (~alzenon@178.34.163.186) |
2022-08-25 19:41:25 +0200 | eikke | (~NicolasT@user/NicolasT) (Ping timeout: 252 seconds) |
2022-08-25 19:42:03 +0200 | eikke | (~NicolasT@user/NicolasT) |
2022-08-25 19:46:36 +0200 | eikke | (~NicolasT@user/NicolasT) (Ping timeout: 260 seconds) |
2022-08-25 19:47:58 +0200 | jespada | (~jespada@181.28.113.105) (Quit: Textual IRC Client: www.textualapp.com) |
2022-08-25 19:48:38 +0200 | segfaultfizzbuzz | (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) |
2022-08-25 19:49:28 +0200 | kannon | (~NK@135-180-47-54.fiber.dynamic.sonic.net) |
2022-08-25 19:51:56 +0200 | Tuplanolla | (~Tuplanoll@91-159-69-12.elisa-laajakaista.fi) |
2022-08-25 19:52:50 +0200 | cheater | (~Username@user/cheater) (Quit: BitchX: good to the last drop!) |
2022-08-25 19:53:03 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
2022-08-25 19:53:26 +0200 | segfaultfizzbuzz | (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) (Ping timeout: 268 seconds) |
2022-08-25 19:53:26 +0200 | rik_tig | (~rik_tig@user/rik-tig/x-5430394) |
2022-08-25 19:53:30 +0200 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2022-08-25 19:54:11 +0200 | kannon | (~NK@135-180-47-54.fiber.dynamic.sonic.net) (Ping timeout: 260 seconds) |
2022-08-25 19:56:45 +0200 | merijn | (~merijn@c-001-001-007.client.esciencecenter.eduvpn.nl) |
2022-08-25 19:58:36 +0200 | econo | (uid147250@user/econo) |
2022-08-25 19:59:07 +0200 | Pickchea | (~private@user/pickchea) |
2022-08-25 20:02:30 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2022-08-25 20:06:25 +0200 | mhatta | (~mhatta@www21123ui.sakura.ne.jp) |
2022-08-25 20:06:52 +0200 | kannon | (~NK@135-180-47-54.fiber.dynamic.sonic.net) |
2022-08-25 20:09:06 +0200 | hgolden | (~hgolden2@cpe-172-251-233-141.socal.res.rr.com) (Remote host closed the connection) |
2022-08-25 20:10:12 +0200 | glguy | (x@libera/staff-emeritus/glguy) |
2022-08-25 20:11:26 +0200 | kannon | (~NK@135-180-47-54.fiber.dynamic.sonic.net) (Ping timeout: 255 seconds) |
2022-08-25 20:28:54 +0200 | instantaphex | (~jb@c-73-171-252-84.hsd1.fl.comcast.net) |
2022-08-25 20:30:51 +0200 | merijn | (~merijn@c-001-001-007.client.esciencecenter.eduvpn.nl) (Ping timeout: 244 seconds) |
2022-08-25 20:31:13 +0200 | guest8080 | (~guest8080@207.102.57.162) |
2022-08-25 20:33:16 +0200 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
2022-08-25 20:34:44 +0200 | Lord_of_Life | (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 268 seconds) |
2022-08-25 20:35:48 +0200 | Lord_of_Life | (~Lord@user/lord-of-life/x-2819915) |
2022-08-25 20:38:24 +0200 | kannon | (~NK@135-180-47-54.fiber.dynamic.sonic.net) |
2022-08-25 20:38:41 +0200 | coot | (~coot@213.134.176.158) |
2022-08-25 20:38:56 +0200 | segfaultfizzbuzz | (~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 +0200 | azimut | (~azimut@gateway/tor-sasl/azimut) |
2022-08-25 20:42:44 +0200 | kannon | (~NK@135-180-47-54.fiber.dynamic.sonic.net) (Ping timeout: 244 seconds) |
2022-08-25 20:43:23 +0200 | segfaultfizzbuzz | (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) (Ping timeout: 252 seconds) |
2022-08-25 20:43:27 +0200 | guest8080 | (~guest8080@207.102.57.162) (Quit: Client closed) |
2022-08-25 20:44:31 +0200 | emad | (~emad@156.214.65.212) |
2022-08-25 20:44:46 +0200 | emad | (~emad@156.214.65.212) (Remote host closed the connection) |
2022-08-25 20:46:13 +0200 | benin0 | (~benin@183.82.205.66) |
2022-08-25 20:49:18 +0200 | instantaphex | (~jb@c-73-171-252-84.hsd1.fl.comcast.net) (Ping timeout: 240 seconds) |
2022-08-25 20:50:42 +0200 | ardell_ | (~ardell@user/ardell) |
2022-08-25 20:53:12 +0200 | lortabac | (~lortabac@2a01:e0a:541:b8f0:a028:dd7c:b36:1982) |
2022-08-25 20:53:50 +0200 | ardell | (~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 +0200 | ccntrq | (~Thunderbi@172.209.94.92.rev.sfr.net) (Remote host closed the connection) |
2022-08-25 21:01:38 +0200 | AlexNoo_ | AlexNoo |
2022-08-25 21:02:02 +0200 | Midjak | (~Midjak@82.66.147.146) |
2022-08-25 21:02:28 +0200 | td_ | (~td@94.134.91.83) (Quit: waking up from the american dream ...) |
2022-08-25 21:05:20 +0200 | darkstardev13 | (~darkstard@50.53.212.60) |
2022-08-25 21:05:24 +0200 | tzh_ | (~tzh@c-24-21-73-154.hsd1.or.comcast.net) |
2022-08-25 21:05:27 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Read error: Connection reset by peer) |
2022-08-25 21:05:28 +0200 | darkstarx | (~darkstard@50.53.212.60) (Remote host closed the connection) |
2022-08-25 21:05:37 +0200 | tzh | (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Remote host closed the connection) |
2022-08-25 21:05:38 +0200 | AlexZenon_2 | (~alzenon@178.34.163.186) |
2022-08-25 21:06:11 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2022-08-25 21:07:13 +0200 | AlexZenon | (~alzenon@178.34.163.186) (Ping timeout: 252 seconds) |
2022-08-25 21:09:01 +0200 | Miliang | (~Miliang@46.245.107.78) |
2022-08-25 21:11:46 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
2022-08-25 21:13:05 +0200 | toeffel | (~toeffel@user/toeffel) (Ping timeout: 252 seconds) |
2022-08-25 21:13:42 +0200 | Miliang | (~Miliang@46.245.107.78) (Client Quit) |
2022-08-25 21:14:33 +0200 | merijn | (~merijn@c-001-001-007.client.esciencecenter.eduvpn.nl) |
2022-08-25 21:15:47 +0200 | AlexZenon_2 | (~alzenon@178.34.163.186) (Read error: Connection reset by peer) |
2022-08-25 21:15:47 +0200 | Alex_test | (~al_test@178.34.163.186) (Read error: Connection reset by peer) |
2022-08-25 21:15:51 +0200 | waleee | (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) |
2022-08-25 21:16:05 +0200 | Alex_test | (~al_test@178.34.163.186) |
2022-08-25 21:16:05 +0200 | AlexZenon | (~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 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2022-08-25 21:19:19 +0200 | merijn | (~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 +0200 | eggplantade | (~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 +0200 | segfaultfizzbuzz | (~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 +0200 | segfaultfizzbuzz | (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) (Ping timeout: 252 seconds) |
2022-08-25 21:34:35 +0200 | coot | (~coot@213.134.176.158) (Remote host closed the connection) |
2022-08-25 21:34:49 +0200 | machinedgod | (~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 +0200 | coot | (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) |
2022-08-25 21:40:22 +0200 | myme1 | (~myme@2a01:799:d5a:cd00:bb5a:372d:4d0c:faeb) (Quit: WeeChat 3.4.1) |
2022-08-25 21:42:07 +0200 | slaydr | (~slaydr@75.164.14.186) |
2022-08-25 21:43:16 +0200 | themc47 | (~mc47@xmonad/TheMC47) |
2022-08-25 21:43:55 +0200 | coot | (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot) |
2022-08-25 21:44:44 +0200 | mc47 | (~mc47@xmonad/TheMC47) (Ping timeout: 244 seconds) |
2022-08-25 21:50:29 +0200 | pavonia | (~user@user/siracusa) |
2022-08-25 21:53:25 +0200 | merijn | (~merijn@c-001-001-007.client.esciencecenter.eduvpn.nl) |
2022-08-25 21:58:41 +0200 | matthewmosior | (~matthewmo@173.170.253.91) (Ping timeout: 244 seconds) |
2022-08-25 22:02:45 +0200 | segfaultfizzbuzz | (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) |
2022-08-25 22:07:13 +0200 | segfaultfizzbuzz | (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) (Ping timeout: 268 seconds) |
2022-08-25 22:07:24 +0200 | TonyStone | (~TonyStone@2603-7080-8607-c36a-0cc7-7d4a-4464-7c91.res6.spectrum.com) (Remote host closed the connection) |
2022-08-25 22:11:40 +0200 | azimut | (~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection) |
2022-08-25 22:12:05 +0200 | azimut | (~azimut@gateway/tor-sasl/azimut) |
2022-08-25 22:12:31 +0200 | matthewmosior | (~matthewmo@173.170.253.91) |
2022-08-25 22:21:35 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2022-08-25 22:24:15 +0200 | lortabac | (~lortabac@2a01:e0a:541:b8f0:a028:dd7c:b36:1982) (Quit: WeeChat 2.8) |
2022-08-25 22:26:25 +0200 | merijn | (~merijn@c-001-001-007.client.esciencecenter.eduvpn.nl) (Ping timeout: 252 seconds) |
2022-08-25 22:26:26 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 260 seconds) |
2022-08-25 22:28:59 +0200 | sagax | (~sagax_nb@user/sagax) |
2022-08-25 22:32:25 +0200 | themc47 | (~mc47@xmonad/TheMC47) (Remote host closed the connection) |
2022-08-25 22:39:45 +0200 | TonyStone | (~TonyStone@cpe-74-76-51-197.nycap.res.rr.com) |
2022-08-25 22:40:32 +0200 | merijn | (~merijn@c-001-001-007.client.esciencecenter.eduvpn.nl) |
2022-08-25 22:45:11 +0200 | merijn | (~merijn@c-001-001-007.client.esciencecenter.eduvpn.nl) (Ping timeout: 244 seconds) |
2022-08-25 22:47:01 +0200 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2022-08-25 22:55:28 +0200 | segfaultfizzbuzz | (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) |
2022-08-25 22:55:42 +0200 | mastarija | (~mastarija@2a05:4f46:e03:6000:cf81:4038:e6c6:74b4) (Quit: WeeChat 3.5) |
2022-08-25 22:58:49 +0200 | Midjak | (~Midjak@82.66.147.146) (Quit: Leaving) |
2022-08-25 23:00:13 +0200 | Midjak | (~Midjak@82.66.147.146) |
2022-08-25 23:00:15 +0200 | segfaultfizzbuzz | (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) (Ping timeout: 268 seconds) |
2022-08-25 23:00:19 +0200 | euandreh | (~euandreh@179.214.113.107) (Ping timeout: 248 seconds) |
2022-08-25 23:02:17 +0200 | euandreh | (~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 +0200 | mvk | (~mvk@2607:fea8:5ce3:8500::a1ec) |
2022-08-25 23:05:02 +0200 | Kaipei | (~Kaiepi@142.68.249.28) |
2022-08-25 23:06:17 +0200 | azimut | (~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection) |
2022-08-25 23:06:34 +0200 | azimut | (~azimut@gateway/tor-sasl/azimut) |
2022-08-25 23:07:51 +0200 | Kaiepi | (~Kaiepi@142.68.249.28) (Ping timeout: 260 seconds) |
2022-08-25 23:10:23 +0200 | tromp | (~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 +0200 | takuan | (~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 +0200 | nate4 | (~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 +0200 | segfaultfizzbuzz | (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) |
2022-08-25 23:15:36 +0200 | jpds1 | jpds |
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 +0200 | monochrom | follows 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 +0200 | matthewmosior | (~matthewmo@173.170.253.91) (Remote host closed the connection) |
2022-08-25 23:17:05 +0200 | matthewmosior | (~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 +0200 | slaydr | (~slaydr@75.164.14.186) (Quit: Leaving) |
2022-08-25 23:18:56 +0200 | nate4 | (~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 +0200 | hgolden | (~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 +0200 | matthewmosior | (~matthewmo@173.170.253.91) (Remote host closed the connection) |
2022-08-25 23:29:55 +0200 | matthewmosior | (~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 +0200 | segfaultfizzbuzz | (~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 +0200 | hgolden | (~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 +0200 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2022-08-25 23:34:41 +0200 | matthewmosior | (~matthewmo@173.170.253.91) (Ping timeout: 260 seconds) |
2022-08-25 23:35:20 +0200 | hgolden | (~hgolden@cpe-172-251-233-141.socal.res.rr.com) |
2022-08-25 23:39:56 +0200 | acidjnk | (~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 +0200 | hgolden | (~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 +0200 | hgolden | (~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 +0200 | zeenk | (~zeenk@2a02:2f04:a311:2d00:6865:d863:4c93:799f) (Quit: Konversation terminated!) |
2022-08-25 23:44:51 +0200 | td_ | (~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 +0200 | waleee | (~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 +0200 | gustik | (~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 +0200 | jtomas | (~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 +0200 | azimut | (~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection) |
2022-08-25 23:59:52 +0200 | azimut | (~azimut@gateway/tor-sasl/azimut) |