Logs on 2022-11-22 (liberachat/#haskell)
| 00:00:10 | × | freeside quits (~mengwong@103.252.202.193) (Ping timeout: 252 seconds) |
| 00:00:25 | → | troydm joins (~troydm@host-176-37-124-197.b025.la.net.ua) |
| 00:00:53 | × | fserucas quits (~fserucas@2001:818:e376:a400:fb92:70c1:dd88:c7d7) (Quit: Leaving) |
| 00:01:16 | → | srz_ joins (~srz@179.36.104.57) |
| 00:01:50 | × | bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 255 seconds) |
| 00:02:52 | × | srz_ quits (~srz@179.36.104.57) (Remote host closed the connection) |
| 00:03:13 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:5866:96fb:16f6:58d1) |
| 00:03:18 | → | bitdex joins (~bitdex@gateway/tor-sasl/bitdex) |
| 00:03:24 | → | srz_ joins (~srz@179.36.104.57) |
| 00:03:36 | × | srz quits (~srz@181.228.49.93) (Ping timeout: 268 seconds) |
| 00:06:53 | → | dsrt^ joins (~dsrt@76.145.185.103) |
| 00:07:29 | × | sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.) |
| 00:07:36 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:5866:96fb:16f6:58d1) (Ping timeout: 255 seconds) |
| 00:07:58 | × | ddellacosta quits (~ddellacos@89.45.224.71) (Quit: WeeChat 3.7.1) |
| 00:08:24 | → | ddellacosta joins (~ddellacos@89.45.224.71) |
| 00:08:46 | → | sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
| 00:08:50 | × | merijn quits (~merijn@c-001-001-017.client.esciencecenter.eduvpn.nl) (Ping timeout: 256 seconds) |
| 00:09:29 | × | srz_ quits (~srz@179.36.104.57) (Ping timeout: 260 seconds) |
| 00:10:02 | → | azimut joins (~azimut@gateway/tor-sasl/azimut) |
| 00:11:18 | <Axman6> | c209e6dc-4d76-47: not really, if you think about it, it's not a super helpful thing to have in a language where nearly everything is a function. There are ways to build stack traces though, you might find this useful: https://www.parsonsmatt.org/2022/08/16/dynamic_exception_reporting_in_haskell.html |
| 00:14:01 | → | freeside joins (~mengwong@103.252.202.193) |
| 00:15:32 | <c209e6dc-4d76-47> | so I am writing a typechecker for my toy language and using ExceptT to throw various kinds of errors |
| 00:15:51 | × | azimut quits (~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection) |
| 00:15:52 | <c209e6dc-4d76-47> | but I am having difficulty finding out where a specific error has been thrown in from the compiler code |
| 00:16:03 | <c209e6dc-4d76-47> | to debug if it is a problem with compiler itself |
| 00:16:26 | → | wroathe joins (~wroathe@207-153-38-140.fttp.usinternet.com) |
| 00:16:26 | × | wroathe quits (~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host) |
| 00:16:26 | → | wroathe joins (~wroathe@user/wroathe) |
| 00:16:28 | <Axman6> | You can safely add HasCallstack constraints to your functions to make that easier, like in that post |
| 00:16:40 | → | azimut joins (~azimut@gateway/tor-sasl/azimut) |
| 00:28:24 | × | chexum quits (~quassel@gateway/tor-sasl/chexum) (Quit: No Ping reply in 180 seconds.) |
| 00:29:34 | → | chromoblob joins (~user@37.113.164.122) |
| 00:30:25 | <c209e6dc-4d76-47> | hmm, I see, but I'll have to switch out the ExceptT for error calls, right? |
| 00:30:41 | → | chexum joins (~quassel@gateway/tor-sasl/chexum) |
| 00:31:26 | → | lucerne joins (~lucerne@5.116.75.203) |
| 00:32:04 | <jackdk> | Your `e` in your `ExceptT e m` monad could capture a call stack? |
| 00:32:25 | <Axman6> | you could include the call stack in the ExceptT errors - throw' :: HasCallstack => e -> ExceptT (Callstack, e) m a |
| 00:32:40 | Axman6 | high fives jackdk |
| 00:33:41 | <monochrom> | I am not sure which "error" you mean: 1. Toy typechecker finds a type error in the input, want to track location? 2. Toy typechecker has a bug, want GHC to report location? |
| 00:34:02 | <monochrom> | Because "clearly" the former requires you to implement location tracking yourself. |
| 00:36:52 | <monochrom> | Ironically I am preparing a talk on logics, and I need to clarify how my audience can tell whether I am speaking in the meta-logic or speaking about the target logic. |
| 00:37:15 | × | chromoblob quits (~user@37.113.164.122) (Ping timeout: 260 seconds) |
| 00:37:21 | <monochrom> | And I was thinking "oh but programmers don't find it confusing because they are already used to using GHC to compile GHC!" |
| 00:37:49 | <monochrom> | But I guess we see that it is still confusing to programmers. |
| 00:38:21 | <hpc> | they're just not meta-meta |
| 00:38:23 | <c209e6dc-4d76-47> | more on the lines of 2. toy typechecker has a bug, want GHC to report when toy typechecker report error in the toy program. |
| 00:38:49 | <c209e6dc-4d76-47> | *location in toy typechecker from where toy typechecker found an error in program |
| 00:38:51 | <Axman6> | that sounds like something for your parser then |
| 00:38:56 | <monochrom> | Then ExceptT is totally not for that. |
| 00:38:59 | <Axman6> | or not? |
| 00:39:25 | <hpc> | yeah, it's the parser's job |
| 00:39:26 | <c209e6dc-4d76-47> | parser would have locations from programs not the compiler itself afaik |
| 00:39:35 | <hpc> | it's like asking for a gcc error when a webpage 404s |
| 00:43:23 | <probie> | monochrom: On slides, I find it's helpful to use different symbols (e.g. wedge and thick arrows for one, & and thin arrows for the other). e.g. (p |- q) -> |- (p => q) for something like "if p entails q, then empty entails p implies q" |
| 00:43:27 | → | Lumia joins (~Lumia@user/Lumia) |
| 00:43:33 | <monochrom> | To debug bugs, I would use Debug.Trace instead. |
| 00:43:54 | <hpc> | c209e6dc-4d76-47: to pre-empt another common issue, unless your code does some really fancy guesswork the location info is going to point to the first point of surprise, not the actual first point of error |
| 00:43:56 | <Axman6> | c209e6dc-4d76-47: an alternative, if you have a program you're parsing which causes a problem is to log things instead - log the arguments to each function with its name and any other relevant values |
| 00:44:03 | <monochrom> | Yeah I'll use English for the meta-logic, symbols for the target logic. |
| 00:44:37 | <hpc> | or some kind of intermediate language, depending on how you have it set up? |
| 00:44:39 | <Axman6> | depending on what your app's monad is, Debug.Trace or print are both food ways to hack this |
| 00:44:56 | <hpc> | even if the language isn't actually a real language but just a vaguely nice-ish representation of a data structure |
| 00:45:08 | <monochrom> | yum, food ways :) |
| 00:45:25 | <hpc> | *depending on what your app's burrito is |
| 00:46:12 | <monochrom> | "your labour bears fruit" -> "your labour beer food" >:) |
| 00:46:13 | <Axman6> | good too |
| 00:47:09 | <Axman6> | monochrom: the Australian Labor Party (yes it is actually spelt like that) owns a bunch of clubs, so labor beer food isn;t a particularly surprising sentense here |
| 00:47:17 | <hpc> | i eat my bear fruit with my bear hands |
| 00:47:24 | <probie> | monochrom: out of curiosity, what is the target logic? |
| 00:47:42 | <monochrom> | intuitionistic logic |
| 00:50:44 | <maerwald> | sm: correct |
| 00:52:39 | × | gurkenglas quits (~gurkengla@p548ac72e.dip0.t-ipconnect.de) (Ping timeout: 260 seconds) |
| 00:58:49 | × | sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.) |
| 01:02:57 | → | srz joins (~srz@179.36.104.57) |
| 01:06:04 | × | marc___ quits (~marc@5.83.191.225) (Ping timeout: 256 seconds) |
| 01:06:13 | → | merijn joins (~merijn@c-001-001-017.client.esciencecenter.eduvpn.nl) |
| 01:06:38 | × | Lumia quits (~Lumia@user/Lumia) (Remote host closed the connection) |
| 01:06:39 | × | ubert quits (~Thunderbi@91.141.78.146.wireless.dyn.drei.com) (Ping timeout: 260 seconds) |
| 01:06:53 | → | ubert joins (~Thunderbi@178.165.183.156.wireless.dyn.drei.com) |
| 01:07:01 | × | acidjnk quits (~acidjnk@p200300d6e7137a84584e92a62d782504.dip0.t-ipconnect.de) (Ping timeout: 256 seconds) |
| 01:07:35 | → | marc__ joins (~marc@46.167.25.184) |
| 01:09:06 | × | c209e6dc-4d76-47 quits (~aditya@2601:249:4300:1296:195:dac6:592c:a55a) (Quit: Konversation terminated!) |
| 01:09:29 | × | kaol quits (~kaol@94-237-42-30.nl-ams1.upcloud.host) (Ping timeout: 246 seconds) |
| 01:11:48 | × | xff0x quits (~xff0x@ai071162.d.east.v6connect.net) (Ping timeout: 248 seconds) |
| 01:12:02 | × | zeenk quits (~zeenk@2a02:2f04:a208:3600::7fe) (Quit: Konversation terminated!) |
| 01:13:38 | × | mud quits (~mud@user/kadoban) (Quit: quit) |
| 01:14:42 | → | sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
| 01:15:27 | → | kaol joins (~kaol@94-237-42-30.nl-ams1.upcloud.host) |
| 01:15:34 | <maerwald[m]> | Available binaries are here https://github.com/haskell/ghcup-metadata/blob/develop/hls-metadata-0.0.1.json |
| 01:16:01 | <maerwald[m]> | But only vscode haskell extension makes use of it |
| 01:16:29 | → | mud joins (~mud@user/kadoban) |
| 01:16:34 | × | freeside quits (~mengwong@103.252.202.193) (Ping timeout: 260 seconds) |
| 01:17:26 | → | freeside joins (~mengwong@103.252.202.193) |
| 01:21:35 | → | accord joins (uid568320@id-568320.hampstead.irccloud.com) |
| 01:24:56 | → | marc___ joins (~marc@5.83.191.235) |
| 01:26:14 | × | freeside quits (~mengwong@103.252.202.193) (Ping timeout: 268 seconds) |
| 01:26:29 | × | Tuplanolla quits (~Tuplanoll@91-159-68-152.elisa-laajakaista.fi) (Quit: Leaving.) |
| 01:28:06 | × | sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.) |
| 01:28:14 | × | marc__ quits (~marc@46.167.25.184) (Ping timeout: 260 seconds) |
| 01:28:51 | → | razetime joins (~quassel@117.193.5.30) |
| 01:29:21 | × | azimut quits (~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection) |
| 01:29:21 | × | califax quits (~califax@user/califx) (Remote host closed the connection) |
| 01:29:21 | × | bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection) |
| 01:29:21 | × | FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection) |
| 01:29:21 | × | ChaiTRex quits (~ChaiTRex@user/chaitrex) (Remote host closed the connection) |
| 01:29:59 | → | ChaiTRex joins (~ChaiTRex@user/chaitrex) |
| 01:30:23 | → | sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
| 01:30:38 | → | bitdex joins (~bitdex@gateway/tor-sasl/bitdex) |
| 01:30:45 | → | FinnElija joins (~finn_elij@user/finn-elija/x-0085643) |
| 01:31:04 | → | califax joins (~califax@user/califx) |
| 01:31:25 | × | FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection) |
| 01:31:42 | → | FinnElija joins (~finn_elij@user/finn-elija/x-0085643) |
| 01:33:55 | → | azimut joins (~azimut@gateway/tor-sasl/azimut) |
| 01:36:59 | × | razetime quits (~quassel@117.193.5.30) (Ping timeout: 260 seconds) |
| 01:37:36 | → | razetime joins (~quassel@117.193.5.4) |
| 01:38:46 | × | sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.) |
| 01:38:54 | → | freeside joins (~mengwong@103.252.202.193) |
| 01:38:56 | × | merijn quits (~merijn@c-001-001-017.client.esciencecenter.eduvpn.nl) (Ping timeout: 256 seconds) |
| 01:39:36 | × | ChaiTRex quits (~ChaiTRex@user/chaitrex) (Remote host closed the connection) |
| 01:40:03 | → | sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
| 01:40:13 | → | ChaiTRex joins (~ChaiTRex@user/chaitrex) |
| 01:40:40 | × | ec quits (~ec@gateway/tor-sasl/ec) (Remote host closed the connection) |
| 01:41:29 | → | ec joins (~ec@gateway/tor-sasl/ec) |
| 01:42:20 | × | razetime quits (~quassel@117.193.5.4) (Ping timeout: 256 seconds) |
| 01:43:30 | × | freeside quits (~mengwong@103.252.202.193) (Ping timeout: 268 seconds) |
| 01:44:06 | → | srz_ joins (~srz@181.228.49.93) |
| 01:45:43 | → | razetime joins (~quassel@117.254.34.122) |
| 01:46:28 | × | machinedgod quits (~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 248 seconds) |
| 01:46:39 | × | srz quits (~srz@179.36.104.57) (Ping timeout: 260 seconds) |
| 01:49:40 | × | sawilagar quits (~sawilagar@user/sawilagar) (Ping timeout: 268 seconds) |
| 01:50:41 | → | razetime_ joins (~quassel@117.193.0.209) |
| 01:50:50 | × | razetime quits (~quassel@117.254.34.122) (Ping timeout: 256 seconds) |
| 01:51:19 | → | c209e6dc-4d76-47 joins (~aditya@2601:249:4300:1296:195:dac6:592c:a55a) |
| 01:52:18 | <c209e6dc-4d76-47> | what is this wierd syntax `[] <- locs` at https://github.com/iu-parfunc/gibbon/blob/3e4599346770fb97c4e02569246269e1885c7d30/gibbon-compiler/src/Gibbon/Passes/InferLocations.hs#L834 |
| 01:55:36 | → | freeside joins (~mengwong@103.252.202.193) |
| 01:57:45 | × | wroathe quits (~wroathe@user/wroathe) (Ping timeout: 260 seconds) |
| 01:57:49 | <Axman6> | it's a pattern guard, it constrains LetE (vr,locs,bty,rhs) bod to only match whern locs is [] |
| 01:58:12 | <Axman6> | it could have been written as LetE (vr,[],bty,rhs) bod |
| 01:58:48 | <Axman6> | usually you'd use a function there, like LetE (vr,locs,bty,rhs) bod | [] <- filter onlyValid locs -> ... |
| 01:59:03 | <jackdk> | That was going to be my next question |
| 02:00:37 | × | beteigeuze quits (~Thunderbi@a79-169-109-107.cpe.netcabo.pt) (Ping timeout: 252 seconds) |
| 02:00:39 | <Axman6> | https://www.haskell.org/onlinereport/haskell2010/haskellch3.html#x8-460003.13 explains them, but it's not a nice to read as I was hoping |
| 02:00:58 | → | xff0x joins (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) |
| 02:02:01 | → | andreinovitcho joins (~a@modemcable068.162-80-70.mc.videotron.ca) |
| 02:03:53 | <c209e6dc-4d76-47> | oh, never saw pattern guards, or boolean guards before, thanks! |
| 02:04:34 | × | bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection) |
| 02:05:52 | → | bitdex joins (~bitdex@gateway/tor-sasl/bitdex) |
| 02:10:10 | × | srz_ quits (~srz@181.228.49.93) (Quit: Leaving) |
| 02:10:27 | × | waleee quits (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 255 seconds) |
| 02:11:39 | × | c209e6dc-4d76-47 quits (~aditya@2601:249:4300:1296:195:dac6:592c:a55a) (Quit: Konversation terminated!) |
| 02:14:30 | × | lyxia quits (~lyxia@poisson.chat) (Ping timeout: 240 seconds) |
| 02:14:41 | × | chexum quits (~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection) |
| 02:14:46 | → | lyxia joins (~lyxia@poisson.chat) |
| 02:15:49 | × | andreinovitcho quits (~a@modemcable068.162-80-70.mc.videotron.ca) (Quit: Leaving) |
| 02:15:56 | × | bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 255 seconds) |
| 02:15:56 | × | FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 255 seconds) |
| 02:16:48 | × | Inoperable quits (~PLAYER_1@fancydata.science) (Ping timeout: 268 seconds) |
| 02:16:51 | → | chexum joins (~quassel@gateway/tor-sasl/chexum) |
| 02:17:13 | → | In0perable joins (~PLAYER_1@fancydata.science) |
| 02:18:14 | → | FinnElija joins (~finn_elij@user/finn-elija/x-0085643) |
| 02:18:34 | → | bitdex joins (~bitdex@gateway/tor-sasl/bitdex) |
| 02:31:25 | → | thyriaen joins (~thyriaen@2a01:aea0:dd4:470d:6245:cbff:fe9f:48b1) |
| 02:35:39 | → | merijn joins (~merijn@c-001-001-017.client.esciencecenter.eduvpn.nl) |
| 02:36:06 | × | sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.) |
| 02:37:13 | → | sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
| 02:44:39 | × | gentauro quits (~gentauro@user/gentauro) (Ping timeout: 255 seconds) |
| 02:52:50 | × | causal quits (~user@50.35.83.177) (Quit: WeeChat 3.7.1) |
| 02:55:04 | → | gentauro joins (~gentauro@user/gentauro) |
| 02:55:17 | → | wroathe joins (~wroathe@207-153-38-140.fttp.usinternet.com) |
| 02:55:17 | × | wroathe quits (~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host) |
| 02:55:17 | → | wroathe joins (~wroathe@user/wroathe) |
| 02:59:58 | × | freeside quits (~mengwong@103.252.202.193) (Ping timeout: 256 seconds) |
| 03:01:03 | → | freeside joins (~mengwong@103.252.202.193) |
| 03:01:49 | × | wroathe quits (~wroathe@user/wroathe) (Ping timeout: 268 seconds) |
| 03:05:46 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:5866:96fb:16f6:58d1) |
| 03:06:50 | → | wroathe joins (~wroathe@207-153-38-140.fttp.usinternet.com) |
| 03:06:50 | × | wroathe quits (~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host) |
| 03:06:50 | → | wroathe joins (~wroathe@user/wroathe) |
| 03:06:54 | × | lisbeths quits (uid135845@id-135845.lymington.irccloud.com) (Quit: Connection closed for inactivity) |
| 03:07:22 | × | freeside quits (~mengwong@103.252.202.193) (Ping timeout: 268 seconds) |
| 03:09:02 | × | merijn quits (~merijn@c-001-001-017.client.esciencecenter.eduvpn.nl) (Ping timeout: 256 seconds) |
| 03:09:20 | → | notzmv joins (~zmv@user/notzmv) |
| 03:09:25 | → | zebrag joins (~chris@user/zebrag) |
| 03:10:11 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:5866:96fb:16f6:58d1) (Ping timeout: 260 seconds) |
| 03:10:18 | × | TonyStone quits (~TonyStone@cpe-74-76-57-186.nycap.res.rr.com) (Quit: Leaving) |
| 03:14:20 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:5866:96fb:16f6:58d1) |
| 03:14:47 | → | marc__ joins (~marc@5.83.191.246) |
| 03:18:28 | × | marc___ quits (~marc@5.83.191.235) (Ping timeout: 268 seconds) |
| 03:21:17 | → | freeside joins (~mengwong@103.252.202.193) |
| 03:32:53 | × | azimut quits (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 255 seconds) |
| 03:34:00 | × | Erutuon quits (~Erutuon@user/erutuon) (Ping timeout: 260 seconds) |
| 03:41:03 | → | berberman joins (~berberman@user/berberman) |
| 03:41:25 | × | nek0 quits (~nek0@2a01:4f8:222:2b41::12) (Quit: The Lounge - https://thelounge.chat) |
| 03:42:08 | × | berberman_ quits (~berberman@user/berberman) (Ping timeout: 252 seconds) |
| 03:42:58 | → | bilegeek joins (~bilegeek@2600:1008:b049:5f3c:af56:db8d:9abf:ed4b) |
| 03:43:52 | × | FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection) |
| 03:44:30 | × | ridcully quits (~ridcully@p57b52925.dip0.t-ipconnect.de) (Ping timeout: 240 seconds) |
| 03:44:31 | → | ridcully_ joins (~ridcully@p57b52404.dip0.t-ipconnect.de) |
| 03:46:23 | × | cafkafk quits (~cafkafk@fsf/member/cafkafk) (Ping timeout: 255 seconds) |
| 03:47:00 | × | terrorjack quits (~terrorjac@2a01:4f8:1c1e:509a::1) (Ping timeout: 256 seconds) |
| 03:47:23 | → | FinnElija joins (~finn_elij@user/finn-elija/x-0085643) |
| 03:49:59 | → | terrorjack joins (~terrorjac@2a01:4f8:1c1e:509a::1) |
| 03:53:44 | → | nek0 joins (~nek0@2a01:4f8:222:2b41::12) |
| 03:53:55 | × | bilegeek quits (~bilegeek@2600:1008:b049:5f3c:af56:db8d:9abf:ed4b) (Quit: Leaving) |
| 03:54:28 | → | nate4 joins (~nate@98.45.169.16) |
| 03:56:07 | × | k8yun quits (~k8yun@user/k8yun) (Ping timeout: 252 seconds) |
| 03:57:22 | → | talismanick joins (~talismani@76.133.152.122) |
| 03:59:28 | × | nate4 quits (~nate@98.45.169.16) (Ping timeout: 256 seconds) |
| 04:02:18 | × | td_ quits (~td@83.135.9.7) (Ping timeout: 256 seconds) |
| 04:03:59 | → | td_ joins (~td@83.135.9.38) |
| 04:04:01 | → | cafkafk joins (~cafkafk@fsf/member/cafkafk) |
| 04:06:28 | → | merijn joins (~merijn@c-001-001-017.client.esciencecenter.eduvpn.nl) |
| 04:13:02 | → | opticblast joins (~Thunderbi@secure-165.caltech.edu) |
| 04:17:24 | × | opticblast quits (~Thunderbi@secure-165.caltech.edu) (Ping timeout: 248 seconds) |
| 04:21:33 | → | opticblast joins (~Thunderbi@secure-165.caltech.edu) |
| 04:22:20 | → | bilegeek joins (~bilegeek@2600:1008:b049:5f3c:af56:db8d:9abf:ed4b) |
| 04:22:53 | × | zebrag quits (~chris@user/zebrag) (Quit: Konversation terminated!) |
| 04:28:04 | × | freeside quits (~mengwong@103.252.202.193) (Ping timeout: 248 seconds) |
| 04:28:11 | × | opticblast quits (~Thunderbi@secure-165.caltech.edu) (Ping timeout: 256 seconds) |
| 04:28:16 | × | thyriaen quits (~thyriaen@2a01:aea0:dd4:470d:6245:cbff:fe9f:48b1) (Remote host closed the connection) |
| 04:28:28 | → | freeside joins (~mengwong@103.252.202.193) |
| 04:33:09 | × | freeside quits (~mengwong@103.252.202.193) (Ping timeout: 260 seconds) |
| 04:39:48 | × | merijn quits (~merijn@c-001-001-017.client.esciencecenter.eduvpn.nl) (Ping timeout: 248 seconds) |
| 04:40:54 | × | monochrom quits (trebla@216.138.220.146) (Quit: NO CARRIER) |
| 04:43:52 | → | opticblast joins (~Thunderbi@secure-165.caltech.edu) |
| 04:46:07 | → | k8yun joins (~k8yun@user/k8yun) |
| 04:47:19 | → | freeside joins (~mengwong@103.252.202.193) |
| 04:48:19 | × | euandreh quits (~Thunderbi@179.214.113.107) (Ping timeout: 260 seconds) |
| 04:50:28 | × | k8yun quits (~k8yun@user/k8yun) (Ping timeout: 248 seconds) |
| 04:52:44 | × | Vajb quits (~Vajb@2001:999:504:3ad6:52a4:a3b5:32d8:e74d) (Read error: Connection reset by peer) |
| 04:53:49 | → | Vajb joins (~Vajb@hag-jnsbng11-58c3a5-27.dhcp.inet.fi) |
| 04:59:59 | × | ddellacosta quits (~ddellacos@89.45.224.71) (Ping timeout: 260 seconds) |
| 05:08:51 | → | Guest60 joins (~Guest60@149.159.207.218) |
| 05:10:11 | <Guest60> | Hello, what is the best way to cancel async tasks? I would like to have a coordinator launch bunch of helper tasks, but I want the worker tasks to be cancelled when the coordinator is cancelled. |
| 05:11:42 | → | yella joins (~yell@2607:fb90:80c4:d3a9:a406:e932:6bb2:44ac) |
| 05:13:11 | × | yella quits (~yell@2607:fb90:80c4:d3a9:a406:e932:6bb2:44ac) (Remote host closed the connection) |
| 05:14:42 | <davean> | Are you using something like the 'async' package? |
| 05:15:42 | <Guest60> | I would like to use something like the 'async' package, but it doesn't have anything that does what I want (at least not as directly as I described it). |
| 05:17:12 | <davean> | Sure it does, withAsync |
| 05:17:59 | <davean> | also cancel |
| 05:18:17 | × | wroathe quits (~wroathe@user/wroathe) (Quit: leaving) |
| 05:19:47 | × | Vajb quits (~Vajb@hag-jnsbng11-58c3a5-27.dhcp.inet.fi) (Read error: Connection reset by peer) |
| 05:19:54 | <Guest60> | hmm, can you please tell me how to use it exactly to do what I want. If I understand correctly, withAsync does it for an IO action and a function. |
| 05:20:05 | → | Vajb joins (~Vajb@2001:999:504:3ad6:52a4:a3b5:32d8:e74d) |
| 05:20:20 | <Guest60> | I want to have a whole bunch of tasks to run concurrently and be cancelled automatically when the coordinator is cancelled |
| 05:22:17 | <Guest60> | Also, I don't want to use cancel. If I use cancel, I should keep track of which asyncs were spawned off, and cancel them individually. What I want is something like withAsync but it should take multiple arguments, and all of them should be cancelled when the parent thread (the thread that initiated all those asyncs) is cancelled. |
| 05:25:17 | <davean> | ou might prefer working with 'async-pool', if it makes more sense to you |
| 05:27:34 | → | yl53[m] joins (~yl53matri@2001:470:69fc:105::85b) |
| 05:30:22 | × | sclv quits (sid39734@haskell/developer/sclv) (Read error: Software caused connection abort) |
| 05:30:31 | → | sclv joins (sid39734@haskell/developer/sclv) |
| 05:32:55 | <Guest60> | hmm, just took a look at it. Doesn't seem to do what I want. I guess for now I'll just launch the tasks by chaining calls to withAsync. |
| 05:33:21 | <dsal> | It has a lot of ways to do what you want. |
| 05:34:07 | <Guest60> | Can you please describe at least one way to me? I am new to all this and pretty much clueless. |
| 05:34:09 | <c_wraith> | Guest60: mapRace in async-pool does exactly what you want |
| 05:34:10 | × | Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 260 seconds) |
| 05:34:28 | <Guest60> | Thanks. I'll take a look at it. |
| 05:35:44 | → | Lord_of_Life joins (~Lord@user/lord-of-life/x-2819915) |
| 05:36:02 | <Guest60> | mapRace doesn't do what I want. mapRace gets the first result and cancels the rest of the tasks. I don't want that behavior. |
| 05:36:38 | → | merijn joins (~merijn@c-001-001-017.client.esciencecenter.eduvpn.nl) |
| 05:36:51 | <Guest60> | The spawned async tasks are all independent running entities. They should only be cancelled when the parent thread (the one who launched all these asyncs) is cancelled. |
| 05:36:52 | <dsal> | So, if you just run a bunch of tasks concurrently, you'll get a bunch of Asyncs. You can cancel all those Asyncs when your supervisor is finished. |
| 05:37:55 | <Guest60> | yup, I know that I can do it by calling cancel on each of the asyncs, but I was hoping to find withAsync style of cancelling those tasks automatically. |
| 05:38:05 | <dsal> | Another easy path is using link which is easy linkage if the supervisor should also fail if one of the workers fails. |
| 05:38:28 | <dsal> | There's no "automatically." Things happen that are programmed to happen. |
| 05:38:45 | × | hgolden quits (~hgolden@cpe-172-251-233-141.socal.res.rr.com) (Remote host closed the connection) |
| 05:39:04 | <dsal> | It'd be easy to build an abstraction like `withAsyncs` that will spawn and cancel. |
| 05:39:57 | <Guest60> | yup, I actually want something like `withAsyncs` but I don't think it's in the library. I guess I can code it up myself by chaining multiple `withAsync`s |
| 05:42:09 | × | merijn quits (~merijn@c-001-001-017.client.esciencecenter.eduvpn.nl) (Ping timeout: 268 seconds) |
| 05:43:34 | <Guest60> | would something like this work? `foldr withAsync [t1, t2, t3, ..., supervisor]`. |
| 05:44:09 | → | hgolden joins (~hgolden@cpe-172-251-233-141.socal.res.rr.com) |
| 05:44:33 | <dsal> | That doesn't make much sense to me. You could certainly use fold for that, but I'd probably not do it that way. Let me look at the docs real quick… |
| 05:47:04 | <dsal> | I'd probably just do something like `traverse . async` and then bracket a `traverse cancel as` around the supervisor action. |
| 05:47:18 | <Guest60> | oh, my bad, I meant to write `foldr withAsync [t1, t2, t3, ..., tn] supervisor` |
| 05:48:05 | → | titibandit joins (~titibandi@xdsl-78-34-153-165.nc.de) |
| 05:48:36 | <Guest60> | dsal, ah that is good. Thanks. |
| 05:48:58 | <dsal> | You could implement it that way, but I'd want an abstraction that I could feed work and a supervisor action into. |
| 05:49:45 | → | chromoblob joins (~user@37.113.164.122) |
| 05:50:35 | <dsal> | Partially because it's not clear to me what the types are supposed to be. |
| 05:50:48 | <davean> | Guest60: "withAsync is like async, except that the Async is automatically killed (or unscheduled, using cancel) if the enclosing IO operation returns before it has completed." |
| 05:52:19 | <davean> | Guest60: "Leaving the block cancels every task still executing in the group." |
| 05:52:31 | <davean> | Guest60: I'm confused why you think this doesn't do the thing you're asking |
| 05:52:50 | × | ChaiTRex quits (~ChaiTRex@user/chaitrex) (Ping timeout: 255 seconds) |
| 05:53:07 | × | mxs quits (~mxs@user/mxs) (Read error: Software caused connection abort) |
| 05:53:15 | → | mxs joins (~mxs@user/mxs) |
| 05:54:10 | <davean> | Guest60: it seems to me to litterly quote the guarrentee you are looking for |
| 05:54:35 | × | chromoblob quits (~user@37.113.164.122) (Ping timeout: 260 seconds) |
| 05:55:11 | → | ChaiTRex joins (~ChaiTRex@user/chaitrex) |
| 05:55:41 | <dsal> | I think it's the "lots of workers" thing. |
| 05:55:58 | <davean> | dsal: Yes? That specificly handles lots of workers |
| 05:56:18 | <davean> | Thats the ONLY thing that function does, let you launch an arbitrary number of workers and have them canceled when you leave |
| 05:56:25 | <Guest60> | davean, I am taking a look at async-pool agian. That quote does seem to guarantee what I want. |
| 05:57:17 | <davean> | Note "withTaskGroup n f = createPool >>= \p -> withTaskGroupIn p n f" so withTaskGroup also has that property, though the documentation fails to say it exactly. |
| 05:57:48 | <dsal> | davean: well, "one" isn't really arbitrary. I guess you could start a bunch of workers and link them from within the spawned async. |
| 05:58:47 | <davean> | dsal: uh, where did "one" come from? None of the text suggests singular. |
| 05:59:01 | <davean> | dsal: it specificly takes a parameter of how many to allow to run at once. |
| 05:59:31 | <dsal> | `withAsync :: IO a -> (Async a -> IO b) -> IO b` -- ? |
| 06:00:24 | <davean> | That particular function does one at a time, it allows building arbitrary, but it also isn't what we're talking about. |
| 06:00:39 | <davean> | Did you see the code I litterly pasted above? |
| 06:00:52 | <davean> | Or the citations above that |
| 06:01:10 | <dsal> | Yeah, you pasted "withAsync is like async, except that the Async is automatically killed (or unscheduled, using cancel) if the enclosing IO operation returns before it has completed." |
| 06:01:17 | <Guest60> | Oh, I think I there's a communication gap here. davean wrote `withAsync` , but quoted `withTaskGroupIn` |
| 06:01:20 | <dsal> | If "the Async" doesn't imply "one" then I'm confused. |
| 06:01:58 | <davean> | Guest60: I've talked about both, you can build it with withAsync |
| 06:02:28 | <davean> | its not super efficient to, but it is a sufficient combinator |
| 06:02:50 | <davean> | withTaskGroup, which I mentioned specificly, is a more efficient way |
| 06:03:01 | <davean> | (Since it doesn't need as many enclosures) |
| 06:03:32 | → | Erutuon joins (~Erutuon@23-88-131-243.fttp.usinternet.com) |
| 06:04:17 | × | hgolden quits (~hgolden@cpe-172-251-233-141.socal.res.rr.com) (Remote host closed the connection) |
| 06:05:00 | <Guest60> | Okay. "Create a task group within the given pool having a specified number of execution slots, but with a bounded lifetime. Leaving the block cancels every task still executing in the group." |
| 06:05:08 | <Guest60> | What does "block" mean here? |
| 06:05:41 | <davean> | lexical scope |
| 06:05:57 | <davean> | well |
| 06:05:59 | <davean> | not actually |
| 06:06:04 | <dsal> | I assume it's the `TaskGroup -> IO b` action. |
| 06:06:05 | <davean> | but thats where the term is pointing you at |
| 06:06:13 | × | jao quits (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 256 seconds) |
| 06:06:24 | <davean> | but yah, when (TaskGroup -> IO b) returns, you've left "the block" |
| 06:06:36 | <mauke> | so I've looked at the async docs. isn't this just forConcurrently? |
| 06:06:49 | <davean> | withTaskGroupIn :: Pool -> Int -> (TaskGroup -> IO b) -> IO b |
| 06:06:51 | <davean> | withTaskGroupIn p n f = createTaskGroup p n >>= \g -> |
| 06:06:53 | <davean> | Async.withAsync (runTaskGroup g) $ const $ f g `finally` cancelAll g |
| 06:07:10 | <davean> | see the `finally`? |
| 06:07:44 | <Guest60> | yup. Thanks. |
| 06:08:00 | → | hgolden joins (~hgolden@cpe-172-251-233-141.socal.res.rr.com) |
| 06:08:42 | <dsal> | mauke: I think it's more like if you have `actions :: [IO ()]` and you do something like `bracket_ (traverse async) (traverse cancel) $ superviseStuff` |
| 06:10:03 | <dsal> | Er, I left the actions out of that traverse async. But basically the idea is that you want to automatically cancel all the launched things when your supervisor is done. |
| 06:10:06 | × | accord quits (uid568320@id-568320.hampstead.irccloud.com) (Quit: Connection closed for inactivity) |
| 06:13:48 | × | haveo_ quits (~haveo@sl35.iuwt.fr) (Read error: Software caused connection abort) |
| 06:13:51 | × | MironZ quits (~MironZ@nat-infra.ehlab.uk) (Read error: Software caused connection abort) |
| 06:13:56 | → | haveo joins (~haveo@sl35.iuwt.fr) |
| 06:14:10 | → | MironZ joins (~MironZ@nat-infra.ehlab.uk) |
| 06:16:14 | × | FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 255 seconds) |
| 06:17:48 | → | FinnElija joins (~finn_elij@user/finn-elija/x-0085643) |
| 06:17:57 | → | king_gs joins (~Thunderbi@2806:103e:29:bfeb:c988:bbd5:2586:4924) |
| 06:20:33 | <Guest60> | Thanks, people. I'll try to work with this async-pool stuff. |
| 06:21:33 | × | T_S_ quits (sid501726@id-501726.uxbridge.irccloud.com) (Read error: Software caused connection abort) |
| 06:21:46 | → | T_S_ joins (sid501726@id-501726.uxbridge.irccloud.com) |
| 06:22:36 | × | wafflepirate quits (sid467876@2a03:5180:f:3::7:23a4) (Read error: Software caused connection abort) |
| 06:22:45 | → | wafflepirate joins (sid467876@id-467876.ilkley.irccloud.com) |
| 06:23:42 | → | bilegeek_ joins (~bilegeek@16.sub-174-209-37.myvzw.com) |
| 06:26:06 | <dsal> | Finally got a ghci to come up. |
| 06:26:40 | × | bilegeek quits (~bilegeek@2600:1008:b049:5f3c:af56:db8d:9abf:ed4b) (Ping timeout: 260 seconds) |
| 06:27:00 | <dsal> | I'd just do: `:t \ws s -> bracket (traverse async ws) (traverse cancel) $ \_ -> s :: Traversable t => t (IO a) -> IO c -> IO c` based on my understanding. |
| 06:27:53 | <dsal> | But it's not clear what it means for a worker to exit/abort. |
| 06:30:45 | → | coot joins (~coot@213.134.171.3) |
| 06:34:17 | ← | jakalx parts (~jakalx@base.jakalx.net) (Error from remote client) |
| 06:37:59 | → | merijn joins (~merijn@c-001-001-017.client.esciencecenter.eduvpn.nl) |
| 06:42:28 | × | ft quits (~ft@p508dbd59.dip0.t-ipconnect.de) (Quit: leaving) |
| 06:42:44 | → | chomwitt joins (~chomwitt@2a02:587:7a0d:dd00:1ac0:4dff:fedb:a3f1) |
| 06:43:05 | → | monochrom joins (trebla@216.138.220.146) |
| 06:43:58 | × | jean-paul[m] quits (~jean-paul@2001:470:69fc:105::d1ab) (Read error: Software caused connection abort) |
| 06:44:11 | → | jean-paul[m] joins (~jean-paul@2001:470:69fc:105::d1ab) |
| 06:47:06 | → | yella joins (~yell@2607:fb90:80c9:e326:6468:b483:c07e:90c8) |
| 06:48:42 | × | king_gs quits (~Thunderbi@2806:103e:29:bfeb:c988:bbd5:2586:4924) (Remote host closed the connection) |
| 06:49:02 | → | king_gs joins (~Thunderbi@2806:103e:29:bfeb:c988:bbd5:2586:4924) |
| 06:52:50 | → | Kaiepi joins (~Kaiepi@108.175.84.104) |
| 06:54:22 | → | jakalx joins (~jakalx@base.jakalx.net) |
| 06:55:11 | → | michalz joins (~michalz@185.246.207.197) |
| 06:56:12 | → | mei__ joins (~mei@user/mei) |
| 06:56:16 | × | merijn quits (~merijn@c-001-001-017.client.esciencecenter.eduvpn.nl) (Ping timeout: 256 seconds) |
| 07:01:59 | × | emmanuelux quits (~emmanuelu@user/emmanuelux) (Quit: au revoir) |
| 07:03:19 | → | kenran joins (~user@user/kenran) |
| 07:03:22 | × | kenran quits (~user@user/kenran) (Remote host closed the connection) |
| 07:08:31 | × | jmorris quits (uid537181@id-537181.uxbridge.irccloud.com) (Quit: Connection closed for inactivity) |
| 07:08:35 | <talismanick> | What might cause HLS to segfault? Anything that I can fix myself? |
| 07:11:00 | × | opticblast quits (~Thunderbi@secure-165.caltech.edu) (Ping timeout: 256 seconds) |
| 07:17:50 | → | lisbeths joins (uid135845@id-135845.lymington.irccloud.com) |
| 07:18:29 | → | opticblast joins (~Thunderbi@secure-165.caltech.edu) |
| 07:20:50 | × | nckx quits (~nckx@tobias.gr) (Ping timeout: 268 seconds) |
| 07:24:59 | × | shriekingnoise quits (~shrieking@186.137.167.202) (Quit: Quit) |
| 07:26:45 | × | dolio quits (~dolio@130.44.134.54) (Ping timeout: 260 seconds) |
| 07:27:21 | × | califax quits (~califax@user/califx) (Quit: ZNC 1.8.2 - https://znc.in) |
| 07:28:23 | × | Guest60 quits (~Guest60@149.159.207.218) (Ping timeout: 260 seconds) |
| 07:28:44 | × | troydm quits (~troydm@host-176-37-124-197.b025.la.net.ua) (Ping timeout: 260 seconds) |
| 07:29:12 | → | califax joins (~califax@user/califx) |
| 07:29:33 | → | k8yun joins (~k8yun@user/k8yun) |
| 07:29:56 | × | king_gs quits (~Thunderbi@2806:103e:29:bfeb:c988:bbd5:2586:4924) (Ping timeout: 255 seconds) |
| 07:29:58 | × | califax quits (~califax@user/califx) (Remote host closed the connection) |
| 07:31:14 | × | use-value quits (~Thunderbi@2a00:23c6:8a03:2f01:38e4:6025:87e4:a8aa) (Remote host closed the connection) |
| 07:31:18 | × | ystael quits (~ystael@user/ystael) (Ping timeout: 268 seconds) |
| 07:31:34 | → | use-value joins (~Thunderbi@2a00:23c6:8a03:2f01:38e4:6025:87e4:a8aa) |
| 07:32:01 | → | califax joins (~califax@user/califx) |
| 07:35:03 | × | k8yun quits (~k8yun@user/k8yun) (Quit: Leaving) |
| 07:36:41 | → | akegalj joins (~akegalj@89-172-58-90.adsl.net.t-com.hr) |
| 07:37:58 | → | ystael joins (~ystael@user/ystael) |
| 07:38:40 | → | nckx joins (~nckx@tobias.gr) |
| 07:39:12 | → | dolio joins (~dolio@130.44.134.54) |
| 07:42:43 | × | jonathanx quits (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Ping timeout: 252 seconds) |
| 07:46:30 | × | mrvdb- quits (~mrvdb@2001:19f0:5000:8582:5400:ff:fe07:3df5) (Read error: Software caused connection abort) |
| 07:46:47 | → | mrvdb joins (~mrvdb@2001:19f0:5000:8582:5400:ff:fe07:3df5) |
| 07:50:48 | → | ccapndave joins (~ccapndave@xcpe-62-167-164-99.cgn.res.adslplus.ch) |
| 07:53:13 | → | merijn joins (~merijn@c-001-001-017.client.esciencecenter.eduvpn.nl) |
| 07:55:57 | → | nate4 joins (~nate@98.45.169.16) |
| 07:57:12 | → | jonathanx joins (~jonathan@h-98-128-168-222.NA.cust.bahnhof.se) |
| 08:00:41 | × | nate4 quits (~nate@98.45.169.16) (Ping timeout: 256 seconds) |
| 08:02:01 | × | Putonlalla quits (~Putonlall@it-cyan.it.jyu.fi) (Read error: Software caused connection abort) |
| 08:02:31 | × | peddie quits (~peddie@2001:470:69fc:105::25d) (Read error: Software caused connection abort) |
| 08:02:50 | → | peddie joins (~peddie@2001:470:69fc:105::25d) |
| 08:02:51 | → | Putonlalla joins (~Putonlall@it-cyan.it.jyu.fi) |
| 08:03:27 | → | lortabac joins (~lortabac@2a01:e0a:541:b8f0:77f5:99bc:10c3:3c4c) |
| 08:06:17 | → | madjestic joins (~madjestic@77-63-78-129.mobile.kpn.net) |
| 08:06:55 | → | mmhat joins (~mmh@p200300f1c72dc6ddee086bfffe095315.dip0.t-ipconnect.de) |
| 08:07:02 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 08:07:13 | × | sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.) |
| 08:07:14 | × | coot quits (~coot@213.134.171.3) (Quit: coot) |
| 08:07:21 | → | sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
| 08:10:42 | × | FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection) |
| 08:10:42 | × | califax quits (~califax@user/califx) (Remote host closed the connection) |
| 08:10:42 | × | cafkafk quits (~cafkafk@fsf/member/cafkafk) (Remote host closed the connection) |
| 08:10:42 | × | chexum quits (~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection) |
| 08:10:42 | × | ChaiTRex quits (~ChaiTRex@user/chaitrex) (Remote host closed the connection) |
| 08:11:31 | → | cafkafk joins (~cafkafk@fsf/member/cafkafk) |
| 08:11:32 | → | FinnElija joins (~finn_elij@user/finn-elija/x-0085643) |
| 08:12:43 | × | bilegeek_ quits (~bilegeek@16.sub-174-209-37.myvzw.com) (Quit: Leaving) |
| 08:13:36 | → | ChaiTRex joins (~ChaiTRex@user/chaitrex) |
| 08:14:03 | → | chexum joins (~quassel@gateway/tor-sasl/chexum) |
| 08:14:10 | → | califax joins (~califax@user/califx) |
| 08:15:50 | → | nschoe joins (~q@2a01:e0a:8e:a190:13d9:919d:218e:b9d2) |
| 08:19:50 | × | razetime_ quits (~quassel@117.193.0.209) (Ping timeout: 260 seconds) |
| 08:19:51 | → | razetime joins (~quassel@117.193.4.165) |
| 08:20:23 | × | stiell quits (~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection) |
| 08:20:49 | × | madjestic quits (~madjestic@77-63-78-129.mobile.kpn.net) (Read error: Connection reset by peer) |
| 08:21:03 | → | stiell joins (~stiell@gateway/tor-sasl/stiell) |
| 08:21:03 | × | Axman6 quits (~Axman6@user/axman6) (Ping timeout: 268 seconds) |
| 08:21:08 | × | edm quits (sid147314@id-147314.hampstead.irccloud.com) (Read error: Software caused connection abort) |
| 08:21:21 | → | edm joins (sid147314@id-147314.hampstead.irccloud.com) |
| 08:21:59 | × | aweinstock quits (~aweinstoc@cpe-74-76-189-75.nycap.res.rr.com) (Read error: Software caused connection abort) |
| 08:22:50 | × | Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
| 08:25:16 | × | cjay quits (cjay@nerdbox.nerd2nerd.org) (Read error: Software caused connection abort) |
| 08:25:27 | → | cjay joins (cjay@nerdbox.nerd2nerd.org) |
| 08:25:41 | → | coot joins (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) |
| 08:27:00 | × | opticblast quits (~Thunderbi@secure-165.caltech.edu) (Ping timeout: 248 seconds) |
| 08:28:09 | → | aweinstock joins (~aweinstoc@cpe-74-76-189-75.nycap.res.rr.com) |
| 08:28:38 | × | razetime quits (~quassel@117.193.4.165) (Ping timeout: 256 seconds) |
| 08:30:31 | → | razetime joins (~quassel@117.254.34.53) |
| 08:33:12 | × | chexum quits (~quassel@gateway/tor-sasl/chexum) (Quit: No Ping reply in 180 seconds.) |
| 08:33:24 | → | acidjnk joins (~acidjnk@p200300d6e7137a84847a35f477003ced.dip0.t-ipconnect.de) |
| 08:35:35 | × | mei__ quits (~mei@user/mei) (Ping timeout: 260 seconds) |
| 08:35:43 | → | chexum joins (~quassel@gateway/tor-sasl/chexum) |
| 08:39:47 | × | acidjnk quits (~acidjnk@p200300d6e7137a84847a35f477003ced.dip0.t-ipconnect.de) (Ping timeout: 256 seconds) |
| 08:39:51 | × | dmj` quits (sid72307@id-72307.hampstead.irccloud.com) (Read error: Software caused connection abort) |
| 08:40:18 | → | dmj` joins (sid72307@id-72307.hampstead.irccloud.com) |
| 08:40:20 | → | opticblast joins (~Thunderbi@secure-165.caltech.edu) |
| 08:41:46 | → | fserucas joins (~fserucas@2001:818:e376:a400:fb92:70c1:dd88:c7d7) |
| 08:41:49 | × | m1dnight quits (~christoph@78-22-0-121.access.telenet.be) (Quit: WeeChat 3.7.1) |
| 08:42:17 | → | m1dnight joins (~christoph@78-22-0-121.access.telenet.be) |
| 08:44:20 | × | jonathanx quits (~jonathan@h-98-128-168-222.NA.cust.bahnhof.se) (Ping timeout: 260 seconds) |
| 08:45:00 | × | ccapndave quits (~ccapndave@xcpe-62-167-164-99.cgn.res.adslplus.ch) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 08:45:57 | → | zeenk joins (~zeenk@2a02:2f04:a208:3600::7fe) |
| 08:48:35 | → | karolis joins (~karolis@78.157.77.235) |
| 08:50:46 | → | machinedgod joins (~machinedg@d198-53-218-113.abhsia.telus.net) |
| 08:51:29 | × | chexum quits (~quassel@gateway/tor-sasl/chexum) (Ping timeout: 255 seconds) |
| 08:51:41 | → | MajorBiscuit joins (~MajorBisc@2a02-a461-129d-1-193d-75d8-745d-e91e.fixed6.kpn.net) |
| 08:52:07 | → | chexum joins (~quassel@gateway/tor-sasl/chexum) |
| 08:54:55 | × | juri_ quits (~juri@84.19.175.179) (Read error: Software caused connection abort) |
| 08:55:08 | → | juri_ joins (~juri@84-19-175-179.pool.ovpn.com) |
| 08:55:16 | × | MajorBiscuit quits (~MajorBisc@2a02-a461-129d-1-193d-75d8-745d-e91e.fixed6.kpn.net) (Client Quit) |
| 09:00:52 | → | MajorBiscuit joins (~MajorBisc@86-88-79-148.fixed.kpn.net) |
| 09:02:27 | → | ubert1 joins (~Thunderbi@178.165.183.156.wireless.dyn.drei.com) |
| 09:02:58 | × | Matthew|m quits (~arathorn@2001:470:69fc:105::1f) (Read error: Software caused connection abort) |
| 09:03:19 | → | Matthew|m joins (~arathorn@2001:470:69fc:105::1f) |
| 09:04:35 | → | euandreh joins (~Thunderbi@179.214.113.107) |
| 09:08:35 | × | sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Ping timeout: 260 seconds) |
| 09:08:43 | → | sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
| 09:08:51 | × | euandreh quits (~Thunderbi@179.214.113.107) (Remote host closed the connection) |
| 09:11:04 | → | euandreh joins (~Thunderbi@179.214.113.107) |
| 09:14:02 | → | ThePlayer joins (~ThePlayer@94-21-96-104.pool.digikabel.hu) |
| 09:16:00 | → | cfricke joins (~cfricke@user/cfricke) |
| 09:18:16 | → | jonathanx joins (~jonathan@h-98-128-168-222.NA.cust.bahnhof.se) |
| 09:19:26 | × | teehemkay quits (sid14792@id-14792.lymington.irccloud.com) (Read error: Software caused connection abort) |
| 09:19:33 | → | teehemkay joins (sid14792@id-14792.lymington.irccloud.com) |
| 09:19:37 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:5866:96fb:16f6:58d1) (Remote host closed the connection) |
| 09:19:50 | × | karolis quits (~karolis@78.157.77.235) (Ping timeout: 268 seconds) |
| 09:21:32 | × | gaze___ quits (sid387101@id-387101.helmsley.irccloud.com) (Read error: Software caused connection abort) |
| 09:21:42 | → | gaze___ joins (sid387101@id-387101.helmsley.irccloud.com) |
| 09:22:55 | × | jonathanx quits (~jonathan@h-98-128-168-222.NA.cust.bahnhof.se) (Ping timeout: 268 seconds) |
| 09:23:39 | × | SanchayanMaity quits (sid478177@id-478177.hampstead.irccloud.com) (Read error: Software caused connection abort) |
| 09:23:48 | → | SanchayanMaity joins (sid478177@id-478177.hampstead.irccloud.com) |
| 09:24:14 | × | razetime quits (~quassel@117.254.34.53) (Ping timeout: 255 seconds) |
| 09:24:40 | → | razetime joins (~quassel@117.254.35.120) |
| 09:25:29 | → | atocanist joins (~atocanist@2a01:e34:ec22:3040:260e:115e:44a8:9bee) |
| 09:27:23 | × | lisbeths quits (uid135845@id-135845.lymington.irccloud.com) (Quit: Connection closed for inactivity) |
| 09:29:55 | → | Robert11 joins (~Robert@ext-1-087.eduroam.chalmers.se) |
| 09:30:28 | <Robert11> | Hi! `fixm f` where `f` is an IO computations makes little sense, right, since IO is strict? |
| 09:30:47 | × | merijn quits (~merijn@c-001-001-017.client.esciencecenter.eduvpn.nl) (Ping timeout: 256 seconds) |
| 09:31:04 | → | madjestic joins (~madjestic@213.208.229.226) |
| 09:31:39 | × | econo quits (uid147250@user/econo) (Quit: Connection closed for inactivity) |
| 09:31:53 | <opqdonut> | Robert11: you mean mfix? yeah. even the docs say it should'nt be strinct |
| 09:32:32 | <opqdonut> | there is an MonadFix IO instance though... I wonder if it can be used with lazy IO or something |
| 09:32:53 | <dminuoso> | opqdonut: it indoces lazy io via fixIO yes |
| 09:32:57 | <dminuoso> | induces, even |
| 09:33:00 | <dminuoso> | https://hackage.haskell.org/package/base-4.17.0.0/docs/src/System.IO.html#fixIO |
| 09:33:07 | <c_wraith> | the source is frightening |
| 09:33:22 | <c_wraith> | It only works because IO can create reference types |
| 09:33:46 | × | titibandit quits (~titibandi@xdsl-78-34-153-165.nc.de) (Remote host closed the connection) |
| 09:34:00 | <dminuoso> | If you fall in love with fixIO too deeply, you end up building nix. |
| 09:34:07 | <c_wraith> | Same reason ST has a MonadFix instance |
| 09:34:28 | → | jonathanx joins (~jonathan@h-98-128-168-222.NA.cust.bahnhof.se) |
| 09:35:09 | <Robert11> | Kind off thinking about something |
| 09:35:42 | <Robert11> | `f :: IO [ThreadID]`, preferably I'd like to access these id's inside `f` |
| 09:36:00 | → | bjourne joins (~bjourne@2001:6b0:1:1140:42bf:ff4:f8fa:50e5) |
| 09:37:00 | <dminuoso> | Keep in mind that holding a reference to a ThreadId will prevent the GC from reclaiming the thread itself. |
| 09:37:19 | <dminuoso> | So even if the thread is done, it cant be freed. |
| 09:37:29 | <Robert11> | This is OK, I don't have many, and they are cleaned up OK |
| 09:37:58 | <Robert11> | I believe... I will have to investigate this if I end up going this route |
| 09:38:25 | <Robert11> | I want some sibling threads to be able to communicate to each other |
| 09:39:14 | <dminuoso> | The ThreadId is not going to help you much, unless you intend to use async exceptions to that effect. |
| 09:39:23 | <dminuoso> | It is probably better to just use STM to that end. |
| 09:41:44 | × | talismanick quits (~talismani@76.133.152.122) (Ping timeout: 256 seconds) |
| 09:42:11 | <Robert11> | Well yes, the siblings need to be able to kill each other |
| 09:42:17 | <Robert11> | "I did the thing, please stop trying to do the thing" |
| 09:42:43 | <c_wraith> | in that case, are you more looking for something like race from async? |
| 09:43:07 | × | razetime quits (~quassel@117.254.35.120) (Ping timeout: 260 seconds) |
| 09:43:25 | → | razetime joins (~quassel@117.254.35.71) |
| 09:44:39 | <bjourne> | suppose i have a binary tree. in another data structure i want to store names of nodes in the tree. how can this be done without reference equality? |
| 09:44:57 | <dminuoso> | bjourne: What do you mean by "reference" equality? |
| 09:45:00 | × | son0p quits (~ff@2604:3d08:5b7f:5540::6bfc) (Ping timeout: 260 seconds) |
| 09:45:10 | <Robert11> | is async a separate package? I don't want to pull in too many dependencies |
| 09:45:11 | × | jespada_ quits (~jespada@nmal-24-b2-v4wan-166357-cust1764.vm24.cable.virginm.net) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 09:45:17 | <Robert11> | I'd like to stick to control.concurrent if possible |
| 09:45:50 | <bjourne> | "Reference equality is an equality relationship that does not only guarantee that two values are equal, but also that they are, in fact, the same value." |
| 09:46:12 | <dminuoso> | bjourne: Yes, that is a mode of operation for an Eq implementation. |
| 09:46:42 | <dminuoso> | Im really not sure what it is you are asking for. |
| 09:47:04 | <c_wraith> | You're not meant to think of references in Haskell. Just values. |
| 09:47:37 | <dminuoso> | I have a vague idea of what you might be asking. Is your question how to keep a copy of a string, rather than a reference? |
| 09:48:07 | × | madjestic quits (~madjestic@213.208.229.226) (Ping timeout: 252 seconds) |
| 09:48:14 | → | jespada joins (~jespada@nmal-24-b2-v4wan-166357-cust1764.vm24.cable.virginm.net) |
| 09:48:39 | <mauke> | Robert11: you can, but ... writing code with manual resource management that is safe in the presence of asynchronous exceptions is fiddly and annoying |
| 09:48:54 | <mauke> | async gives you safer building blocks |
| 09:49:05 | → | madjestic joins (~madjestic@213.208.229.226) |
| 09:49:12 | <Robert11> | This is the cross I carry |
| 09:49:12 | <bjourne> | c_wraith: it doesnt work for graphs |
| 09:49:21 | <Robert11> | It is my burden, as the package developer |
| 09:50:21 | <mauke> | yeah, but async was written by Simon Marlow, one of the core developers of ghc |
| 09:50:31 | <mauke> | so I kind of trust it more than anything I could come up with myself |
| 09:50:46 | <c_wraith> | bjourne: you'll note that any sort of real-world graph package in haskell does not represent graphs with pointers. They use explicit indices into some backing structure. (Usually an array) |
| 09:50:48 | × | razetime quits (~quassel@117.254.35.71) (Ping timeout: 256 seconds) |
| 09:52:24 | <Robert11> | I did not critique async in any way, I just meant that I'd rather spend some time getting it to work than pull in another dependency |
| 09:52:35 | × | zmt00 quits (~zmt00@user/zmt00) (Ping timeout: 260 seconds) |
| 09:52:54 | × | tzh quits (~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz) |
| 09:52:59 | <c_wraith> | how do you feel about spending some time making yourself think it works, then spending a lot more time debugging issues it causes? |
| 09:53:05 | <geekosaur> | that's generally considered a bad decision: as many things as possible are split off into dependencies |
| 09:53:27 | <geekosaur> | \they're getting ready to split base again, if I'm reading discussion elsewhere correctly |
| 09:53:29 | → | razetime joins (~quassel@117.193.7.206) |
| 09:53:47 | <dminuoso> | geekosaur: Really? What is going to be split off? |
| 09:54:30 | <geekosaur> | actually that part isn't happening yet. first phase is to split the stuff that needs to be wired-in or etc. into a separate ghc-base, which is the one that will be pinned |
| 09:54:48 | <geekosaur> | then the rest of base can be split, upgraded separately, whatever |
| 09:55:03 | <c_wraith> | makes sense. there's a lot more in base than needs to be wired in. |
| 09:55:12 | <Robert11> | Man this discussion is starting to feel like something I'd read on stackoverflow. Rather than answering the question / not answering at all, you're trying to tell me why my desired approach is wrong (not knowing anything of the overall project I am working on) |
| 09:55:14 | → | zmt00 joins (~zmt00@user/zmt00) |
| 09:55:31 | × | Robert11 quits (~Robert@ext-1-087.eduroam.chalmers.se) (Quit: Connection closed) |
| 09:55:43 | <c_wraith> | Robert11: perhaps that's because your desired approach has problems that you're not communicating that you understand |
| 09:56:05 | <dminuoso> | They have just left |
| 09:56:07 | <mauke> | I thought Robert11's original question was already answered a while ago |
| 09:56:12 | <mauke> | was there another one? |
| 09:56:24 | <geekosaur> | also, wishing for access to references won't get you them. the language design gores out of its way to *not give you that* |
| 09:56:28 | <geekosaur> | *goes |
| 09:56:34 | <c_wraith> | They wanted to run several IO actions and cancel the others when one finishes. |
| 09:56:40 | <dminuoso> | And if you do uncover the references, they are evil and treacherous. |
| 09:56:45 | <c_wraith> | And they wanted to not use the async package |
| 09:56:46 | <bjourne> | c_wraith: yes, i call that reference equality-- since, practically speaking, it is not type safe |
| 09:56:58 | <dminuoso> | We have this thing called reallyUnsafePtrEquality# which is a simple pointer address equality |
| 09:57:05 | <dminuoso> | And it will *not* behave like you expect it, it is truly evil. |
| 09:57:14 | <mauke> | c_wraith: sure, but that's not a question |
| 09:57:17 | <dminuoso> | This is due to how the runtime model is built |
| 09:57:51 | <c_wraith> | mauke: eh. request for help or question, does the difference matter that much? |
| 09:58:06 | <dminuoso> | bjourne: That thing can give false positives, false negatives |
| 09:58:16 | <dminuoso> | bjourne: with that in mind, do you think talking about references is generally a useful thing? |
| 09:58:19 | → | merijn joins (~merijn@c-001-001-017.client.esciencecenter.eduvpn.nl) |
| 09:58:47 | <c_wraith> | dminuoso: I think it can't actually give false positives. It can't be interrupted by GC, so things can't be moved around in the middle of it. |
| 09:59:41 | <mauke> | c_wraith: "<Robert11> I believe... I will have to investigate this if I end up going this route" <- I didn't parse it as a request for help, more like "this is how I'm planning to go about it" |
| 09:59:50 | <dminuoso> | c_wraith: let me rephrase what Im thinking off then. |
| 10:00:06 | <geekosaur> | Robert11 gave up and left |
| 10:00:09 | <dminuoso> | You can have a situation where `reallyUnsafePtrEquality# a b` starts off as true, and then if you reevaluate that same expression becomes false. |
| 10:00:24 | <geekosaur> | apparently it's "write and debug from scratch hiimself" or we're all mean playmates |
| 10:00:32 | <dminuoso> | Thats just one of the many evil traps thinking about references holds |
| 10:00:37 | → | teo joins (~teo@user/teo) |
| 10:00:47 | <bjourne> | dminuoso: "They use explicit indices into some backing structure." <- this is references implemented "by hand". |
| 10:00:57 | <c_wraith> | dminuoso: I don't see how that could happen. |
| 10:01:06 | → | __monty__ joins (~toonn@user/toonn) |
| 10:01:06 | <geekosaur> | and that's pretty much how you have to do it, in Haskell |
| 10:02:14 | <dminuoso> | c_wraith: imagine some shared impure (unsafePerformIO) thunk |
| 10:02:16 | → | chromoblob joins (~user@37.113.164.122) |
| 10:02:17 | <c_wraith> | bjourne: I said at the start that haskell wants you to work with values, not pointers. If you want to work with indirect access to data, you need to implement it. |
| 10:02:30 | × | yella quits (~yell@2607:fb90:80c9:e326:6468:b483:c07e:90c8) (Ping timeout: 255 seconds) |
| 10:02:54 | <dminuoso> | though mmm |
| 10:03:04 | <dminuoso> | you wouldnt get a false on the intiail pointer comparison |
| 10:03:06 | merijn | glances at the 15 different reference types in base |
| 10:03:16 | <merijn> | I don't think I have to implement references myself ;) |
| 10:03:30 | → | chele joins (~chele@user/chele) |
| 10:03:41 | <c_wraith> | Sure, but then you give up all the good points of having your graph nodes in an array |
| 10:04:26 | <c_wraith> | dminuoso: oh, I see. If a and b are pointers to an unevaluated thunk, evaluating it will rewrite *one* of the pointers, not both. |
| 10:04:47 | <dminuoso> | c_wraith yeah |
| 10:05:17 | <dminuoso> | bjourne: maybe this is a confused discussion that has its root in an XY problem. |
| 10:05:25 | <dminuoso> | care to explain the problem you are facing? |
| 10:06:55 | <bjourne> | c_wraith: ok so you have type Graph = ([Vertex], Map Int [Int]), now you want to delete a vertex |
| 10:07:14 | × | jonathanx quits (~jonathan@h-98-128-168-222.NA.cust.bahnhof.se) (Ping timeout: 256 seconds) |
| 10:07:24 | <merijn> | Why the list of vertices? Isn't that implicit in the Map? |
| 10:07:38 | <c_wraith> | maybe it's storing data other than the index. |
| 10:07:44 | <c_wraith> | It makes sense to me |
| 10:07:59 | <merijn> | c_wraith: Wouldn't that make more sense as "Map Int (VertexData, [Int])"? |
| 10:08:28 | <c_wraith> | Well, ok. that would make more sense. |
| 10:08:47 | <merijn> | Make illegal states irrepresentible and all that ;) |
| 10:08:54 | <c_wraith> | yeah |
| 10:09:17 | <c_wraith> | also, updating it is faster than updating the list if the vertex data changes, but let's ignore that. |
| 10:09:58 | × | atocanist quits (~atocanist@2a01:e34:ec22:3040:260e:115e:44a8:9bee) (Ping timeout: 260 seconds) |
| 10:11:17 | × | nek0 quits (~nek0@2a01:4f8:222:2b41::12) (Quit: Ping timeout (120 seconds)) |
| 10:11:32 | → | nek0 joins (~nek0@2a01:4f8:222:2b41::12) |
| 10:11:34 | <bjourne> | so type Graph = Map Int (VertexData, [Int]), you want to add a node, what do you do? |
| 10:12:16 | <c_wraith> | what's interesting is that Data.Graph doesn't even have that operation |
| 10:12:20 | <c_wraith> | and... I never noticed. |
| 10:12:25 | × | xff0x quits (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) (Ping timeout: 260 seconds) |
| 10:12:39 | <c_wraith> | Admittedly, Data.Graph is intentionally quite limited. But it's sort of rare to add nodes to a graph online. |
| 10:13:59 | <c_wraith> | to do it efficiently, your representation is actually (Int, Map Int ...) |
| 10:14:12 | <c_wraith> | where the first value is the next node index to add. |
| 10:14:29 | <merijn> | c_wraith: Map has a cheap max value lookup anyway? |
| 10:14:39 | <c_wraith> | well. max key. yes. |
| 10:15:03 | × | stiell quits (~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection) |
| 10:15:37 | <bjourne> | so it's now type Graph = (Int, Map Int (VertexData, [Int])) |
| 10:15:44 | <merijn> | I mean, either way this isn't gonna be a super high performance implementation |
| 10:16:03 | <c_wraith> | bjourne: or just use lookupMax on the map, whatever |
| 10:16:08 | → | stiell joins (~stiell@gateway/tor-sasl/stiell) |
| 10:16:19 | → | karolis joins (~karolis@78.157.77.235) |
| 10:16:33 | <bjourne> | i want O(1) insert |
| 10:16:34 | × | madjestic quits (~madjestic@213.208.229.226) (Ping timeout: 268 seconds) |
| 10:16:48 | <c_wraith> | why? |
| 10:16:53 | <probie> | O(log n) is pretty much O(1) |
| 10:17:00 | → | jonathanx joins (~jonathan@h-98-128-168-222.NA.cust.bahnhof.se) |
| 10:17:12 | <merijn> | Could even use IntMap and get even better asymptotics |
| 10:17:19 | × | chromoblob quits (~user@37.113.164.122) (Ping timeout: 260 seconds) |
| 10:17:25 | <c_wraith> | I can't imagine any graph algorithm where you insert more nodes than edges. |
| 10:18:35 | <merijn> | Not to mention any representation that has O(1) insert is gonna have shit performance on queries |
| 10:19:05 | <c_wraith> | including queries like finding the node to put on the other sides of the edge |
| 10:19:24 | <probie> | If you keep the graph lazy, "insertion" is always O(1) :p |
| 10:20:07 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:5866:96fb:16f6:58d1) |
| 10:21:05 | <bjourne> | it's odd that you dont understand why O(1) amortized complexity is important but it's beside the point |
| 10:21:55 | <c_wraith> | I mean, you can go make an IORef graph if you want, but performance is going to be a lot worse on almost every algorithm. |
| 10:21:55 | <merijn> | bjourne: Your graph is not going to be big enough to for O(log n) to be noticably different from O(1). And if your graph IS going to be big enough, the Map and List approach is fundamentally the wrong approach anyway |
| 10:22:17 | <merijn> | You'd want a mutable vector based CSR or something |
| 10:24:10 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:5866:96fb:16f6:58d1) (Ping timeout: 240 seconds) |
| 10:24:11 | × | FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 255 seconds) |
| 10:25:18 | → | mei__ joins (~mei@user/mei) |
| 10:25:52 | <c_wraith> | ooh, CSR is neat. I never looked into what actually-efficient graph representation use. |
| 10:26:31 | → | FinnElija joins (~finn_elij@user/finn-elija/x-0085643) |
| 10:27:50 | <c_wraith> | hey, and there are variants like PCSR intended for use cases with lots of node insertion/deletion |
| 10:28:14 | <bjourne> | merijn: if it is the wrong approach, why did you suggest it? |
| 10:28:23 | → | azimut joins (~azimut@gateway/tor-sasl/azimut) |
| 10:28:32 | <c_wraith> | because it works fine up to a couple million nodes |
| 10:28:46 | <c_wraith> | most graphs aren't that big. |
| 10:29:21 | <c_wraith> | and honestly, memory use becomes an issue before speed does. |
| 10:30:13 | <merijn> | bjourne: Because you haven't specified what you're doing so we're all just randomly guessing based on your initial suggestion/idea |
| 10:30:52 | → | gurkenglas joins (~gurkengla@p548ac72e.dip0.t-ipconnect.de) |
| 10:31:08 | <dminuoso> | Okay, I think I've done it. I realized I started writing unsafeCoerce without the slightest hesitation. |
| 10:31:13 | <merijn> | c_wraith: CSR is gonna be painfully expensive to update, though. But for querying operation you can't beat "dense arrasy" as universal HPC datastructur |
| 10:31:16 | <dminuoso> | Have I gone too far? :) |
| 10:32:20 | × | razetime quits (~quassel@117.193.7.206) (Ping timeout: 248 seconds) |
| 10:33:01 | → | razetime joins (~quassel@117.254.34.208) |
| 10:33:37 | → | troydm joins (~troydm@host-176-37-124-197.b025.la.net.ua) |
| 10:33:45 | <c_wraith> | dminuoso: hmm. probably. Even when I know it's safe, I still hesitate to ask if I can possibly do it another way. |
| 10:35:02 | → | acidjnk joins (~acidjnk@p200300d6e7137a84847a35f477003ced.dip0.t-ipconnect.de) |
| 10:35:11 | × | smichel17[m] quits (~smichel17@2001:470:69fc:105::2d32) (Quit: Bridge terminating on SIGTERM) |
| 10:35:11 | × | elvishjerricco quits (~elvishjer@2001:470:69fc:105::6172) (Quit: Bridge terminating on SIGTERM) |
| 10:35:11 | × | Tisoxin quits (~ikosit@user/ikosit) (Quit: Bridge terminating on SIGTERM) |
| 10:35:11 | × | geekosaur[m] quits (~geekosaur@xmonad/geekosaur) (Quit: Bridge terminating on SIGTERM) |
| 10:35:11 | × | jbggs[m] quits (~jbggsmatr@2001:470:69fc:105::2:995f) (Quit: Bridge terminating on SIGTERM) |
| 10:35:11 | × | adziahel[m] quits (~adziahelm@2001:470:69fc:105::b4d) (Quit: Bridge terminating on SIGTERM) |
| 10:35:11 | × | inkbottle[m] quits (~inkbottle@2001:470:69fc:105::2ff5) (Quit: Bridge terminating on SIGTERM) |
| 10:35:11 | × | aaronv quits (~aaronv@user/aaronv) (Quit: Bridge terminating on SIGTERM) |
| 10:35:11 | × | kfiz[m] quits (~louismatr@2001:470:69fc:105::2:aee0) (Quit: Bridge terminating on SIGTERM) |
| 10:35:11 | × | psydroid quits (~psydroid@user/psydroid) (Quit: Bridge terminating on SIGTERM) |
| 10:35:12 | × | M0rphee[m] quits (~M0rpheema@2001:470:69fc:105::2:b1ce) (Quit: Bridge terminating on SIGTERM) |
| 10:35:12 | × | maralorn quits (~maralorn@2001:470:69fc:105::251) (Quit: Bridge terminating on SIGTERM) |
| 10:35:12 | × | srid[m] quits (~sridmatri@2001:470:69fc:105::1c2) (Quit: Bridge terminating on SIGTERM) |
| 10:35:12 | × | lawt quits (~lawtonmat@2001:470:69fc:105::2:97b8) (Quit: Bridge terminating on SIGTERM) |
| 10:35:12 | × | cafkafk[m] quits (~cafkafkma@2001:470:69fc:105::1:cea8) (Quit: Bridge terminating on SIGTERM) |
| 10:35:12 | × | Clinton[m] quits (~clintonme@2001:470:69fc:105::2:31d4) (Quit: Bridge terminating on SIGTERM) |
| 10:35:12 | × | afotgkmnzj7asv3r quits (~afotgkmnz@2001:470:69fc:105::c24b) (Quit: Bridge terminating on SIGTERM) |
| 10:35:12 | × | steve[m]12 quits (~stevetrou@2001:470:69fc:105::e0b) (Quit: Bridge terminating on SIGTERM) |
| 10:35:12 | × | schuelermine[m] quits (~schuelerm@user/schuelermine) (Quit: Bridge terminating on SIGTERM) |
| 10:35:12 | × | Artem[m] quits (~artemtype@2001:470:69fc:105::75b) (Quit: Bridge terminating on SIGTERM) |
| 10:35:12 | × | olivermead[m] quits (~olivermea@2001:470:69fc:105::2:4289) (Quit: Bridge terminating on SIGTERM) |
| 10:35:12 | × | sm quits (~sm@plaintextaccounting/sm) (Quit: Bridge terminating on SIGTERM) |
| 10:35:12 | × | ManofLetters[m] quits (~manoflett@2001:470:69fc:105::3be) (Quit: Bridge terminating on SIGTERM) |
| 10:35:13 | × | ongy[m] quits (~ongymatri@2001:470:69fc:105::5018) (Quit: Bridge terminating on SIGTERM) |
| 10:35:13 | × | fgaz quits (~fgaz@2001:470:69fc:105::842) (Quit: Bridge terminating on SIGTERM) |
| 10:35:13 | × | silky[m] quits (~noonvande@2001:470:69fc:105::2:943c) (Quit: Bridge terminating on SIGTERM) |
| 10:35:13 | × | famubu[m] quits (~famubumat@2001:470:69fc:105::1081) (Quit: Bridge terminating on SIGTERM) |
| 10:35:13 | × | Deide quits (~deide@user/deide) (Quit: Bridge terminating on SIGTERM) |
| 10:35:13 | × | unclechu quits (~unclechu@2001:470:69fc:105::354) (Quit: Bridge terminating on SIGTERM) |
| 10:35:13 | × | VanceIsM7[m] quits (~vanceism7@2001:470:69fc:105::3ad) (Quit: Bridge terminating on SIGTERM) |
| 10:35:13 | × | VarikValefor[m] quits (~varikvale@2001:470:69fc:105::a5d) (Quit: Bridge terminating on SIGTERM) |
| 10:35:13 | × | fendor[m] quits (~fendormat@2001:470:69fc:105::fcbd) (Quit: Bridge terminating on SIGTERM) |
| 10:35:14 | × | ormaaj quits (~ormaaj@user/ormaaj) (Quit: Bridge terminating on SIGTERM) |
| 10:35:14 | × | crazazy[m] quits (~crazazyut@2001:470:69fc:105::2:ba2a) (Quit: Bridge terminating on SIGTERM) |
| 10:35:14 | × | vladan[m] quits (~vladanmat@2001:470:69fc:105::2:24df) (Quit: Bridge terminating on SIGTERM) |
| 10:35:14 | × | Las[m] quits (~lasmatrix@2001:470:69fc:105::74e) (Quit: Bridge terminating on SIGTERM) |
| 10:35:14 | × | SeanKing[m] quits (~seankingm@2001:470:69fc:105::cf9c) (Quit: Bridge terminating on SIGTERM) |
| 10:35:14 | × | nomagno quits (~nomagno@2001:470:69fc:105::c1f0) (Quit: Bridge terminating on SIGTERM) |
| 10:35:14 | × | maerwald[m] quits (~maerwaldm@2001:470:69fc:105::1ee) (Quit: Bridge terminating on SIGTERM) |
| 10:35:14 | × | Guillaum[m] quits (~guiboumat@2001:470:69fc:105::1:72ac) (Quit: Bridge terminating on SIGTERM) |
| 10:35:14 | × | jneira[m] quits (~jneiramat@2001:470:69fc:105::d729) (Quit: Bridge terminating on SIGTERM) |
| 10:35:14 | × | jinsun_ quits (~jinsun@user/jinsun) (Quit: Bridge terminating on SIGTERM) |
| 10:35:14 | × | chreekat quits (~chreekat@2001:470:69fc:105::16b5) (Quit: Bridge terminating on SIGTERM) |
| 10:35:14 | × | drsooch[m] quits (~drsoochma@2001:470:69fc:105::1:c8a1) (Quit: Bridge terminating on SIGTERM) |
| 10:35:14 | × | oak- quits (~oak-@2001:470:69fc:105::fcd) (Quit: Bridge terminating on SIGTERM) |
| 10:35:15 | × | Dominik[m]1 quits (~dschrempf@2001:470:69fc:105::2:bbb6) (Quit: Bridge terminating on SIGTERM) |
| 10:35:15 | × | czuberion[m] quits (~czuberion@2001:470:69fc:105::2:bc47) (Quit: Bridge terminating on SIGTERM) |
| 10:35:15 | × | zarel[m] quits (~zarelitma@2001:470:69fc:105::1:fcfb) (Quit: Bridge terminating on SIGTERM) |
| 10:35:15 | × | AdamConner-Sax[m quits (~adamcsmat@2001:470:69fc:105::1:e2c8) (Quit: Bridge terminating on SIGTERM) |
| 10:35:15 | × | ted[m] quits (~tedmatrix@2001:470:69fc:105::2:bf60) (Quit: Bridge terminating on SIGTERM) |
| 10:35:16 | × | alexfmpe[m] quits (~alexfmpem@2001:470:69fc:105::38ba) (Quit: Bridge terminating on SIGTERM) |
| 10:35:16 | × | ericson2314 quits (~ericson23@2001:470:69fc:105::70c) (Quit: Bridge terminating on SIGTERM) |
| 10:35:16 | × | Player-205[m] quits (~sashaserp@2001:470:69fc:105::2:30b8) (Quit: Bridge terminating on SIGTERM) |
| 10:35:16 | × | yl53[m] quits (~yl53matri@2001:470:69fc:105::85b) (Quit: Bridge terminating on SIGTERM) |
| 10:35:16 | × | jean-paul[m] quits (~jean-paul@2001:470:69fc:105::d1ab) (Quit: Bridge terminating on SIGTERM) |
| 10:35:16 | × | peddie quits (~peddie@2001:470:69fc:105::25d) (Quit: Bridge terminating on SIGTERM) |
| 10:35:16 | × | Matthew|m quits (~arathorn@2001:470:69fc:105::1f) (Quit: Bridge terminating on SIGTERM) |
| 10:35:19 | × | Christoph[m] quits (~hpotsirhc@2001:470:69fc:105::2ff8) (Quit: Bridge terminating on SIGTERM) |
| 10:35:19 | × | nicm[m] quits (~nicmollel@2001:470:69fc:105::1:feeb) (Quit: Bridge terminating on SIGTERM) |
| 10:35:19 | × | romes[m] quits (~romesmatr@2001:470:69fc:105::2:1660) (Quit: Bridge terminating on SIGTERM) |
| 10:35:19 | × | MangoIV[m] quits (~mangoivma@2001:470:69fc:105::2:8417) (Quit: Bridge terminating on SIGTERM) |
| 10:35:19 | × | JensPetersen[m] quits (~juhp@2001:470:69fc:105::6e9) (Quit: Bridge terminating on SIGTERM) |
| 10:35:19 | × | tiziodcaio quits (~tiziodcai@2001:470:69fc:105::1:2bf8) (Quit: Bridge terminating on SIGTERM) |
| 10:35:20 | × | UdayKiran[m] quits (~neoatnebu@2001:470:69fc:105::2:bae0) (Quit: Bridge terminating on SIGTERM) |
| 10:35:20 | × | mimi1vx[m] quits (~osukupmat@2001:470:69fc:105::2:418d) (Quit: Bridge terminating on SIGTERM) |
| 10:35:20 | × | ozkutuk[m] quits (~ozkutuk@2001:470:69fc:105::2:9af8) (Quit: Bridge terminating on SIGTERM) |
| 10:35:20 | × | JonathanWatson[m quits (~jjwmatrix@2001:470:69fc:105::2:a544) (Quit: Bridge terminating on SIGTERM) |
| 10:35:20 | × | sektor[m] quits (~sektor@2001:470:69fc:105::2:3f60) (Quit: Bridge terminating on SIGTERM) |
| 10:35:20 | × | oo_miguel[m] quits (~oomiguelm@2001:470:69fc:105::1:5ab0) (Quit: Bridge terminating on SIGTERM) |
| 10:35:21 | × | jecxjo[m] quits (~jecxjomat@2001:470:69fc:105::2:bd7c) (Quit: Bridge terminating on SIGTERM) |
| 10:35:21 | × | jmcantrell quits (~jmcantrel@user/jmcantrell) (Quit: Bridge terminating on SIGTERM) |
| 10:35:21 | × | kjlid[m] quits (~kjlidmatr@2001:470:69fc:105::2:c193) (Quit: Bridge terminating on SIGTERM) |
| 10:35:22 | <c_wraith> | wow, it's late. That sure is ambiguously phrase. I still hesitate *to give myself time* to ask.... |
| 10:35:45 | <dminuoso> | c_wraith: Given what Im doing, there is little way around it. |
| 10:35:55 | <c_wraith> | sometimes that happens. |
| 10:36:07 | <c_wraith> | But I still spend some time hesitating. :) |
| 10:36:20 | <bjourne> | merijn: this expression in haskell: Map<T, List<T> > map = new HashMap<>(); |
| 10:36:27 | <dminuoso> | Im essentially doing things like turning `newtype ST s a = ST (State# s -> (# State# s, a #)) into `Proxy# s -> (# Proxy# s, a #)` and back |
| 10:36:37 | <dminuoso> | For some a bunch of convoluted reasons |
| 10:37:03 | <c_wraith> | huh. I thought Proxy# arguments were elided at runtime |
| 10:37:12 | <dminuoso> | Yes, so are State# |
| 10:37:15 | <c_wraith> | ah, ok |
| 10:37:39 | → | fgaz joins (~fgaz@2001:470:69fc:105::842) |
| 10:37:44 | <merijn> | bjourne: That's not a description of the problem you want to solve, nor the scale of your data, or really anything useful beyond "I have this exact code in another language that I try to mimic", which may or may not make sense, given that Haskell is lazy and immutable |
| 10:37:46 | → | peddie joins (~peddie@2001:470:69fc:105::25d) |
| 10:37:46 | → | ericson2314 joins (~ericson23@2001:470:69fc:105::70c) |
| 10:37:46 | → | famubu[m] joins (~famubumat@2001:470:69fc:105::1081) |
| 10:38:00 | → | aaronv joins (~aaronv@user/aaronv) |
| 10:38:00 | → | maralorn joins (~maralorn@2001:470:69fc:105::251) |
| 10:38:00 | → | sm joins (~sm@plaintextaccounting/sm) |
| 10:38:01 | → | tiziodcaio joins (~tiziodcai@2001:470:69fc:105::1:2bf8) |
| 10:38:13 | → | Christoph[m] joins (~hpotsirhc@2001:470:69fc:105::2ff8) |
| 10:38:13 | → | ongy[m] joins (~ongymatri@2001:470:69fc:105::5018) |
| 10:38:28 | → | Las[m] joins (~lasmatrix@2001:470:69fc:105::74e) |
| 10:38:30 | <dminuoso> | https://github.com/dminuoso/flatparse-state/blob/main/app/Main.hs nearly 10% of lines have an unsafeCoerce in them heh |
| 10:38:42 | → | smichel17[m] joins (~smichel17@2001:470:69fc:105::2d32) |
| 10:38:56 | → | chreekat joins (~chreekat@2001:470:69fc:105::16b5) |
| 10:39:09 | → | ManofLetters[m] joins (~manoflett@2001:470:69fc:105::3be) |
| 10:39:09 | → | fendor[m] joins (~fendormat@2001:470:69fc:105::fcbd) |
| 10:39:16 | × | inversed quits (~inversed@bcdcac82.skybroadband.com) (Ping timeout: 248 seconds) |
| 10:39:24 | → | oak- joins (~oak-@2001:470:69fc:105::fcd) |
| 10:39:32 | <probie> | bjourne: import Data.HashMap qualified as HM; map = HM.empty |
| 10:39:37 | → | kfiz[m] joins (~louismatr@2001:470:69fc:105::2:aee0) |
| 10:39:37 | → | jmcantrell joins (~jmcantrel@user/jmcantrell) |
| 10:39:37 | → | jinsun_ joins (~jinsun@user/jinsun) |
| 10:39:50 | → | romes[m] joins (~romesmatr@2001:470:69fc:105::2:1660) |
| 10:40:05 | → | JensPetersen[m] joins (~juhp@2001:470:69fc:105::6e9) |
| 10:40:06 | → | ormaaj joins (~ormaaj@user/ormaaj) |
| 10:40:06 | → | Guillaum[m] joins (~guiboumat@2001:470:69fc:105::1:72ac) |
| 10:40:12 | → | inversed joins (~inversed@bcdcac82.skybroadband.com) |
| 10:40:19 | → | silky[m] joins (~noonvande@2001:470:69fc:105::2:943c) |
| 10:40:32 | → | jneira[m] joins (~jneiramat@2001:470:69fc:105::d729) |
| 10:40:32 | → | alexfmpe[m] joins (~alexfmpem@2001:470:69fc:105::38ba) |
| 10:40:32 | → | Matthew|m joins (~arathorn@2001:470:69fc:105::1f) |
| 10:40:33 | → | JonathanWatson[m joins (~jjwmatrix@2001:470:69fc:105::2:a544) |
| 10:40:42 | <dminuoso> | bjourne: What operations do you do with the graph mainly? |
| 10:40:44 | <probie> | with a type signature of "map :: HM.Map T [T]". It's probably not what you want though |
| 10:40:45 | → | srid[m] joins (~sridmatri@2001:470:69fc:105::1c2) |
| 10:40:46 | → | lawt joins (~lawtonmat@2001:470:69fc:105::2:97b8) |
| 10:40:59 | → | M0rphee[m] joins (~M0rpheema@2001:470:69fc:105::2:b1ce) |
| 10:40:59 | → | nicm[m] joins (~nicmollel@2001:470:69fc:105::1:feeb) |
| 10:41:06 | <bjourne> | merijn: i disagree. Map<T, List<T> > map = new HashMap<>(); instantiates a graph with capacity for many millions of nodes |
| 10:41:12 | → | drsooch[m] joins (~drsoochma@2001:470:69fc:105::1:c8a1) |
| 10:41:25 | → | olivermead[m] joins (~olivermea@2001:470:69fc:105::2:4289) |
| 10:41:37 | → | jbggs[m] joins (~jbggsmatr@2001:470:69fc:105::2:995f) |
| 10:41:52 | → | oo_miguel[m] joins (~oomiguelm@2001:470:69fc:105::1:5ab0) |
| 10:41:53 | → | Tisoxin joins (~ikosit@user/ikosit) |
| 10:42:06 | <dminuoso> | Either way, is there any graph representation in which vertex removal is actually cheap? |
| 10:42:08 | → | ozkutuk[m] joins (~ozkutuk@2001:470:69fc:105::2:9af8) |
| 10:42:08 | → | Artem[m] joins (~artemtype@2001:470:69fc:105::75b) |
| 10:42:08 | → | unclechu joins (~unclechu@2001:470:69fc:105::354) |
| 10:42:09 | → | sektor[m] joins (~sektor@2001:470:69fc:105::2:3f60) |
| 10:42:21 | → | Clinton[m] joins (~clintonme@2001:470:69fc:105::2:31d4) |
| 10:42:21 | → | maerwald[m] joins (~maerwaldm@2001:470:69fc:105::1ee) |
| 10:42:21 | → | vladan[m] joins (~vladanmat@2001:470:69fc:105::2:24df) |
| 10:42:36 | <dminuoso> | Adjacency list is the cheapest for that type of operation that I know of |
| 10:42:37 | → | elvishjerricco joins (~elvishjer@2001:470:69fc:105::6172) |
| 10:42:37 | → | VarikValefor[m] joins (~varikvale@2001:470:69fc:105::a5d) |
| 10:42:38 | → | geekosaur[m] joins (~geekosaur@xmonad/geekosaur) |
| 10:42:38 | → | nomagno joins (~nomagno@2001:470:69fc:105::c1f0) |
| 10:42:51 | → | jean-paul[m] joins (~jean-paul@2001:470:69fc:105::d1ab) |
| 10:43:03 | → | afotgkmnzj7asv3r joins (~afotgkmnz@2001:470:69fc:105::c24b) |
| 10:43:17 | → | cafkafk[m] joins (~cafkafkma@2001:470:69fc:105::1:cea8) |
| 10:43:29 | → | VanceIsM7[m] joins (~vanceism7@2001:470:69fc:105::3ad) |
| 10:43:29 | → | Deide joins (~deide@user/deide) |
| 10:43:29 | → | SeanKing[m] joins (~seankingm@2001:470:69fc:105::cf9c) |
| 10:43:43 | → | Player-205[m] joins (~sashaserp@2001:470:69fc:105::2:30b8) |
| 10:43:43 | → | MangoIV[m] joins (~mangoivma@2001:470:69fc:105::2:8417) |
| 10:43:43 | → | psydroid joins (~psydroid@user/psydroid) |
| 10:43:43 | → | schuelermine[m] joins (~schuelerm@user/schuelermine) |
| 10:43:43 | → | yl53[m] joins (~yl53matri@2001:470:69fc:105::85b) |
| 10:43:57 | → | crazazy[m] joins (~crazazyut@2001:470:69fc:105::2:ba2a) |
| 10:44:09 | → | UdayKiran[m] joins (~neoatnebu@2001:470:69fc:105::2:bae0) |
| 10:44:22 | → | czuberion[m] joins (~czuberion@2001:470:69fc:105::2:bc47) |
| 10:44:35 | → | zarel[m] joins (~zarelitma@2001:470:69fc:105::1:fcfb) |
| 10:44:44 | <bjourne> | it's O(1) if you allow for tombstoning |
| 10:44:47 | → | accord joins (uid568320@id-568320.hampstead.irccloud.com) |
| 10:44:48 | → | Dominik[m]1 joins (~dschrempf@2001:470:69fc:105::2:bbb6) |
| 10:44:49 | → | AdamConner-Sax[m joins (~adamcsmat@2001:470:69fc:105::1:e2c8) |
| 10:44:54 | <probie> | dminuoso: You can use `Map Node (Set Node)` where deletion is just removing a Node from the Map. It just makes querying more expensive since garbage isn't collected (but this might be acceptable) |
| 10:45:04 | → | mimi1vx[m] joins (~osukupmat@2001:470:69fc:105::2:418d) |
| 10:45:22 | → | ted[m] joins (~tedmatrix@2001:470:69fc:105::2:bf60) |
| 10:45:23 | → | adziahel[m] joins (~adziahelm@2001:470:69fc:105::b4d) |
| 10:45:36 | → | steve[m] joins (~stevetrou@2001:470:69fc:105::e0b) |
| 10:45:36 | → | inkbottle[m] joins (~inkbottle@2001:470:69fc:105::2ff5) |
| 10:45:52 | → | jecxjo[m] joins (~jecxjomat@2001:470:69fc:105::2:bd7c) |
| 10:45:57 | <[Leary]> | If you're clever with a reference-style graph, you can probably build cheap clean-up actions alongside each vertex. |
| 10:46:13 | → | kjlid[m] joins (~kjlidmatr@2001:470:69fc:105::2:c193) |
| 10:46:17 | <dminuoso> | If performance was relevant, I guess I would generally favour CSR on mutable buffers. |
| 10:46:31 | <dminuoso> | Much improved locality of reference |
| 10:46:31 | <merijn> | I mean, this is all just random guess work and fairly pointless |
| 10:48:29 | <mauke> | let graph = (); insert vertex graph = () |
| 10:48:32 | <mauke> | technically O(1) |
| 10:49:53 | → | Guest7579 joins (~Guest75@178.141.130.118) |
| 10:50:33 | <Guest7579> | Hello. On Hoogle, is it possible to find usage examples of a particular function, provided name and signature? e.g. runParser :: DynFlags -> Parser a -> String -> ParseOutput a |
| 10:50:58 | <mauke> | I don't think so |
| 10:51:06 | <merijn> | Depends if the author wrote any :p |
| 10:51:18 | <merijn> | Oh, wait, you mean like packages that use that code? |
| 10:51:25 | <Guest7579> | say yes |
| 10:51:26 | × | karolis quits (~karolis@78.157.77.235) (Ping timeout: 256 seconds) |
| 10:51:32 | <geekosaur> | sounds more like google code search |
| 10:51:39 | <merijn> | Probably better luck searching on github |
| 10:51:40 | <Guest7579> | aha |
| 10:51:44 | × | Ranhir quits (~Ranhir@157.97.53.139) (Ping timeout: 260 seconds) |
| 10:51:56 | <geekosaur> | or yes, github |
| 10:52:23 | <geekosaur> | hoogle's bvetter at looking for definitions, not so much uses or examples |
| 10:52:33 | <geekosaur> | unless the function docs include useful examples |
| 10:52:49 | <Guest7579> | Wonder if https://about.sourcegraph.com/ should help |
| 10:55:02 | <probie> | But seriously, if you're going to be adding and removing nodes all over the place, `data Graph = Graph { nodes :: Map Node Int, edges :: IntMap IntSet }` is almost certainly adequate if Map<T, List<T> > map = new HashMap<>(); was adequate |
| 10:56:36 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 10:57:06 | → | karolis joins (~karolis@78.157.77.235) |
| 10:57:27 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 10:59:54 | × | jonathanx quits (~jonathan@h-98-128-168-222.NA.cust.bahnhof.se) (Ping timeout: 260 seconds) |
| 11:03:02 | → | sawilagar joins (~sawilagar@user/sawilagar) |
| 11:07:11 | → | Ranhir joins (~Ranhir@157.97.53.139) |
| 11:08:06 | → | xff0x joins (~xff0x@2405:6580:b080:900:9ba0:81b0:6475:533a) |
| 11:09:24 | → | madjestic joins (~madjestic@213.208.229.226) |
| 11:11:09 | × | jespada quits (~jespada@nmal-24-b2-v4wan-166357-cust1764.vm24.cable.virginm.net) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 11:11:17 | jinsun | is now known as Guest3604 |
| 11:11:17 | → | jinsun__ joins (~jinsun@user/jinsun) |
| 11:11:17 | × | Guest3604 quits (~jinsun@user/jinsun) (Killed (zirconium.libera.chat (Nickname regained by services))) |
| 11:11:17 | jinsun__ | is now known as jinsun |
| 11:11:41 | → | jespada joins (~jespada@82.36.38.229) |
| 11:13:21 | × | nckx quits (~nckx@tobias.gr) (Ping timeout: 256 seconds) |
| 11:23:23 | × | madjestic quits (~madjestic@213.208.229.226) (Ping timeout: 246 seconds) |
| 11:24:23 | × | razetime quits (~quassel@117.254.34.208) (Ping timeout: 260 seconds) |
| 11:24:41 | → | razetime joins (~quassel@117.254.35.248) |
| 11:25:26 | × | Erutuon quits (~Erutuon@23-88-131-243.fttp.usinternet.com) (Ping timeout: 256 seconds) |
| 11:27:36 | × | phma quits (~phma@2001:5b0:215d:aad8:20ab:f617:f484:4a0d) (Read error: Connection reset by peer) |
| 11:28:25 | → | phma joins (phma@2001:5b0:211f:4b08:4055:ac0:eabe:4279) |
| 11:31:58 | <Square> | Glad to hear GHC got a wasm backend today. |
| 11:32:25 | <Square> | https://www.tweag.io/blog/2022-11-22-wasm-backend-merged-in-ghc/ |
| 11:32:37 | × | ThePlayer quits (~ThePlayer@94-21-96-104.pool.digikabel.hu) (Ping timeout: 256 seconds) |
| 11:33:25 | <Franciman> | major achievement! |
| 11:37:49 | → | yaroot_ joins (~yaroot@p2790051-ipngn7801souka.saitama.ocn.ne.jp) |
| 11:37:54 | × | yaroot quits (~yaroot@2400:4052:ac0:d900:1cf4:2aff:fe51:c04c) (Ping timeout: 255 seconds) |
| 11:37:55 | yaroot_ | is now known as yaroot |
| 11:41:49 | → | yoneda joins (~mike@193.206.102.122) |
| 11:43:19 | × | razetime quits (~quassel@117.254.35.248) (Ping timeout: 252 seconds) |
| 11:43:50 | → | razetime joins (~quassel@117.254.34.137) |
| 11:48:34 | → | zmt01 joins (~zmt00@user/zmt00) |
| 11:50:04 | → | chromoblob joins (~user@37.113.164.122) |
| 11:50:25 | × | zmt00 quits (~zmt00@user/zmt00) (Ping timeout: 260 seconds) |
| 11:50:34 | → | mikoto-chan joins (~mikoto-ch@164.5.249.78) |
| 11:51:25 | <chreekat> | hell yeah |
| 11:52:51 | × | jespada quits (~jespada@82.36.38.229) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 11:54:23 | → | son0p joins (~ff@2604:3d08:5b7f:5540::604) |
| 11:54:29 | × | karolis quits (~karolis@78.157.77.235) (Ping timeout: 246 seconds) |
| 11:57:28 | → | nate4 joins (~nate@98.45.169.16) |
| 11:57:42 | <dminuoso> | I do wonder, what limitations does the wasm backend impose? Can I use all of ghc-prim with it? |
| 12:00:05 | × | ec quits (~ec@gateway/tor-sasl/ec) (Remote host closed the connection) |
| 12:02:16 | × | nate4 quits (~nate@98.45.169.16) (Ping timeout: 256 seconds) |
| 12:02:41 | × | Unicorn_Princess quits (~Unicorn_P@user/Unicorn-Princess/x-3540542) (Quit: Leaving) |
| 12:02:44 | × | califax quits (~califax@user/califx) (Ping timeout: 255 seconds) |
| 12:04:47 | → | jespada joins (~jespada@nmal-24-b2-v4wan-166357-cust1764.vm24.cable.virginm.net) |
| 12:05:45 | × | Guest7579 quits (~Guest75@178.141.130.118) (Quit: Client closed) |
| 12:05:55 | → | ec joins (~ec@gateway/tor-sasl/ec) |
| 12:08:07 | → | califax joins (~califax@user/califx) |
| 12:09:25 | × | chromoblob quits (~user@37.113.164.122) (Ping timeout: 268 seconds) |
| 12:14:27 | × | califax quits (~califax@user/califx) (Remote host closed the connection) |
| 12:15:00 | → | califax joins (~califax@user/califx) |
| 12:18:23 | → | jonathanx joins (~jonathan@h-98-128-168-222.NA.cust.bahnhof.se) |
| 12:22:32 | × | razetime quits (~quassel@117.254.34.137) (Ping timeout: 246 seconds) |
| 12:23:00 | → | razetime joins (~quassel@117.193.3.102) |
| 12:27:05 | → | acidjnk_new joins (~acidjnk@p200300d6e7137a845929a180a95a2c61.dip0.t-ipconnect.de) |
| 12:28:12 | → | razetime_ joins (~quassel@117.193.6.246) |
| 12:28:20 | × | razetime quits (~quassel@117.193.3.102) (Ping timeout: 260 seconds) |
| 12:29:17 | × | acidjnk quits (~acidjnk@p200300d6e7137a84847a35f477003ced.dip0.t-ipconnect.de) (Ping timeout: 256 seconds) |
| 12:33:42 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 12:33:48 | <merijn> | dminuoso: "whatever asterius supported", presumably? |
| 12:34:27 | <Hecate> | you fools, just ask terrorjack |
| 12:34:36 | <Hecate> | we literally have the creator of the backend in our ranks |
| 12:34:49 | <geekosaur> | ^ |
| 12:34:52 | <dminuoso> | Ah, terrorhack is Cheng Shao? |
| 12:35:00 | <Hecate> | aye |
| 12:36:30 | <maerwald> | terrorjack is on vacation or so |
| 12:37:09 | <dminuoso> | I did talk to him yesterday |
| 12:38:10 | × | pavonia quits (~user@user/siracusa) (Read error: Connection reset by peer) |
| 12:39:01 | × | azimut quits (~azimut@gateway/tor-sasl/azimut) (Quit: ZNC - https://znc.in) |
| 12:39:16 | × | sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.) |
| 12:40:14 | × | akegalj quits (~akegalj@89-172-58-90.adsl.net.t-com.hr) (Ping timeout: 256 seconds) |
| 12:40:18 | → | azimut joins (~azimut@gateway/tor-sasl/azimut) |
| 12:41:12 | → | madjestic joins (~madjestic@213.208.229.226) |
| 12:42:24 | → | sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
| 12:44:02 | → | karolis joins (~karolis@78.157.77.235) |
| 12:45:24 | × | stiell quits (~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection) |
| 12:46:25 | × | madjestic quits (~madjestic@213.208.229.226) (Ping timeout: 268 seconds) |
| 12:47:30 | → | stiell joins (~stiell@gateway/tor-sasl/stiell) |
| 12:49:49 | → | nckx joins (~nckx@tobias.gr) |
| 12:50:52 | × | bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Quit: = "") |
| 12:53:57 | × | CAT_S quits (apic@brezn3.muc.ccc.de) (Read error: Connection reset by peer) |
| 12:54:00 | × | jmdaemon quits (~jmdaemon@user/jmdaemon) (Ping timeout: 260 seconds) |
| 12:54:10 | → | pavonia joins (~user@user/siracusa) |
| 12:57:04 | × | karolis quits (~karolis@78.157.77.235) (Remote host closed the connection) |
| 12:58:00 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 13:01:29 | × | stiell quits (~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection) |
| 13:03:53 | → | stiell joins (~stiell@gateway/tor-sasl/stiell) |
| 13:06:50 | × | stiell quits (~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection) |
| 13:07:28 | → | stiell joins (~stiell@gateway/tor-sasl/stiell) |
| 13:09:23 | → | chromoblob joins (~user@37.113.164.122) |
| 13:10:36 | → | CAT_S joins (apic@brezn3.muc.ccc.de) |
| 13:11:52 | × | ec quits (~ec@gateway/tor-sasl/ec) (Write error: Connection reset by peer) |
| 13:11:52 | × | FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Write error: Connection reset by peer) |
| 13:11:52 | × | chexum quits (~quassel@gateway/tor-sasl/chexum) (Read error: Connection reset by peer) |
| 13:12:02 | × | stiell quits (~stiell@gateway/tor-sasl/stiell) (Ping timeout: 255 seconds) |
| 13:13:41 | → | FinnElija joins (~finn_elij@user/finn-elija/x-0085643) |
| 13:13:53 | → | chexum joins (~quassel@gateway/tor-sasl/chexum) |
| 13:14:49 | → | stiell joins (~stiell@gateway/tor-sasl/stiell) |
| 13:15:17 | → | jinsun__ joins (~jinsun@user/jinsun) |
| 13:15:17 | jinsun | is now known as Guest1009 |
| 13:15:17 | × | Guest1009 quits (~jinsun@user/jinsun) (Killed (sodium.libera.chat (Nickname regained by services))) |
| 13:15:17 | jinsun__ | is now known as jinsun |
| 13:21:24 | → | ec joins (~ec@gateway/tor-sasl/ec) |
| 13:21:25 | × | jrm quits (~jrm@user/jrm) (Read error: Connection reset by peer) |
| 13:21:44 | → | jrm joins (~jrm@user/jrm) |
| 13:24:08 | → | shriekingnoise joins (~shrieking@186.137.167.202) |
| 13:28:56 | × | ec quits (~ec@gateway/tor-sasl/ec) (Remote host closed the connection) |
| 13:29:47 | → | ec joins (~ec@gateway/tor-sasl/ec) |
| 13:34:18 | × | use-value quits (~Thunderbi@2a00:23c6:8a03:2f01:38e4:6025:87e4:a8aa) (Remote host closed the connection) |
| 13:34:37 | → | use-value joins (~Thunderbi@2a00:23c6:8a03:2f01:38e4:6025:87e4:a8aa) |
| 13:35:02 | <accord> | Is the link between lazy evaluation and copy-on-write mutation well known? |
| 13:36:54 | × | InstX1 quits (~Liam@2601:6c4:4081:54f0:148c:5793:51b7:46e1) (Ping timeout: 256 seconds) |
| 13:37:59 | <dminuoso> | What link are you referring to, accord? |
| 13:38:20 | <accord> | dminuoso: it's basically part of the same model, it seems to me. |
| 13:38:27 | <accord> | dminuoso: compute-on-read and copy-on-write |
| 13:38:29 | <dminuoso> | I do not see how. Can you explain? |
| 13:38:40 | <accord> | modify-on-read, and replicate-on-write |
| 13:38:49 | <accord> | Read and Write are mirror operations. |
| 13:39:07 | <accord> | Reading modifies the reader, the thing they read is written to them |
| 13:39:23 | <accord> | Reading is also copying. You copy a book you read in your memory basically |
| 13:39:54 | <accord> | Systems of lazy evaluation naturally are capable of deferring commands. |
| 13:40:03 | <accord> | Including to copy physically a result in memory for example |
| 13:40:16 | <dminuoso> | The only thing I had to think of when you mentioned it, is that Clean does a kind of inverted copy-on-write. |
| 13:40:16 | <accord> | Instead sharing it |
| 13:40:28 | <dminuoso> | But it is not necessarily related to lazyness |
| 13:40:41 | <accord> | dminuoso: Clean deduplicates and interns data yes? |
| 13:41:04 | <dminuoso> | No rather, when clean detects there are no duplicate references, it will switch to in-place mutations. |
| 13:41:14 | <dminuoso> | It uses its type system to guarantee this is safe |
| 13:42:14 | <accord> | Ah |
| 13:42:31 | <dminuoso> | So it is a kind of inversion of copy-on-write. |
| 13:42:33 | × | opticblast quits (~Thunderbi@secure-165.caltech.edu) (Read error: Connection reset by peer) |
| 13:42:52 | → | opticblast joins (~Thunderbi@secure-165.caltech.edu) |
| 13:43:09 | <dminuoso> | accord: I just dont see any connection between call-by-name and copy-on-write. |
| 13:43:28 | <dminuoso> | Other than some vague similarity if you squint really hard |
| 13:44:12 | <accord> | dminuoso: I'm implementing a runtime, and I noticed it's basically the same thing. Unexpectedly for myself as well |
| 13:44:24 | <accord> | dminuoso: from different perspectives though |
| 13:44:46 | <dminuoso> | Not sure what "same thing from different perspectives" means |
| 13:45:38 | <opqdonut> | laziness is a good match with immutability, and copy-on-write is an implementation technique for immutability (often called path copying in that context) |
| 13:45:43 | <accord> | dminuoso: do you know continuations passing style |
| 13:46:05 | <accord> | opqdonut: yes |
| 13:46:16 | <dminuoso> | The one thing they have in common, is merely "a deferred action" |
| 13:46:20 | <dminuoso> | But that's not much of a commonality |
| 13:46:35 | <accord> | Deferred action sure, that's a big part. |
| 13:47:21 | <dminuoso> | One is a space optimization technique, the other is an implementation of an evaluation model |
| 13:47:26 | × | jonathanx quits (~jonathan@h-98-128-168-222.NA.cust.bahnhof.se) (Remote host closed the connection) |
| 13:47:43 | → | jonathanx joins (~jonathan@h-98-128-168-222.NA.cust.bahnhof.se) |
| 13:48:18 | × | stiell quits (~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection) |
| 13:48:56 | <accord> | dminuoso: lazy eval aims to skip unnecesary computation. copy on-write aims to skip unnecessary allocation. |
| 13:49:04 | → | stiell joins (~stiell@gateway/tor-sasl/stiell) |
| 13:49:05 | → | ccapndave joins (~ccapndave@xcpe-62-167-164-99.cgn.res.adslplus.ch) |
| 13:49:07 | <accord> | It's the good old space-time dichotomy. Lazy eval saves TIME at the expense of more SPACE. And copy-on-write saves SPACE at the expense of more TIME to read from such structures. |
| 13:49:28 | <dminuoso> | lazy eval does not necessarily need more space. it can easily also save space. |
| 13:49:40 | × | razetime_ quits (~quassel@117.193.6.246) (Ping timeout: 248 seconds) |
| 13:49:43 | <dminuoso> | consider something like `repeat 1`, its quite space efficient. |
| 13:50:18 | <dminuoso> | well its even space efficient for two reasons, but even without tying the knot, lazyness would defer the space usage until consumption |
| 13:50:24 | → | razetime joins (~quassel@117.193.0.25) |
| 13:51:11 | <accord> | dminuoso: right |
| 13:51:21 | <dminuoso> | Also, COW does not cost more time to read from such structures. |
| 13:51:35 | <dminuoso> | It does however impose an additional cost on first modification. |
| 13:51:38 | × | lucerne quits (~lucerne@5.116.75.203) (Ping timeout: 256 seconds) |
| 13:51:44 | <dminuoso> | That is, with COW the first modification can be very expensive |
| 13:52:19 | × | coot quits (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot) |
| 13:52:27 | <dminuoso> | Well I guess it does have some impact on things like TLB and regular cache hierarchy as well, but its hard to quantify that. |
| 13:52:45 | × | sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Ping timeout: 252 seconds) |
| 13:53:14 | → | sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
| 13:55:29 | × | califax quits (~califax@user/califx) (Quit: ZNC 1.8.2 - https://znc.in) |
| 13:55:46 | × | razetime quits (~quassel@117.193.0.25) (Read error: Connection reset by peer) |
| 13:56:22 | → | Inst joins (~Liam@c-98-208-218-119.hsd1.fl.comcast.net) |
| 13:56:29 | → | califax joins (~califax@user/califx) |
| 13:56:32 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 13:57:11 | <accord> | dminuoso: COW defers space allocation, and lazy eval defers temporal allocation (execution time) |
| 13:58:19 | → | raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
| 13:59:16 | <dminuoso> | accord: If I had to compare similar things, there's something between lazyness and demand paging. |
| 13:59:21 | <dminuoso> | With COW I just dont see it. |
| 13:59:35 | <dminuoso> | (i.e. demand paging is lazy memory allocation) |
| 13:59:38 | <accord> | dminuoso: space and time, don't you see them as two sides of the same coin |
| 13:59:59 | <dminuoso> | Physically I see them as the same side of the coin. :p |
| 14:00:00 | → | razetime joins (~quassel@117.193.2.181) |
| 14:00:06 | <accord> | Neat |
| 14:00:50 | <accord> | dminuoso: say like 10 construction workers build 1 house in 10 days. How long it takes 2 workers... 50 days. Well that's naive of course, but approximately correct. |
| 14:01:08 | <accord> | Space/time tradeoffs are so common |
| 14:01:17 | <accord> | Space and time are the same in a way |
| 14:01:23 | <accord> | Space is a dimension of time. |
| 14:01:34 | <dminuoso> | Comparing two things on the basis there is some space/time tradeoff involved in both does not seem useful. |
| 14:01:49 | <accord> | It's useful in order to realize what space and time are. |
| 14:01:59 | dminuoso | shrugs |
| 14:03:28 | <accord> | dminuoso: what do you think space and time are |
| 14:04:23 | <geekosaur> | aspects of program execution that only sometimes have a relationship and rarely have a simplistic "tradeoff" one |
| 14:04:45 | <dminuoso> | streaming too is a space optimization technique, it defers/interleaves allocation/computation into the future. but that does not make it useful to look really hard for a connection between lazyness and streaming |
| 14:05:03 | <dminuoso> | mostly because these things occur in different universes |
| 14:05:26 | <dminuoso> | one is part of the execution model (or even semantic model), the other is some implementation style |
| 14:05:58 | × | razetime quits (~quassel@117.193.2.181) (Ping timeout: 268 seconds) |
| 14:06:11 | → | razetime joins (~quassel@117.254.35.59) |
| 14:06:50 | × | ccapndave quits (~ccapndave@xcpe-62-167-164-99.cgn.res.adslplus.ch) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 14:07:17 | <dminuoso> | I do not know of a framework that lets express and analyze both at the same time. Say we could look into category theory, but we dont even know what category we want to construct, let alone how to express these two things in the category theory, or what properties to look for.. |
| 14:08:28 | × | califax quits (~califax@user/califx) (Remote host closed the connection) |
| 14:08:53 | × | dsrt^ quits (~dsrt@76.145.185.103) (Remote host closed the connection) |
| 14:09:46 | <accord> | dminuoso: streaming is the same as lazy eval |
| 14:09:48 | → | califax joins (~califax@user/califx) |
| 14:09:52 | <dminuoso> | No it is not. |
| 14:09:57 | <accord> | How |
| 14:10:09 | <dminuoso> | One is an implementation of an evaluation strategy of the programming language, the other is something you do with that programming language. |
| 14:10:38 | <dminuoso> | While you can do *some* streaming with lazy evaluation, it is extremely limiting. |
| 14:10:38 | → | o-90 joins (~o-90@gateway/tor-sasl/o-90) |
| 14:10:40 | <accord> | One is what one side does to gradually expose a result. The other is what the other side does to gradually read the same result |
| 14:11:00 | <dminuoso> | I think your pattern matching goggles is set too coarse. |
| 14:11:14 | <accord> | Yes, but I have a reason to have set my goggles like that |
| 14:11:23 | <accord> | You CPU executes a stream of commands |
| 14:11:33 | <accord> | All execution is a stream. Sequences are key to execution |
| 14:11:55 | × | rembo10 quits (~rembo10@main.remulis.com) (Quit: ZNC 1.8.2 - https://znc.in) |
| 14:12:07 | <accord> | And execution is a pipeline. |
| 14:12:15 | → | ccapndave joins (~ccapndave@xcpe-62-167-164-99.cgn.res.adslplus.ch) |
| 14:12:15 | <accord> | It flatmaps one sequence to another sequence. |
| 14:12:43 | × | o-90 quits (~o-90@gateway/tor-sasl/o-90) (Client Quit) |
| 14:13:07 | <accord> | Everything fits that definition |
| 14:13:21 | <accord> | Kinda monadic |
| 14:13:36 | → | AlexNoo_ joins (~AlexNoo@178.34.163.201) |
| 14:14:06 | → | rembo10 joins (~rembo10@main.remulis.com) |
| 14:15:07 | × | stiell quits (~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection) |
| 14:17:08 | × | AlexNoo quits (~AlexNoo@178.34.160.146) (Ping timeout: 256 seconds) |
| 14:17:08 | → | stiell joins (~stiell@gateway/tor-sasl/stiell) |
| 14:17:30 | → | coot joins (~coot@213.134.171.3) |
| 14:21:53 | → | razetime_ joins (~quassel@117.254.35.67) |
| 14:22:00 | × | razetime quits (~quassel@117.254.35.59) (Ping timeout: 268 seconds) |
| 14:23:00 | AlexNoo_ | is now known as AlexNoo |
| 14:23:26 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:5866:96fb:16f6:58d1) |
| 14:23:53 | × | chexum quits (~quassel@gateway/tor-sasl/chexum) (Quit: No Ping reply in 180 seconds.) |
| 14:27:22 | → | chexum joins (~quassel@gateway/tor-sasl/chexum) |
| 14:27:39 | × | ChaiTRex quits (~ChaiTRex@user/chaitrex) (Remote host closed the connection) |
| 14:27:55 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:5866:96fb:16f6:58d1) (Ping timeout: 260 seconds) |
| 14:28:28 | × | razetime_ quits (~quassel@117.254.35.67) (Ping timeout: 256 seconds) |
| 14:28:31 | → | razetime joins (~quassel@117.254.34.219) |
| 14:30:21 | → | Alex_test joins (~al_test@178.34.163.201) |
| 14:32:59 | → | kenran joins (~user@user/kenran) |
| 14:34:01 | × | Alex_test quits (~al_test@178.34.163.201) (Quit: ;-) |
| 14:35:02 | × | kenran quits (~user@user/kenran) (Remote host closed the connection) |
| 14:35:56 | → | Alex_test joins (~al_test@178.34.163.201) |
| 14:36:07 | × | Alex_test quits (~al_test@178.34.163.201) (Client Quit) |
| 14:36:38 | → | Alex_test joins (~al_test@178.34.163.201) |
| 14:37:36 | ← | jakalx parts (~jakalx@base.jakalx.net) () |
| 14:40:34 | → | AlexZenon joins (~alzenon@178.34.163.201) |
| 14:45:04 | → | jakalx joins (~jakalx@base.jakalx.net) |
| 14:53:31 | → | ChaiTRex joins (~ChaiTRex@user/chaitrex) |
| 14:59:36 | × | L29Ah quits (~L29Ah@wikipedia/L29Ah) (Read error: Connection reset by peer) |
| 15:00:48 | → | L29Ah joins (~L29Ah@wikipedia/L29Ah) |
| 15:01:21 | → | Sgeo joins (~Sgeo@user/sgeo) |
| 15:11:34 | <accord> | It's weird how with lazy eval you can first get the output of something, and then provide the input that produces it |
| 15:14:44 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 15:18:55 | × | sayola1 quits (~sayola@dslb-088-064-186-217.088.064.pools.vodafone-ip.de) (Quit: Leaving.) |
| 15:19:49 | <dminuoso> | Except its not really true. |
| 15:20:41 | × | jonathanx quits (~jonathan@h-98-128-168-222.NA.cust.bahnhof.se) (Ping timeout: 246 seconds) |
| 15:20:51 | → | waleee joins (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) |
| 15:22:21 | <dminuoso> | accord: Do you have a particular example? |
| 15:22:31 | × | acidjnk_new quits (~acidjnk@p200300d6e7137a845929a180a95a2c61.dip0.t-ipconnect.de) (Ping timeout: 252 seconds) |
| 15:23:33 | → | jonathanx joins (~jonathan@h-98-128-168-222.NA.cust.bahnhof.se) |
| 15:24:25 | × | razetime quits (~quassel@117.254.34.219) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.) |
| 15:27:48 | × | ubert1 quits (~Thunderbi@178.165.183.156.wireless.dyn.drei.com) (Ping timeout: 248 seconds) |
| 15:28:00 | × | merijn quits (~merijn@c-001-001-017.client.esciencecenter.eduvpn.nl) (Ping timeout: 260 seconds) |
| 15:28:32 | → | `2jt joins (~jtomas@191.red-88-17-199.dynamicip.rima-tde.net) |
| 15:31:39 | → | sayola joins (~sayola@dslb-088-064-186-217.088.064.pools.vodafone-ip.de) |
| 15:31:57 | × | L29Ah quits (~L29Ah@wikipedia/L29Ah) (Read error: Connection reset by peer) |
| 15:32:09 | × | ec quits (~ec@gateway/tor-sasl/ec) (Remote host closed the connection) |
| 15:32:18 | → | L29Ah joins (~L29Ah@wikipedia/L29Ah) |
| 15:35:39 | → | ec joins (~ec@gateway/tor-sasl/ec) |
| 15:39:06 | → | ubert1 joins (~Thunderbi@178.165.183.156.wireless.dyn.drei.com) |
| 15:41:40 | × | pavonia quits (~user@user/siracusa) (Quit: Bye!) |
| 15:44:01 | → | beteigeuze joins (~Thunderbi@a79-169-109-107.cpe.netcabo.pt) |
| 15:45:02 | × | azimut quits (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 255 seconds) |
| 15:45:24 | → | mvk joins (~mvk@2607:fea8:5ce3:8500::efb) |
| 15:45:33 | → | azimut joins (~azimut@gateway/tor-sasl/azimut) |
| 15:45:43 | × | notzmv quits (~zmv@user/notzmv) (Remote host closed the connection) |
| 15:45:46 | × | mvk quits (~mvk@2607:fea8:5ce3:8500::efb) (Client Quit) |
| 15:46:20 | → | jao joins (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) |
| 15:48:44 | × | ccapndave quits (~ccapndave@xcpe-62-167-164-99.cgn.res.adslplus.ch) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 15:48:57 | → | Guest33 joins (~Guest33@ext-1-087.eduroam.chalmers.se) |
| 15:49:08 | <Guest33> | Is there a way to block any exception from reaching a process? |
| 15:49:25 | → | ccapndave joins (~ccapndave@xcpe-62-167-164-99.cgn.res.adslplus.ch) |
| 15:51:14 | <dminuoso> | What is a `process` to you? |
| 15:51:41 | <Guest33> | `forkIO $ zthe-process>` |
| 15:52:15 | <dminuoso> | Guest33: Can you explain the problem you are having? |
| 15:52:44 | <dminuoso> | Im asking because there's a few different tools relating to exceptions, but the right choice depends on what you're trying to accomplish |
| 15:53:12 | <Guest33> | `ma `catch` (\some-exception -> do this-must-happen-atomically >> further-exceptions-are-fine-here)` |
| 15:53:28 | <Guest33> | I had a guess that `mask` might work, but it did not. |
| 15:53:58 | <dminuoso> | Okay, so mask can be pierced by so called interruptilbe operations. |
| 15:54:07 | <dminuoso> | mask should have better been called almostButNotQuiteMask |
| 15:54:21 | <dminuoso> | Guest33: can you share the exact code here? |
| 15:54:42 | <dminuoso> | because again, there may be different things wrong here. |
| 15:54:52 | <Guest33> | It is a bit contrived, so I don't think it would do anyone any good. I am using `throwTo` to throw a custom exception from one thread to another |
| 15:55:01 | <dminuoso> | Do show contrived code |
| 15:56:24 | <Guest33> | ``` |
| 15:56:25 | <Guest33> | reports <- catches (sequence (map (flip putMVar ()) barriers) >> sequence (map takeMVar results)) |
| 15:56:25 | <Guest33> | [ Handler $ \UserInterrupt -> do sequence $ map (flip throwTo UserInterrupt) tids |
| 15:56:26 | <Guest33> | sequence $ map takeMVar results |
| 15:56:26 | <Guest33> | , Handler $ \(ConcurrentAbort tid) -> do sequence $ map (flip throwTo (ConcurrentAbort pid)) (filter ((/=) tid) tids) |
| 15:56:27 | <Guest33> | sequence $ map takeMVar results |
| 15:56:27 | <Guest33> | ] |
| 15:56:28 | <Guest33> | ``` |
| 15:56:32 | <Guest33> | Hm the formatting never fired |
| 15:56:36 | <dminuoso> | Use https://paste.tomsmeding.com next time |
| 15:56:44 | <dminuoso> | Pasting large chunks can get you kicked off the IRC network |
| 15:56:51 | <Guest33> | Ah, I did not know that |
| 15:57:01 | <geekosaur> | and IRC doesn't do formatting |
| 15:57:23 | <Guest33> | Honestly, I thought it could handle it, because it `sometimes` formats stuff :P |
| 15:57:37 | <dminuoso> | Your client probably does. |
| 15:57:43 | <geekosaur> | some clients do, up to a point |
| 15:57:53 | <geekosaur> | but all bets are off with multiline stuff |
| 15:58:05 | <Guest33> | Ah this makes sense, thanks for clarifying |
| 15:58:12 | <dminuoso> | Guest33: alright, where did you try to mask? |
| 15:58:52 | → | eggplantade joins (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) |
| 15:58:54 | <dminuoso> | Guest33: And also, you probably want to use STM instead of exceptoins + mask + mvars. |
| 15:58:58 | → | nate4 joins (~nate@98.45.169.16) |
| 15:59:06 | <Guest33> | In the handler for `ConcurrentAbort`, I tried to mask the expression `sequence $ map (flip throwTo (ConcurrentAbort pid)) (filter ((/=) tid) tids) |
| 15:59:10 | × | ccapndave quits (~ccapndave@xcpe-62-167-164-99.cgn.res.adslplus.ch) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 15:59:15 | <dminuoso> | Yeah just use STM instead of all of this. |
| 15:59:22 | <Guest33> | I need this to happen in IO |
| 15:59:34 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 15:59:36 | → | merijn joins (~merijn@c-001-001-017.client.esciencecenter.eduvpn.nl) |
| 15:59:48 | <dminuoso> | Still |
| 15:59:54 | → | ccapndave joins (~ccapndave@xcpe-62-167-164-99.cgn.res.adslplus.ch) |
| 16:00:01 | <dminuoso> | You can set up the thread action in STM, and when it completes you run the IO action |
| 16:00:09 | → | snek joins (sid280155@id-280155.lymington.irccloud.com) |
| 16:00:13 | <snek> | is there a way to resolve dependency conflicts with cabal? |
| 16:00:16 | <dminuoso> | something like `atomically (waitForCondition ...) >> doIOThing` |
| 16:00:19 | × | ccapndave quits (~ccapndave@xcpe-62-167-164-99.cgn.res.adslplus.ch) (Client Quit) |
| 16:00:26 | <dminuoso> | snek: Uh sure. |
| 16:00:30 | <dminuoso> | snek: What conflict do you have? |
| 16:01:01 | <snek> | attoparsec depends on scientific depends on integer-logarithms depends on ghc-prim<0.10 but i have ghc-prim==0.10 installed |
| 16:01:32 | × | Guest33 quits (~Guest33@ext-1-087.eduroam.chalmers.se) (Quit: Connection closed) |
| 16:02:16 | × | lortabac quits (~lortabac@2a01:e0a:541:b8f0:77f5:99bc:10c3:3c4c) (Quit: WeeChat 2.8) |
| 16:02:28 | <dminuoso> | Is that GHC master? |
| 16:02:43 | <snek> | basically yeah |
| 16:03:01 | <sclv> | in this case i would use the --allow-newer flag |
| 16:03:27 | <sclv> | because likely integer-logarithms can work with a newer prim, but it hasn't been tested with it, on account of it is not yet released |
| 16:03:49 | × | nate4 quits (~nate@98.45.169.16) (Ping timeout: 260 seconds) |
| 16:03:51 | <sclv> | generally if you're working on ghc master, lots of libs will have conflicting bounds against it |
| 16:03:53 | <snek> | oh that flag seems perfect |
| 16:03:55 | <dminuoso> | At the same time its unlikely to get it in before GHC 9.6 has been released, since there could be future breakage. |
| 16:04:06 | <dminuoso> | snek: You can also vendor integer-logarithms and bump the bound |
| 16:04:12 | <dminuoso> | That will be more stable at the cost of more work |
| 16:04:34 | <sclv> | note that in general if you're working against GHC head you can point at https://ghc.gitlab.haskell.org/head.hackage/ |
| 16:04:45 | → | lucerne joins (~lucerne@5.113.148.245) |
| 16:04:48 | <sclv> | and often that'll have temp-patches for lots of nonupdated packages |
| 16:05:30 | <dminuoso> | That particular package has no patch available though |
| 16:05:37 | → | acidjnk_new joins (~acidjnk@p200300d6e7137a175929a180a95a2c61.dip0.t-ipconnect.de) |
| 16:05:38 | <sclv> | yep :-/ |
| 16:05:53 | <dminuoso> | But I guess you could make a pull request on that one |
| 16:05:54 | × | azimut quits (~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection) |
| 16:06:30 | → | ccapndave joins (~ccapndave@xcpe-62-167-164-99.cgn.res.adslplus.ch) |
| 16:06:44 | → | azimut joins (~azimut@gateway/tor-sasl/azimut) |
| 16:08:10 | × | azimut quits (~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection) |
| 16:08:44 | → | azimut joins (~azimut@gateway/tor-sasl/azimut) |
| 16:10:12 | × | eggplantade quits (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
| 16:10:15 | × | ccapndave quits (~ccapndave@xcpe-62-167-164-99.cgn.res.adslplus.ch) (Client Quit) |
| 16:10:39 | × | mei__ quits (~mei@user/mei) (Quit: mei__) |
| 16:10:58 | → | mei joins (~mei@user/mei) |
| 16:12:06 | → | ccapndave joins (~ccapndave@xcpe-62-167-164-99.cgn.res.adslplus.ch) |
| 16:12:08 | × | waleee quits (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 246 seconds) |
| 16:12:39 | × | cfricke quits (~cfricke@user/cfricke) (Quit: WeeChat 3.7.1) |
| 16:13:29 | × | hrberg quits (~quassel@171.79-160-161.customer.lyse.net) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.) |
| 16:13:48 | → | hrberg joins (~quassel@171.79-160-161.customer.lyse.net) |
| 16:15:19 | × | hrberg quits (~quassel@171.79-160-161.customer.lyse.net) (Client Quit) |
| 16:15:38 | → | hrberg joins (~quassel@171.79-160-161.customer.lyse.net) |
| 16:20:31 | × | __monty__ quits (~toonn@user/toonn) (Quit: leaving) |
| 16:21:51 | → | Guest75 joins (~Guest75@178.141.130.118) |
| 16:25:13 | × | yuribarros quits (~Srain@2804:14c:65e4:865c::1000) (Ping timeout: 252 seconds) |
| 16:26:34 | <AdamConner-Sax[m> | @snek You can also use a cabal.project file and put more specific "allow-newer" instructions in there. That can be helpful if you eventually want to drop the flag since you can keep narrowing the set. |
| 16:26:34 | <lambdabot> | I haven't seen You. |
| 16:29:15 | × | merijn quits (~merijn@c-001-001-017.client.esciencecenter.eduvpn.nl) (Ping timeout: 260 seconds) |
| 16:30:13 | × | azimut quits (~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection) |
| 16:30:49 | → | azimut joins (~azimut@gateway/tor-sasl/azimut) |
| 16:32:37 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 16:35:03 | → | titibandit joins (~titibandi@xdsl-78-34-153-165.nc.de) |
| 16:35:46 | × | ccapndave quits (~ccapndave@xcpe-62-167-164-99.cgn.res.adslplus.ch) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 16:36:25 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:5866:96fb:16f6:58d1) |
| 16:38:40 | → | ccapndave joins (~ccapndave@xcpe-62-167-164-99.cgn.res.adslplus.ch) |
| 16:40:50 | → | Inst_ joins (~Inst@2601:6c4:4081:54f0:681d:b835:8895:3ea8) |
| 16:41:12 | <Inst_> | ugh, FML |
| 16:41:29 | <Inst_> | I have three parts of my program that either don't work or I'm unsure as to whether it works |
| 16:42:19 | <Inst_> | the calculator for removed cards, the generator for maps (doesn't work), and the calculator that uses stuff from the maps (doesn't work) |
| 16:42:54 | <Inst_> | guess I have to learn stack and accelerate now |
| 16:43:03 | × | Inst quits (~Liam@c-98-208-218-119.hsd1.fl.comcast.net) (Killed (NickServ (GHOST command used by Inst_!~Inst@2601:6c4:4081:54f0:681d:b835:8895:3ea8))) |
| 16:43:04 | Inst_ | is now known as Inst |
| 16:43:25 | → | InstX1 joins (~Liam@2601:6c4:4081:54f0:c59f:75f5:30c:12fd) |
| 16:45:31 | → | razetime joins (~quassel@117.254.34.219) |
| 16:48:02 | × | ccapndave quits (~ccapndave@xcpe-62-167-164-99.cgn.res.adslplus.ch) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 16:48:20 | × | chromoblob quits (~user@37.113.164.122) (Ping timeout: 248 seconds) |
| 16:48:51 | → | chromoblob joins (~user@37.113.164.122) |
| 16:49:06 | → | yuribarros joins (~Srain@2804:14c:65e4:865c::1000) |
| 16:49:28 | → | ccapndave joins (~ccapndave@xcpe-62-167-164-99.cgn.res.adslplus.ch) |
| 16:51:21 | → | dfeuer joins (~dfeuer@pool-96-231-138-153.washdc.fios.verizon.net) |
| 16:51:39 | × | jonathanx quits (~jonathan@h-98-128-168-222.NA.cust.bahnhof.se) (Ping timeout: 260 seconds) |
| 16:52:23 | × | ccapndave quits (~ccapndave@xcpe-62-167-164-99.cgn.res.adslplus.ch) (Client Quit) |
| 16:53:47 | × | sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Ping timeout: 255 seconds) |
| 16:53:59 | <[exa]> | Inst: do they work in isolation? |
| 16:54:06 | <dfeuer> | Does hedgehog have some weird issues on GHC 9.4? |
| 16:54:33 | <Athas> | Inst: Accelerate doesn't work with cabal? |
| 16:54:57 | <Inst> | at least not on my machine |
| 16:55:01 | <dfeuer> | Or something? My test suite keeps hanging :-(. https://github.com/dagit/logict-sequence/actions/runs/3524962723/jobs/5912004000 |
| 16:55:05 | <Inst> | i don't really understand cabal so it's probably my fault anyways |
| 16:55:33 | → | zebrag joins (~chris@user/zebrag) |
| 16:56:04 | <dfeuer> | Now that *could* be just a matter of lots of unlucky test cases, but ... it looks pretty fishy. |
| 16:56:26 | <[exa]> | dfeuer: can you reproduce the hang locally? Otherwise I'd blame github. |
| 16:57:29 | <dfeuer> | [exa], I think I actually get hangs with more GHC versions locally, but I'm not sure.... |
| 16:57:45 | → | sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
| 16:57:53 | <Inst> | [exa] I have no clue, it's very hard to test my cases individually |
| 16:58:05 | <Inst> | because the reference numbers are on a website, I don't know how to grab the data from the website |
| 16:58:36 | <[exa]> | dfeuer: might be useful to catch it hanging and have a look at what it's doing (at least peek in gdb or with strace) |
| 16:58:41 | → | madjestic joins (~madjestic@77-63-89-78.mobile.kpn.net) |
| 16:59:02 | <dfeuer> | Inst, what is a ... website? Is it just where a spider builds its web? |
| 16:59:15 | <[exa]> | Inst: reference numbers to what? |
| 16:59:37 | <Inst> | http://www.bjstrat.net/cgi-bin/cdca.cgi |
| 17:00:14 | <dfeuer> | [exa], hoo boy. I haven't touched gdb in very many years, and was never exactly proficient. strace isn't a bad idea, I guess.... |
| 17:03:24 | → | jonathanx joins (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) |
| 17:04:30 | <[exa]> | dfeuer: even just e.g. peeking in /proc/$pid/fds might hint someting |
| 17:05:59 | <[exa]> | Inst: ah that's blackjack. is the algorithm for computing that described somewhere or you trying to reproduce it? |
| 17:06:19 | <Inst> | i'm trying to build my own algorithm |
| 17:07:52 | × | coot quits (~coot@213.134.171.3) (Quit: coot) |
| 17:08:23 | → | coot joins (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) |
| 17:08:29 | × | coot quits (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Remote host closed the connection) |
| 17:10:58 | → | causal joins (~user@2001:470:ea0f:3:329c:23ff:fe3f:1e0d) |
| 17:12:17 | × | azimut quits (~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection) |
| 17:12:54 | → | azimut joins (~azimut@gateway/tor-sasl/azimut) |
| 17:14:18 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:5866:96fb:16f6:58d1) (Remote host closed the connection) |
| 17:15:09 | × | razetime quits (~quassel@117.254.34.219) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.) |
| 17:15:29 | × | causal quits (~user@2001:470:ea0f:3:329c:23ff:fe3f:1e0d) (Ping timeout: 246 seconds) |
| 17:17:30 | → | eggplantade joins (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) |
| 17:17:32 | <dfeuer> | [exa], what would looking at file descriptors tell me? |
| 17:17:35 | × | madjestic quits (~madjestic@77-63-89-78.mobile.kpn.net) (Read error: Connection reset by peer) |
| 17:17:56 | <Inst> | jeez |
| 17:18:15 | <Inst> | why is it that installing HLS via github feels like installing the acme-everything package? |
| 17:19:25 | <geekosaur> | not just HLS |
| 17:19:51 | <geekosaur> | my xmonad config uses dbus and depends on half of hackage 😕 |
| 17:23:23 | <Franciman> | this is good modularity, at least, no? |
| 17:23:55 | × | teo quits (~teo@user/teo) (Ping timeout: 268 seconds) |
| 17:27:03 | <c_wraith> | hls looks like it has about 10 sub-packages |
| 17:27:23 | <c_wraith> | so it's definitely intended to be modular |
| 17:28:18 | → | ub joins (~Thunderbi@178.165.179.227.wireless.dyn.drei.com) |
| 17:29:06 | <fendor[m]> | we definitely have more than 10 packages, more like 20 |
| 17:29:13 | <fendor[m]> | quick grep says 39 🙂 |
| 17:29:26 | × | ubert1 quits (~Thunderbi@178.165.183.156.wireless.dyn.drei.com) (Ping timeout: 246 seconds) |
| 17:30:05 | <c_wraith> | oh. I was only counting the ones on hackage that are named hls-something |
| 17:30:22 | × | ubert quits (~Thunderbi@178.165.183.156.wireless.dyn.drei.com) (Ping timeout: 256 seconds) |
| 17:30:22 | ub | is now known as ubert |
| 17:31:10 | <fendor[m]> | that still should be around 30 |
| 17:31:22 | × | yoneda quits (~mike@193.206.102.122) (Quit: leaving) |
| 17:31:26 | <fendor[m]> | but it includes benchmark projects |
| 17:32:20 | <c_wraith> | Hmm. I'd say I'm just bad at estimating numbers of things in a list. |
| 17:35:52 | <fendor[m]> | tbf, some of the plugins aren't released yet |
| 17:36:26 | × | Guest75 quits (~Guest75@178.141.130.118) (Quit: Client closed) |
| 17:41:06 | × | eggplantade quits (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
| 17:45:00 | → | tzh joins (~tzh@c-24-21-73-154.hsd1.or.comcast.net) |
| 17:45:06 | × | nschoe quits (~q@2a01:e0a:8e:a190:13d9:919d:218e:b9d2) (Ping timeout: 256 seconds) |
| 17:49:04 | → | merijn joins (~merijn@c-001-001-017.client.esciencecenter.eduvpn.nl) |
| 17:50:46 | → | gmg joins (~user@user/gehmehgeh) |
| 17:56:21 | <Unhammer> | https://hackage.haskell.org/package/hevolisa how is this not named MonadLisa? I should report a bug |
| 17:58:11 | → | gqplox joins (~textual@2a02:c7c:941d:fd00:613f:9d6e:948c:2253) |
| 17:58:15 | × | FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection) |
| 17:58:57 | → | FinnElija joins (~finn_elij@user/finn-elija/x-0085643) |
| 18:02:22 | → | causal joins (~user@50.35.83.177) |
| 18:03:23 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 18:03:26 | × | causal quits (~user@50.35.83.177) (Client Quit) |
| 18:05:08 | → | eggplantade joins (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) |
| 18:06:51 | → | causal joins (~user@2001:470:ea0f:3:329c:23ff:fe3f:1e0d) |
| 18:08:04 | × | causal quits (~user@2001:470:ea0f:3:329c:23ff:fe3f:1e0d) (Client Quit) |
| 18:09:10 | × | werneta quits (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Ping timeout: 252 seconds) |
| 18:10:09 | → | causal joins (~user@2001:470:ea0f:3:329c:23ff:fe3f:1e0d) |
| 18:11:08 | × | ksu quits (~ksu@user/prtr) (Ping timeout: 252 seconds) |
| 18:11:14 | × | causal quits (~user@2001:470:ea0f:3:329c:23ff:fe3f:1e0d) (Client Quit) |
| 18:12:27 | → | ksu joins (~ksu@user/prtr) |
| 18:12:57 | → | causal joins (~user@50.35.83.177) |
| 18:13:27 | → | ddellacosta joins (~ddellacos@143.244.47.82) |
| 18:15:43 | × | Xeroine quits (~Xeroine@user/xeroine) (Ping timeout: 268 seconds) |
| 18:18:32 | × | merijn quits (~merijn@c-001-001-017.client.esciencecenter.eduvpn.nl) (Ping timeout: 256 seconds) |
| 18:20:01 | → | Xeroine joins (~Xeroine@user/xeroine) |
| 18:21:23 | × | gmg quits (~user@user/gehmehgeh) (Remote host closed the connection) |
| 18:22:04 | → | gmg joins (~user@user/gehmehgeh) |
| 18:22:06 | × | sawilagar quits (~sawilagar@user/sawilagar) (Quit: Leaving) |
| 18:24:49 | × | beteigeuze quits (~Thunderbi@a79-169-109-107.cpe.netcabo.pt) (Ping timeout: 252 seconds) |
| 18:25:48 | <snek> | how does one vendor a dependency with cabal |
| 18:28:15 | → | coot joins (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) |
| 18:28:31 | <geekosaur> | list its cabal file (or directory containing one) in a "packages:" entry in cabal.project |
| 18:28:37 | → | kenaryn joins (~aurele@89-88-44-27.abo.bbox.fr) |
| 18:28:44 | <geekosaur> | https://github.com/geekosaur/xmonad.hs/blob/skkukuk/cabal.project |
| 18:30:10 | <snek> | how does this work with like |
| 18:30:16 | → | econo joins (uid147250@user/econo) |
| 18:30:16 | <snek> | my `foo.cabal` file |
| 18:31:24 | → | Guest75 joins (~Guest75@178.141.130.118) |
| 18:31:44 | <geekosaur> | first entry in my packages: line points to the directory with my cabal file. the rest are git checkouts. there are also ways to tell cabal to clone repos itself at specific branches/tags/commits |
| 18:32:32 | <geekosaur> | https://cabal.readthedocs.io/en/3.8/cabal-project.html#specifying-packages-from-remote-version-control-locations |
| 18:35:26 | × | kenaryn quits (~aurele@89-88-44-27.abo.bbox.fr) (Quit: leaving) |
| 18:37:31 | <snek> | i just have folders |
| 18:38:25 | <geekosaur> | then just list the folders, as I do |
| 18:38:48 | <snek> | i did that |
| 18:39:12 | <snek> | what do i do with the `build-depends` field in my main cabal file |
| 18:39:50 | × | jrm quits (~jrm@user/jrm) (Read error: Connection reset by peer) |
| 18:40:01 | <geekosaur> | list the dependencies as usual, of course your versions should match those of the vendored deps (or simply be absent but that's rarely a good idea) |
| 18:40:02 | → | jrm2 joins (~jrm@user/jrm) |
| 18:40:19 | × | sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Read error: Connection reset by peer) |
| 18:40:51 | <snek> | ok cool, ty |
| 18:40:52 | → | nschoe joins (~q@2a01:e0a:8e:a190:547b:7f8b:8da2:2f93) |
| 18:41:22 | jrm2 | is now known as jrm |
| 18:41:25 | → | sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
| 18:42:44 | <geekosaur> | that branch of my repo is a complete working project |
| 18:45:19 | → | bilegeek joins (~bilegeek@2600:1008:b05b:8372:5c1:76fe:2ae1:5709) |
| 18:48:57 | → | king_gs joins (~Thunderbi@187.201.139.206) |
| 19:00:23 | × | ec quits (~ec@gateway/tor-sasl/ec) (Remote host closed the connection) |
| 19:00:59 | → | wootehfoot joins (~wootehfoo@user/wootehfoot) |
| 19:01:01 | <snek> | does anyone know what this error means? google is empty :( `Couldn't find a target code interpreter. Try with -fexternal-interpreter [11 of 67] Compiling TextShow.Data.Either ( src/TextShow/Data/Either.hs, /home/snek/code/random/ducklingjs/dist-newstyle/build/wasm32-wasi/ghc-9.5.20221116/text-show-3.10/build/TextShow/Data/Either.o )` |
| 19:01:10 | → | ec joins (~ec@gateway/tor-sasl/ec) |
| 19:04:32 | <[exa]> | snek: that's from something ghci-ish? |
| 19:05:09 | <snek> | its an error from my running `cabal build` |
| 19:05:24 | × | MajorBiscuit quits (~MajorBisc@86-88-79-148.fixed.kpn.net) (Ping timeout: 248 seconds) |
| 19:05:50 | × | Guest75 quits (~Guest75@178.141.130.118) (Quit: Client closed) |
| 19:07:10 | <[exa]> | snek: the interpreter is used when you need to interpret some code on spot, not just compile it (see here: https://gitlab.haskell.org/ghc/ghc/-/wikis/commentary/compiler/external-interpreter) |
| 19:07:18 | <[exa]> | hm maybe there's TemplateHaskell ? |
| 19:07:28 | × | chromoblob quits (~user@37.113.164.122) (Ping timeout: 252 seconds) |
| 19:07:35 | <snek> | i don't know what TemplateHaskell is but |
| 19:07:58 | <snek> | adding `-fexternal-interpreter` to my cabal build call didn't work |
| 19:08:02 | <[exa]> | ah yes there is. https://hackage.haskell.org/package/text-show-3.3/docs/src/TextShow-Data-Either.html |
| 19:09:04 | <[exa]> | you might need to ask the ghc-wasm people about that, given the whole thing is very new |
| 19:09:06 | <geekosaur> | note that the wasm backend is still new and it's possible this doesn't work quite yet |
| 19:09:40 | <snek> | so this is like, some sort of existential problem that i can't fix on my end? |
| 19:10:09 | → | chromoblob joins (~user@37.113.164.122) |
| 19:10:30 | <snek> | i'm ok with vendoring stuff to fix it to work with wasm |
| 19:10:41 | <snek> | i just rewrote the entire `clock` library lol |
| 19:10:47 | <[exa]> | yeah, stuff with TemplateHaskell looks like it's not going to compile for WASM anytime soon, see the note below here: https://www.tweag.io/blog/2022-11-22-wasm-backend-merged-in-ghc/ |
| 19:11:45 | <[exa]> | anyway you might have some limited luck with just rewriting the TH stuff in the packages by hand |
| 19:11:45 | <snek> | what is TemplateHaskell about the file you linked? |
| 19:11:53 | × | gregberns__ quits (sid315709@id-315709.helmsley.irccloud.com) (Quit: Connection closed for inactivity) |
| 19:11:58 | <[exa]> | see slightly below |
| 19:12:00 | <snek> | i see it contains `LANGUAGE TemplateHaskell` at the top |
| 19:12:17 | <snek> | i'm not sure what that implies of the code in the file though |
| 19:12:23 | <snek> | i should note i'm not familiar with haskell in general |
| 19:12:23 | <[exa]> | yes, I just wanted to confirm that it really fails on a TH one |
| 19:12:58 | <[exa]> | TH is kinda like a very advanced macro system, basically metacompilation that makes various stuff insanely easier and saves a lot of code |
| 19:13:16 | <[exa]> | (at the cost that your compiler needs to interpret code instead of just compiling it) |
| 19:13:25 | <geekosaur> | there were several TH splices at the bottom |
| 19:13:48 | <geekosaur> | the $$(derive…) lines |
| 19:13:56 | × | freeside quits (~mengwong@103.252.202.193) (Ping timeout: 248 seconds) |
| 19:14:08 | × | irrgit_ quits (~irrgit@89.47.234.74) (Remote host closed the connection) |
| 19:14:36 | <snek> | ic |
| 19:14:59 | → | irrgit_ joins (~irrgit@146.70.27.250) |
| 19:15:40 | → | merijn joins (~merijn@c-001-001-017.client.esciencecenter.eduvpn.nl) |
| 19:15:45 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 19:16:10 | <snek> | could i theoretically pre-macro this in another normal not-experimental ghc? |
| 19:16:16 | <snek> | i've done a similar trick with expanding macros in c before |
| 19:16:40 | <geekosaur> | you could try compiling with -ddump=splices |
| 19:16:42 | <snek> | where you just generate a huge output c file from all the input c files |
| 19:16:49 | <geekosaur> | er, -ddump-splices |
| 19:17:07 | <geekosaur> | back in the day there was zeroth but it's long bitrotted |
| 19:17:35 | × | ec quits (~ec@gateway/tor-sasl/ec) (Remote host closed the connection) |
| 19:18:05 | → | ec joins (~ec@gateway/tor-sasl/ec) |
| 19:18:43 | → | jtomas joins (~jtomas@191.red-88-17-199.dynamicip.rima-tde.net) |
| 19:21:05 | × | `2jt quits (~jtomas@191.red-88-17-199.dynamicip.rima-tde.net) (Ping timeout: 246 seconds) |
| 19:22:54 | → | freeside joins (~mengwong@103.252.202.193) |
| 19:25:28 | <snek> | wow this generates a lot of code lmao |
| 19:29:30 | × | freeside quits (~mengwong@103.252.202.193) (Ping timeout: 255 seconds) |
| 19:30:57 | × | coot quits (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot) |
| 19:33:37 | → | madjestic joins (~madjestic@88-159-247-120.fixed.kpn.net) |
| 19:34:33 | <probie> | How do I write a type signature for a pattern synonym over a GADT? If I just use what the warning says the type should be, I suddenly get a type error |
| 19:36:38 | → | freeside joins (~mengwong@103.252.202.193) |
| 19:37:37 | <probie> | It says "Pattern synonym with no type signature: pattern Step :: forall {p :: Bool} {i} {o}.() => (p ~ 'True) => i -> [i] -> NonEmpty o -> Accumulator p i o", but if I add it, at usage sites I get "Couldn't match type ‘p’ with ‘'True’" |
| 19:38:14 | <probie> | the error actually makes sense - it can't unify p with 'True until after the match succeeds |
| 19:39:41 | <probie> | I'm slightly more confused about how it allows `Step` to work when there is no type signature. Are patterns without type signatures "unfolded" before type checking? |
| 19:40:12 | × | king_gs quits (~Thunderbi@187.201.139.206) (Ping timeout: 268 seconds) |
| 19:41:55 | <EvanR> | that seems like a lot of type signature to say i -> [i] -> NonEmpty o -> Accumulator True i o |
| 19:42:40 | × | belovachap quits (~chapman@216-188-233-105.dyn.grandenetworks.net) (Ping timeout: 268 seconds) |
| 19:43:48 | <EvanR> | and yeah it makes sense |
| 19:44:21 | × | causal quits (~user@50.35.83.177) (Quit: WeeChat 3.7.1) |
| 19:46:19 | × | eggplantade quits (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
| 19:46:39 | → | causal joins (~user@50.35.83.177) |
| 19:47:02 | <EvanR> | use ghci to print out the inferred type of Step? |
| 19:47:50 | <probie> | What I want is to be able to specify separate types for the actual pattern (which is forall p . i -> [i] -> NonEmpty o -> Accumulator p i o) and the "function" (i -> [i] -> NonEmpty o -> Accumulator 'True i o) |
| 19:48:10 | × | merijn quits (~merijn@c-001-001-017.client.esciencecenter.eduvpn.nl) (Ping timeout: 260 seconds) |
| 19:48:18 | <probie> | ghci correctly gives "Step :: i -> [i] -> NonEmpty o -> Accumulator 'True i o", and the warning correctly (with noise) gives the type of the pattern |
| 19:48:24 | pierrot_ | is now known as pierrot |
| 19:48:25 | <probie> | I just can't see a way to manually specify both |
| 19:48:56 | → | lyle joins (~lyle@104.246.145.85) |
| 19:51:05 | → | lisbeths joins (uid135845@id-135845.lymington.irccloud.com) |
| 19:55:00 | <probie> | In practice it doesn't matter, since in my use case https://paste.tomsmeding.com/Gb2uDWdY `Step` is not really meant to be used a constructor, so the pattern doesn't need to be bidirectional, but I'm still stuck wondering if there's a way to do it |
| 19:58:29 | → | Unicorn_Princess joins (~Unicorn_P@user/Unicorn-Princess/x-3540542) |
| 20:00:25 | × | fserucas quits (~fserucas@2001:818:e376:a400:fb92:70c1:dd88:c7d7) (Quit: Leaving) |
| 20:01:34 | <probie> | I've got it. It just took reading through the docs. pattern Step :: () => (p ~ 'True) => i -> [i] -> NonEmpty o -> Accumulator p i o; pattern Step i is o <- Next (i:is) o where Step i is o = Next (i:is) o |
| 20:01:42 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:5866:96fb:16f6:58d1) |
| 20:02:16 | <probie> | The first `() =>` was mandatory and I had to use the `pattern Foo <- ... where Foo = ...` syntax instead of `pattern Foo = ...` |
| 20:02:28 | × | raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 248 seconds) |
| 20:04:44 | → | coot joins (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) |
| 20:04:46 | <EvanR> | weird |
| 20:08:37 | <probie> | Ok, now I'm going insane, apparently I can use the `pattern Foo = ...` syntax |
| 20:10:32 | <probie> | and the type that provided by the warning that I directly pasted in works |
| 20:11:17 | × | Vajb quits (~Vajb@2001:999:504:3ad6:52a4:a3b5:32d8:e74d) (Read error: Connection reset by peer) |
| 20:11:43 | → | Vajb joins (~Vajb@hag-jnsbng11-58c3a5-27.dhcp.inet.fi) |
| 20:11:48 | <probie> | They key part was the first `() =>` though |
| 20:12:01 | → | thyriaen joins (~thyriaen@2a01:aea0:dd4:470d:6245:cbff:fe9f:48b1) |
| 20:12:17 | → | ukj joins (~todor@45.222.24.171) |
| 20:13:11 | <geekosaur> | yes, first is wanteds, second is provideds |
| 20:14:00 | <geekosaur> | so this one wants nothing and matching it gives you p ~ 'True, iirc |
| 20:14:13 | → | waleee joins (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) |
| 20:14:39 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 20:15:22 | × | ukj quits (~todor@45.222.24.171) (Client Quit) |
| 20:15:22 | → | sawilagar joins (~sawilagar@user/sawilagar) |
| 20:15:32 | <probie> | Yes, that matches what I've read and seems to match what I'm doing. I'm just not sure why what I originally wrote didn't work since my code seems to back to where it started but now it's type checking |
| 20:17:03 | <probie> | All I can think of is that I dropped the `() =>` without thinking about it. It's 7:15am - if I'm braindead already this doesn't bode well for my work day |
| 20:18:27 | <snek> | in this text show package, one of the templates generated a reference to `Data.Text.Internal.Fusion.Size.Between` |
| 20:18:44 | <snek> | but in the expansion of that, i get `Module ‘Data.Text.Internal.Fusion.Size’ does not export ‘Between’.` |
| 20:20:34 | <geekosaur> | hm. TH can cheat and see stuff that isn't otherwise visible, but it's usually not this blatant iirc |
| 20:21:22 | <snek> | is this entire `show` thing just for generating debug strings of Text instances? |
| 20:21:50 | <snek> | i could just mock this stuff out |
| 20:22:12 | <geekosaur> | yes |
| 20:22:14 | × | azimut quits (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 255 seconds) |
| 20:22:31 | <geekosaur> | oh, also what version of Text are you working with? this may have changed in text-2.0 |
| 20:22:47 | <geekosaur> | I note the module is from 2016 so might not have been updated |
| 20:22:51 | → | merijn joins (~merijn@c-001-001-017.client.esciencecenter.eduvpn.nl) |
| 20:22:56 | <geekosaur> | (or at least so the copyright claims) |
| 20:22:58 | <snek> | 3.10 |
| 20:23:58 | <geekosaur> | uh? 2.0.1 is latest https://hackage.haskell.org/package/text |
| 20:24:28 | <snek> | oh text itself |
| 20:24:35 | <snek> | how do i check what version got pulled in |
| 20:25:59 | <snek> | oh its definitely not 2 |
| 20:26:06 | <snek> | duckling limits this to <1.3 |
| 20:26:23 | → | azimut joins (~azimut@gateway/tor-sasl/azimut) |
| 20:26:55 | <geekosaur> | I see Between in 2.0.1's source but indeed it's not exported |
| 20:27:25 | <snek> | i think i am going to just go into duckling and delete all this code that depends on show-text |
| 20:27:41 | × | merijn quits (~merijn@c-001-001-017.client.esciencecenter.eduvpn.nl) (Ping timeout: 268 seconds) |
| 20:27:52 | <snek> | its not even that much |
| 20:28:37 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:5866:96fb:16f6:58d1) (Remote host closed the connection) |
| 20:28:55 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:5866:96fb:16f6:58d1) |
| 20:37:39 | → | dignissimus joins (~sam@user/dignissimus) |
| 20:45:18 | × | lyle quits (~lyle@104.246.145.85) (Quit: WeeChat 3.7.1) |
| 20:49:21 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 20:49:56 | × | freeside quits (~mengwong@103.252.202.193) (Ping timeout: 248 seconds) |
| 20:50:50 | × | dfeuer quits (~dfeuer@pool-96-231-138-153.washdc.fios.verizon.net) (Quit: Client closed) |
| 20:52:32 | × | dignissimus quits (~sam@user/dignissimus) (Quit: QUIT) |
| 20:55:27 | ← | jakalx parts (~jakalx@base.jakalx.net) () |
| 20:55:43 | → | jakalx joins (~jakalx@base.jakalx.net) |
| 20:56:39 | → | Guest60 joins (~Guest60@149.159.207.218) |
| 20:58:28 | → | fserucas joins (~fserucas@2001:818:e376:a400:fb92:70c1:dd88:c7d7) |
| 20:58:31 | × | fserucas quits (~fserucas@2001:818:e376:a400:fb92:70c1:dd88:c7d7) (Client Quit) |
| 21:00:22 | × | sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.) |
| 21:01:16 | × | hgolden quits (~hgolden@cpe-172-251-233-141.socal.res.rr.com) (Remote host closed the connection) |
| 21:01:53 | → | sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
| 21:02:29 | → | caryhartline joins (~caryhartl@2603-8080-6a0e-8d88-c90e-511a-79c3-1695.res6.spectrum.com) |
| 21:04:02 | → | pavonia joins (~user@user/siracusa) |
| 21:07:14 | × | azimut quits (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 255 seconds) |
| 21:08:11 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:5866:96fb:16f6:58d1) (Remote host closed the connection) |
| 21:09:02 | × | gmg quits (~user@user/gehmehgeh) (Ping timeout: 255 seconds) |
| 21:09:38 | → | azimut joins (~azimut@gateway/tor-sasl/azimut) |
| 21:10:27 | → | gmg joins (~user@user/gehmehgeh) |
| 21:11:10 | → | Lycurgus joins (~juan@user/Lycurgus) |
| 21:12:16 | → | dtman34 joins (~dtman34@76.156.89.180) |
| 21:14:26 | × | titibandit quits (~titibandi@xdsl-78-34-153-165.nc.de) (Remote host closed the connection) |
| 21:16:06 | × | Lycurgus quits (~juan@user/Lycurgus) (Quit: Exeunt https://tinyurl.com/4m8d4kd5) |
| 21:16:19 | → | freeside joins (~mengwong@103.252.202.193) |
| 21:17:11 | → | zer0bitz_ joins (~zer0bitz@196.244.192.58) |
| 21:17:31 | → | hgolden joins (~hgolden@cpe-172-251-233-141.socal.res.rr.com) |
| 21:20:07 | × | gqplox quits (~textual@2a02:c7c:941d:fd00:613f:9d6e:948c:2253) (Quit: Textual IRC Client: www.textualapp.com) |
| 21:20:44 | × | zer0bitz quits (~zer0bitz@196.244.192.59) (Ping timeout: 268 seconds) |
| 21:20:52 | × | freeside quits (~mengwong@103.252.202.193) (Ping timeout: 248 seconds) |
| 21:21:27 | → | king_gs joins (~Thunderbi@2806:103e:29:bfeb:c988:bbd5:2586:4924) |
| 21:25:03 | → | merijn joins (~merijn@c-001-001-017.client.esciencecenter.eduvpn.nl) |
| 21:27:46 | × | chromoblob quits (~user@37.113.164.122) (Read error: Connection reset by peer) |
| 21:30:14 | → | belovachap joins (~chapman@216-188-233-105.dyn.grandenetworks.net) |
| 21:33:07 | → | freeside joins (~mengwong@103.252.202.193) |
| 21:34:41 | × | FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 255 seconds) |
| 21:36:02 | → | FinnElija joins (~finn_elij@user/finn-elija/x-0085643) |
| 21:37:24 | → | thyriaen_ joins (~thyriaen@2a01:aea0:dd4:470d:6245:cbff:fe9f:48b1) |
| 21:37:26 | × | thyriaen_ quits (~thyriaen@2a01:aea0:dd4:470d:6245:cbff:fe9f:48b1) (Remote host closed the connection) |
| 21:39:09 | × | Vajb quits (~Vajb@hag-jnsbng11-58c3a5-27.dhcp.inet.fi) (Read error: Connection reset by peer) |
| 21:39:22 | <dminuoso> | % f :: forall (r :: ZeroBitType) (s :: r). s -> () |
| 21:39:22 | <yahb2> | <interactive>:34:38: error: ; • Expecting a lifted type, but ‘r’ is unlifted ; • In the kind ‘r’ ; In an expression type signature: ; forall (r :: ZeroBitType) (s :: r). s -> ... |
| 21:39:25 | <dminuoso> | Why am I getting this error? |
| 21:39:49 | <dminuoso> | type ZeroBitType = TYPE ZeroBitRep |
| 21:39:51 | <dminuoso> | type ZeroBitRep = 'TupleRep ('[] :: [RuntimeRep]) |
| 21:40:03 | <dminuoso> | These two bindings we defined prior to this, as yahb2 is running on an older GHC |
| 21:41:13 | <dminuoso> | How does this make any sense, GHC is suggesting that this kind (i.e. the type of a type) to be unlifted - I do not even know what that means. |
| 21:41:48 | → | Vajb joins (~Vajb@2001:999:504:3ad6:52a4:a3b5:32d8:e74d) |
| 21:45:24 | × | belovachap quits (~chapman@216-188-233-105.dyn.grandenetworks.net) (Ping timeout: 248 seconds) |
| 21:46:12 | × | thyriaen quits (~thyriaen@2a01:aea0:dd4:470d:6245:cbff:fe9f:48b1) (Quit: Leaving) |
| 21:47:23 | <jackdk> | Can anyone recommend a good idiom for performing a three-deep nested record update? I'm normally on team "just use lens" but this is for a library that wants to eventually become lens/optics agnostic. I'm currently leaning towards writing `updateFoo :: (Foo -> Foo) -> Bar -> Bar` etc and composing them, but it feels a bit messy. Happy to use extensions that are in 8.10.7 or later - `RecordWildCards` etc are fine, `RecordDotSyntax` is not. |
| 21:48:30 | × | mmhat quits (~mmh@p200300f1c72dc6ddee086bfffe095315.dip0.t-ipconnect.de) (Ping timeout: 240 seconds) |
| 21:48:53 | → | mmhat joins (~mmh@p200300f1c72dc696ee086bfffe095315.dip0.t-ipconnect.de) |
| 21:49:07 | <dminuoso> | jackdk: You can do a Van Laarhoven style lens regardless. Recall that `over = coerce`. |
| 21:49:20 | <Hecate> | jackdk: gradually update the sub-records until you update the top-level record |
| 21:49:24 | <dminuoso> | dont need to depend on lens just for that. |
| 21:49:42 | <dminuoso> | Its agnostic, and optics/lens users can seamingly use it too. |
| 21:50:46 | <jackdk> | "Recall that `over = coerce`" - can you elaborate further? This is new to me, though I'm pretty OK with writing VL lenses directly. |
| 21:51:19 | <jackdk> | Hecate: are you describing an idiom that I do not understand, or are you saying that the simplest way to do the thing it just to do the thing? |
| 21:51:33 | <Hecate> | jackdk: the latter yes |
| 21:51:34 | <dminuoso> | jackdk: https://gist.github.com/dminuoso/2c4677f3c1bcd05e0c72eeadc6c2e148 |
| 21:52:03 | <dminuoso> | Writing lenses by hand is quite trivial and looks nice as well. |
| 21:52:18 | × | Guest60 quits (~Guest60@149.159.207.218) (Ping timeout: 260 seconds) |
| 21:53:03 | <dminuoso> | And `view l = getConst #. l Const` |
| 21:53:13 | <jackdk> | The library I'm tinkering with and its reverse dependencies are moving away from providing most optics, and instead moving towards providing `Generic` instances. While I could keep lenses around, it feels a bit against that goal. |
| 21:53:26 | <dminuoso> | For symmetry you can also just write out over |
| 21:53:28 | <dminuoso> | `over l f = runIdentity #. l (Identity #. f)` |
| 21:53:30 | <jackdk> | I see now why `over = coerce`; thanks for that. Still means I have to get the lens from somewhere. |
| 21:53:45 | → | belovachap joins (~chapman@216-188-233-105.dyn.grandenetworks.net) |
| 21:57:40 | × | merijn quits (~merijn@c-001-001-017.client.esciencecenter.eduvpn.nl) (Ping timeout: 248 seconds) |
| 22:00:26 | <gurkenglas> | Is there any library that uses arcane trickery to construct the pullback of two functions a->c and b->c? |
| 22:00:45 | <jackdk> | What's a pullback of two functions? |
| 22:01:05 | <gurkenglas> | the type of pairs (a,b) that map to the same c |
| 22:01:43 | <gurkenglas> | the arcane trickery might be something like "can't enforce that equality on the type level directly, but here's a type with which you can do the same things" |
| 22:01:55 | × | king_gs quits (~Thunderbi@2806:103e:29:bfeb:c988:bbd5:2586:4924) (Remote host closed the connection) |
| 22:02:15 | → | king_gs joins (~Thunderbi@2806:103e:29:bfeb:c988:bbd5:2586:4924) |
| 22:02:26 | <jackdk> | If you want to enumerate those values, you could do it with no guarantee of timely termination by using https://hackage.haskell.org/package/universe |
| 22:02:39 | <gurkenglas> | i don't |
| 22:03:16 | <gurkenglas> | i don't even want to require Eq |
| 22:03:30 | × | belovachap quits (~chapman@216-188-233-105.dyn.grandenetworks.net) (Ping timeout: 260 seconds) |
| 22:03:40 | <jackdk> | *shrug* dunno then |
| 22:03:57 | <gurkenglas> | i realize that i'm asking for grand wizardry here but some part of me would be entirely unsurprised if this is possible anyway |
| 22:07:28 | <gurkenglas> | subtask 1 then, i guess: get Eq without boolean blindness |
| 22:07:42 | money | is now known as polo |
| 22:07:45 | → | ft joins (~ft@p508dbd59.dip0.t-ipconnect.de) |
| 22:08:41 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:5866:96fb:16f6:58d1) |
| 22:13:17 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:5866:96fb:16f6:58d1) (Ping timeout: 255 seconds) |
| 22:14:22 | <gurkenglas> | perhaps... data Commutes a b where ______("witness that there is precisely one function that can be constructed with the tools available from a to b, up to equality")_____; data Pullback a b c where Pullback :: (a->c) -> (b->c) -> forall x. (x->a) -> (x->b) -> Commutes x c -> x -> Pullback a b c |
| 22:14:45 | <dminuoso> | gurkenglas: is this possibly helpful? https://gist.github.com/TOTBWF/0078c21c498e31429f3b4da74453d79d |
| 22:14:56 | × | wootehfoot quits (~wootehfoo@user/wootehfoot) (Read error: Connection reset by peer) |
| 22:15:32 | × | albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection) |
| 22:16:49 | <gurkenglas> | is there some way to construct that a type X has exactly one element? an element constructs that there is at least one... |
| 22:18:04 | × | motherfsck quits (~motherfsc@user/motherfsck) (Ping timeout: 268 seconds) |
| 22:18:26 | → | jmdaemon joins (~jmdaemon@user/jmdaemon) |
| 22:21:17 | × | michalz quits (~michalz@185.246.207.197) (Remote host closed the connection) |
| 22:21:39 | → | albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8) |
| 22:26:03 | × | coot quits (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot) |
| 22:27:00 | <gurkenglas> | perhaps you can say "X has at least two elements" with something like "forall a b. if a and b are not empty then there exists some X->a+b, though I can't construct it, such that if i had it i could make (a,b)" |
| 22:28:36 | <gurkenglas> | dminuoso: I suppose Refl does the job, though how would you ever get Refl (map f . map g) (map (f . g))? |
| 22:30:34 | × | opticblast quits (~Thunderbi@secure-165.caltech.edu) (Ping timeout: 260 seconds) |
| 22:33:04 | → | motherfsck joins (~motherfsc@user/motherfsck) |
| 22:36:34 | × | freeside quits (~mengwong@103.252.202.193) (Ping timeout: 268 seconds) |
| 22:37:22 | → | opticblast joins (~Thunderbi@secure-165.caltech.edu) |
| 22:39:51 | × | caryhartline quits (~caryhartl@2603-8080-6a0e-8d88-c90e-511a-79c3-1695.res6.spectrum.com) (Quit: caryhartline) |
| 22:41:56 | × | gurkenglas quits (~gurkengla@p548ac72e.dip0.t-ipconnect.de) (Ping timeout: 248 seconds) |
| 22:42:26 | → | belovachap joins (~chapman@216-188-233-105.dyn.grandenetworks.net) |
| 22:45:20 | × | stiell quits (~stiell@gateway/tor-sasl/stiell) (Ping timeout: 255 seconds) |
| 22:46:36 | × | king_gs quits (~Thunderbi@2806:103e:29:bfeb:c988:bbd5:2586:4924) (Ping timeout: 255 seconds) |
| 22:48:39 | → | freeside joins (~mengwong@103.252.202.193) |
| 22:51:19 | × | zebrag quits (~chris@user/zebrag) (Ping timeout: 252 seconds) |
| 22:52:10 | → | sammelweis_ joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
| 22:52:27 | × | sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Read error: Connection reset by peer) |
| 22:53:19 | × | freeside quits (~mengwong@103.252.202.193) (Ping timeout: 260 seconds) |
| 22:54:26 | → | merijn joins (~merijn@c-001-001-017.client.esciencecenter.eduvpn.nl) |
| 22:54:56 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 22:56:02 | → | raoul3 joins (~raoul@95.179.203.88) |
| 22:56:12 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 22:56:25 | → | tabemann_ joins (~tabemann@2600:1700:7990:24e0:a94c:868e:1baa:b99f) |
| 22:56:28 | → | parseval_ joins (sid239098@id-239098.helmsley.irccloud.com) |
| 22:56:30 | → | sclv_ joins (sid39734@haskell/developer/sclv) |
| 22:56:41 | → | siers69 joins (~ij@user/ij) |
| 22:56:51 | → | snek_ joins (sid280155@id-280155.lymington.irccloud.com) |
| 22:56:52 | → | scav_ joins (sid309693@user/scav) |
| 22:56:55 | → | lll joins (~o@user/offon) |
| 22:57:00 | → | maerwald_ joins (~maerwald@mail.hasufell.de) |
| 22:57:09 | → | sajith_ joins (~sajith@user/sajith) |
| 22:57:12 | → | sunarch_ joins (sid526836@user/sunarch) |
| 22:58:15 | → | stiell joins (~stiell@gateway/tor-sasl/stiell) |
| 22:58:27 | → | pie__ joins (~pie_bnc@user/pie/x-2818909) |
| 22:58:33 | → | ladyfriday joins (~robert@what.i.hope.is.not.a.tabernaevagant.es) |
| 22:58:33 | → | kawen_ joins (~quassel@static.208.191.216.95.clients.your-server.de) |
| 22:58:43 | → | Batzy_ joins (~quassel@user/batzy) |
| 22:59:07 | → | mjacob_ joins (~mjacob@adrastea.uberspace.de) |
| 22:59:15 | → | Patternm1ster joins (~georg@li1192-118.members.linode.com) |
| 22:59:15 | → | kawzeg_ joins (kawzeg@2a01:7e01::f03c:92ff:fee2:ec34) |
| 22:59:24 | → | ncf_ joins (~n@monade.li) |
| 22:59:25 | → | RemiYuko joins (~licht@user/akechishiro) |
| 22:59:29 | → | robbert joins (~robbert@robbertvanderhelm.nl) |
| 22:59:32 | → | AWizzArd_ joins (~code@gehrels.uberspace.de) |
| 22:59:39 | → | mtjm_ joins (~mutantmel@2604:a880:2:d0::208b:d001) |
| 22:59:50 | → | darchitect1 joins (~darchitec@2a00:23c6:3584:df01:8400:aa62:2730:49fa) |
| 23:00:07 | → | ddb1 joins (~ddb@tilde.club) |
| 23:00:08 | × | gmg quits (~user@user/gehmehgeh) (Quit: Leaving) |
| 23:00:35 | → | x22x22x joins (~x88x88x@2001:19f0:5:39a8:5400:3ff:feb6:73cb) |
| 23:03:00 | → | cyphase_eviltwin joins (~cyphase@user/cyphase) |
| 23:04:34 | × | romes[m] quits (~romesmatr@2001:470:69fc:105::2:1660) (*.net *.split) |
| 23:04:34 | × | Tisoxin quits (~ikosit@user/ikosit) (*.net *.split) |
| 23:04:34 | × | sm quits (~sm@plaintextaccounting/sm) (*.net *.split) |
| 23:04:34 | × | psydroid quits (~psydroid@user/psydroid) (*.net *.split) |
| 23:04:34 | × | famubu[m] quits (~famubumat@2001:470:69fc:105::1081) (*.net *.split) |
| 23:04:34 | × | snek quits (sid280155@id-280155.lymington.irccloud.com) (*.net *.split) |
| 23:04:35 | × | sclv quits (sid39734@haskell/developer/sclv) (*.net *.split) |
| 23:04:35 | × | scav quits (sid309693@user/scav) (*.net *.split) |
| 23:04:35 | × | Batzy quits (~quassel@user/batzy) (*.net *.split) |
| 23:04:35 | × | kimjetwav quits (~user@2607:fea8:235e:b600:a711:1a92:88bb:85cd) (*.net *.split) |
| 23:04:35 | × | darchitect quits (~darchitec@2a00:23c6:3584:df01:d84a:e6ea:9bdf:965a) (*.net *.split) |
| 23:04:35 | × | pie_ quits (~pie_bnc@user/pie/x-2818909) (*.net *.split) |
| 23:04:35 | × | AkechiShiro quits (~licht@user/akechishiro) (*.net *.split) |
| 23:04:35 | × | nisstyre quits (wes@user/nisstyre) (*.net *.split) |
| 23:04:35 | × | maerwald quits (~maerwald@mail.hasufell.de) (*.net *.split) |
| 23:04:35 | × | robbert-vdh quits (~robbert@robbertvanderhelm.nl) (*.net *.split) |
| 23:04:35 | × | tabemann quits (~tabemann@2600:1700:7990:24e0:6933:bf5a:ceeb:44f) (*.net *.split) |
| 23:04:36 | × | sunarch quits (sid526836@user/sunarch) (*.net *.split) |
| 23:04:36 | × | mtjm quits (~mutantmel@2604:a880:2:d0::208b:d001) (*.net *.split) |
| 23:04:36 | × | cyphase quits (~cyphase@user/cyphase) (*.net *.split) |
| 23:04:36 | × | parseval quits (sid239098@id-239098.helmsley.irccloud.com) (*.net *.split) |
| 23:04:36 | × | raoul quits (~raoul@95.179.203.88) (*.net *.split) |
| 23:04:36 | × | jocke-l quits (jocke-l@a.x0.is) (*.net *.split) |
| 23:04:36 | × | kawzeg quits (kawzeg@2a01:7e01::f03c:92ff:fee2:ec34) (*.net *.split) |
| 23:04:36 | × | Patternmaster quits (~georg@user/Patternmaster) (*.net *.split) |
| 23:04:36 | × | sajith quits (~sajith@user/sajith) (*.net *.split) |
| 23:04:36 | × | x88x88x quits (~x88x88x@2001:19f0:5:39a8:5400:3ff:feb6:73cb) (*.net *.split) |
| 23:04:36 | × | mjacob quits (~mjacob@adrastea.uberspace.de) (*.net *.split) |
| 23:04:36 | × | ddb quits (~ddb@tilde.club) (*.net *.split) |
| 23:04:36 | × | siers quits (~ij@user/ij) (*.net *.split) |
| 23:04:36 | × | ncf quits (~n@monade.li) (*.net *.split) |
| 23:04:36 | × | _\_ quits (~o@user/offon) (*.net *.split) |
| 23:04:36 | × | mrmonday quits (~robert@what.i.hope.is.not.a.tabernaevagant.es) (*.net *.split) |
| 23:04:36 | × | kawen quits (~quassel@static.208.191.216.95.clients.your-server.de) (*.net *.split) |
| 23:04:36 | × | AWizzArd quits (~code@gehrels.uberspace.de) (*.net *.split) |
| 23:04:36 | snek_ | is now known as snek |
| 23:04:36 | lll | is now known as _\_ |
| 23:04:37 | parseval_ | is now known as parseval |
| 23:04:37 | sclv_ | is now known as sclv |
| 23:04:37 | scav_ | is now known as scav |
| 23:04:38 | raoul3 | is now known as raoul |
| 23:04:39 | sunarch_ | is now known as sunarch |
| 23:04:43 | → | Feuermagier joins (~Feuermagi@user/feuermagier) |
| 23:04:56 | ncf_ | is now known as ncf |
| 23:06:45 | × | chexum quits (~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection) |
| 23:06:47 | × | opticblast quits (~Thunderbi@secure-165.caltech.edu) (Ping timeout: 268 seconds) |
| 23:08:03 | → | chexum joins (~quassel@gateway/tor-sasl/chexum) |
| 23:09:32 | mtjm_ | is now known as mtjm |
| 23:10:22 | <lyxia> | you can't without additional axioms |
| 23:10:32 | → | Tisoxin joins (~ikosit@user/ikosit) |
| 23:10:34 | → | jocke-l joins (jocke-l@a.x0.is) |
| 23:10:46 | → | famubu[m] joins (~famubumat@2001:470:69fc:105::1081) |
| 23:10:50 | × | sammelweis_ quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.) |
| 23:11:58 | → | zebrag joins (~chris@user/zebrag) |
| 23:12:02 | → | nisstyre joins (wes@user/nisstyre) |
| 23:12:34 | × | belovachap quits (~chapman@216-188-233-105.dyn.grandenetworks.net) (Ping timeout: 260 seconds) |
| 23:12:58 | → | sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
| 23:14:01 | → | freeside joins (~mengwong@103.252.202.193) |
| 23:14:50 | → | psydroid joins (~psydroid@user/psydroid) |
| 23:15:15 | × | Cheery quits (~cheery@7-239-179-185.static.tentacle.fi) (Ping timeout: 260 seconds) |
| 23:15:17 | × | Logio quits (em@kapsi.fi) (Ping timeout: 246 seconds) |
| 23:17:08 | → | romes[m] joins (~romesmatr@2001:470:69fc:105::2:1660) |
| 23:17:14 | → | sm joins (~sm@plaintextaccounting/sm) |
| 23:17:40 | × | sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Ping timeout: 252 seconds) |
| 23:18:09 | → | sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
| 23:18:24 | × | freeside quits (~mengwong@103.252.202.193) (Ping timeout: 252 seconds) |
| 23:20:00 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 23:20:34 | → | Cheery joins (~cheery@7-239-179-185.static.tentacle.fi) |
| 23:21:22 | → | Axman6 joins (~Axman6@user/axman6) |
| 23:22:12 | → | king_gs joins (~Thunderbi@187.201.139.206) |
| 23:22:18 | × | jespada quits (~jespada@nmal-24-b2-v4wan-166357-cust1764.vm24.cable.virginm.net) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 23:22:32 | → | Logio joins (em@kapsi.fi) |
| 23:24:34 | → | jespada joins (~jespada@nmal-24-b2-v4wan-166357-cust1764.vm24.cable.virginm.net) |
| 23:26:31 | × | sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Ping timeout: 252 seconds) |
| 23:27:42 | → | belovachap joins (~chapman@216-188-233-105.dyn.grandenetworks.net) |
| 23:27:56 | × | merijn quits (~merijn@c-001-001-017.client.esciencecenter.eduvpn.nl) (Ping timeout: 256 seconds) |
| 23:30:39 | → | freeside joins (~mengwong@103.252.202.193) |
| 23:32:19 | × | belovachap quits (~chapman@216-188-233-105.dyn.grandenetworks.net) (Client Quit) |
| 23:33:40 | → | sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
| 23:34:13 | robbert | is now known as robbert-vdh |
| 23:36:15 | × | freeside quits (~mengwong@103.252.202.193) (Ping timeout: 260 seconds) |
| 23:36:47 | → | TonyStone joins (~TonyStone@cpe-74-76-57-186.nycap.res.rr.com) |
| 23:38:55 | × | cafkafk quits (~cafkafk@fsf/member/cafkafk) (Remote host closed the connection) |
| 23:40:34 | → | cafkafk joins (~cafkafk@fsf/member/cafkafk) |
| 23:40:42 | × | sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.) |
| 23:42:21 | → | sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
| 23:45:01 | × | chele quits (~chele@user/chele) (Remote host closed the connection) |
| 23:45:04 | × | lisbeths quits (uid135845@id-135845.lymington.irccloud.com) (Quit: Connection closed for inactivity) |
| 23:46:33 | → | [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470) |
| 23:46:38 | × | Vajb quits (~Vajb@2001:999:504:3ad6:52a4:a3b5:32d8:e74d) (Ping timeout: 256 seconds) |
| 23:47:42 | <Axman6> | o/ |
| 23:50:43 | → | freeside joins (~mengwong@103.252.202.193) |
| 23:52:20 | × | madjestic quits (~madjestic@88-159-247-120.fixed.kpn.net) (Ping timeout: 248 seconds) |
| 23:52:52 | × | mikoto-chan quits (~mikoto-ch@164.5.249.78) (Ping timeout: 256 seconds) |
| 23:53:34 | → | Erutuon joins (~Erutuon@user/erutuon) |
| 23:53:36 | × | Logio quits (em@kapsi.fi) (Ping timeout: 252 seconds) |
| 23:54:29 | × | Cheery quits (~cheery@7-239-179-185.static.tentacle.fi) (Ping timeout: 246 seconds) |
| 23:54:42 | → | Cheery joins (~cheery@7-239-179-185.static.tentacle.fi) |
| 23:57:43 | → | azimut_ joins (~azimut@gateway/tor-sasl/azimut) |
| 23:57:47 | × | azimut quits (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 255 seconds) |
| 23:58:44 | → | Logio joins (em@kapsi.fi) |
| 23:59:10 | × | zeenk quits (~zeenk@2a02:2f04:a208:3600::7fe) (Quit: Konversation terminated!) |
All times are in UTC on 2022-11-22.