Home liberachat/#haskell: Logs Calendar

Logs on 2023-04-24 (liberachat/#haskell)

00:07:30 × pierrot quits (~pi@user/pierrot) (Quit: ZNC 1.8.2 - http://znc.in)
00:07:45 × Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 240 seconds)
00:09:53 Lord_of_Life joins (~Lord@user/lord-of-life/x-2819915)
00:10:44 pierrot joins (~pi@user/pierrot)
00:19:08 xff0x joins (~xff0x@2405:6580:b080:900:1d02:138:10dc:9535)
00:23:00 × bontaq quits (~user@ool-45779b84.dyn.optonline.net) (Ping timeout: 255 seconds)
00:33:39 × falafel quits (~falafel@2603:8000:d700:115c:12f7:bd7:ccb3:ed19) (Ping timeout: 265 seconds)
00:47:59 merijn joins (~merijn@c-001-001-006.client.esciencecenter.eduvpn.nl)
00:51:53 eggplantade joins (~Eggplanta@104.55.37.220)
00:52:19 falafel joins (~falafel@2603-8000-d700-115c-bab8-bca3-28db-3e6a.res6.spectrum.com)
00:52:42 × merijn quits (~merijn@c-001-001-006.client.esciencecenter.eduvpn.nl) (Ping timeout: 255 seconds)
00:56:22 × eggplantade quits (~Eggplanta@104.55.37.220) (Ping timeout: 265 seconds)
01:08:52 eggplantade joins (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net)
01:10:35 × falafel quits (~falafel@2603-8000-d700-115c-bab8-bca3-28db-3e6a.res6.spectrum.com) (Ping timeout: 260 seconds)
01:10:54 × albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
01:16:05 × cheater quits (~Username@user/cheater) (Quit: Going offline, see ya! (www.adiirc.com))
01:17:01 albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8)
01:23:01 bilegeek_ joins (~bilegeek@2600:1008:b02e:ea76:eada:d06b:de7e:6cef)
01:26:00 gehmehgeh joins (~user@user/gehmehgeh)
01:28:41 × gmg quits (~user@user/gehmehgeh) (Ping timeout: 255 seconds)
01:30:26 × wroathe quits (~wroathe@user/wroathe) (Quit: Reconnecting)
01:30:40 wroathe joins (~wroathe@207-153-38-140.fttp.usinternet.com)
01:30:40 × wroathe quits (~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host)
01:30:40 wroathe joins (~wroathe@user/wroathe)
01:53:02 cheater joins (~Username@user/cheater)
01:54:04 × cheater quits (~Username@user/cheater) (Client Quit)
02:01:34 × haritz quits (~hrtz@user/haritz) (Read error: Connection reset by peer)
02:02:46 × rburkholder quits (~blurb@96.45.2.121) (Remote host closed the connection)
02:03:18 rburkholder joins (~blurb@96.45.2.121)
02:04:30 × accord quits (uid568320@id-568320.hampstead.irccloud.com) (Quit: Connection closed for inactivity)
02:04:36 × rburkholder quits (~blurb@96.45.2.121) (Max SendQ exceeded)
02:05:09 rburkholder joins (~blurb@96.45.2.121)
02:05:45 haritz joins (~hrtz@2a02:8010:65b5:0:6009:6384:e3cb:2220)
02:05:45 × haritz quits (~hrtz@2a02:8010:65b5:0:6009:6384:e3cb:2220) (Changing host)
02:05:45 haritz joins (~hrtz@user/haritz)
02:12:21 cheater joins (~Username@user/cheater)
02:12:39 × xff0x quits (~xff0x@2405:6580:b080:900:1d02:138:10dc:9535) (Ping timeout: 260 seconds)
02:14:04 merijn joins (~merijn@c-001-001-006.client.esciencecenter.eduvpn.nl)
02:22:38 bitmapper joins (uid464869@id-464869.lymington.irccloud.com)
02:27:05 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 240 seconds)
02:41:25 × terrorjack quits (~terrorjac@2a01:4f8:c17:87f8::) (Quit: The Lounge - https://thelounge.chat)
02:43:19 terrorjack joins (~terrorjac@2a01:4f8:c17:87f8::)
02:48:49 × merijn quits (~merijn@c-001-001-006.client.esciencecenter.eduvpn.nl) (Ping timeout: 276 seconds)
02:54:50 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija)))
02:54:50 finn_elija joins (~finn_elij@user/finn-elija/x-0085643)
02:54:50 finn_elija is now known as FinnElija
02:54:58 × eggplantade quits (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
02:59:52 × td_ quits (~td@i5387093F.versanet.de) (Ping timeout: 276 seconds)
03:01:00 xff0x joins (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp)
03:01:18 td_ joins (~td@i53870912.versanet.de)
03:09:05 × gehmehgeh quits (~user@user/gehmehgeh) (Remote host closed the connection)
03:09:52 gehmehgeh joins (~user@user/gehmehgeh)
03:19:44 jargon joins (~jargon@174-22-213-236.phnx.qwest.net)
03:24:22 eggplantade joins (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net)
03:30:40 × waleee quits (~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7) (Ping timeout: 248 seconds)
03:30:46 <probie> If I call `imap` with a strict function over a `Vector Word8` from Data.Vector.Storable, should I expect GHC to generate similar code to a naive for loop written in a language like C or Fortran (ignoring the code to allocate the destination Vector)?
03:32:58 <probie> (and assuming the function is inlined)
03:33:01 <c_wraith> in general, you can assume the higher-order functions behave that way, yes
03:34:51 × Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer)
03:35:38 Sgeo joins (~Sgeo@user/sgeo)
03:37:52 <probie> I guess the easiest thing to do would just be to compare it myself. Is there an easy way to see what assembly GHC generates for a function (or module)? Historically I've just called objdump on the produced executable, but navigating that isn't ideal.
03:41:31 × rf quits (~rf@2605:59c8:1604:2210:6e18:f30:3bf:df23) (Ping timeout: 248 seconds)
03:44:09 <probie> I couldn't find an answer for a specific function, but it'll do the entire module if you pass it `-S`
03:47:21 nate1 joins (~nate@98.45.169.16)
03:50:39 × [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Ping timeout: 260 seconds)
03:52:15 × nate1 quits (~nate@98.45.169.16) (Ping timeout: 255 seconds)
03:54:35 {-d0t-} joins (~q_q@user/-d0t-/x-7915216)
03:54:41 [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470)
03:58:06 ddellacosta joins (~ddellacos@146.70.168.100)
04:02:53 merijn joins (~merijn@c-001-001-006.client.esciencecenter.eduvpn.nl)
04:06:25 × machinedgod quits (~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 240 seconds)
04:08:19 × msavoritias quits (cb716af6b3@irc.cheogram.com) (Ping timeout: 252 seconds)
04:09:22 × euandreh quits (~Thunderbi@189.6.18.7) (Remote host closed the connection)
04:10:04 × opticblast quits (~Thunderbi@172.58.85.88) (Ping timeout: 276 seconds)
04:13:53 euandreh joins (~Thunderbi@189.6.18.7)
04:13:54 × jargon quits (~jargon@174-22-213-236.phnx.qwest.net) (Remote host closed the connection)
04:14:28 slack1256 joins (~slack1256@181.42.40.58)
04:15:56 <slack1256> Is it possible to use yampa with GTK without replicating a bunch of info between the two systems?
04:16:49 <slack1256> Most of the example of yampa that I see, draw the whole screen at the end of the step function. That is OK for games or html stuff. But for GTK, seems more complicated as it has its own event loop.
04:17:01 Sgeo_ joins (~Sgeo@user/sgeo)
04:17:33 × Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer)
04:17:34 × euandreh quits (~Thunderbi@189.6.18.7) (Remote host closed the connection)
04:18:08 euandreh joins (~Thunderbi@189.6.18.7)
04:33:55 vglfr joins (~vglfr@37.73.65.155)
04:34:25 azimut joins (~azimut@gateway/tor-sasl/azimut)
04:36:43 × merijn quits (~merijn@c-001-001-006.client.esciencecenter.eduvpn.nl) (Ping timeout: 276 seconds)
04:39:21 bgs joins (~bgs@212.85.160.171)
04:41:38 × PHO` quits (~pho@akari.cielonegro.org) (Ping timeout: 265 seconds)
04:41:51 × use-value quits (~Thunderbi@2a00:23c6:8a03:2f01:75c2:a71f:beaa:29bf) (Remote host closed the connection)
04:42:32 use-value joins (~Thunderbi@2a00:23c6:8a03:2f01:75c2:a71f:beaa:29bf)
04:44:07 × dontdieych quits (~alarm@132.226.169.184) (Quit: WeeChat 3.8)
04:49:11 opticblast joins (~Thunderbi@172.58.85.88)
04:54:48 × {-d0t-} quits (~q_q@user/-d0t-/x-7915216) (Quit: Konversation terminated!)
04:55:22 × kmein quits (~weechat@user/kmein) (Quit: ciao kakao)
04:55:59 × jero98772 quits (~jero98772@2800:484:1d84:9000::3) (Remote host closed the connection)
04:56:02 kmein joins (~weechat@user/kmein)
04:56:50 × motherfsck quits (~motherfsc@user/motherfsck) (Quit: quit)
04:57:16 tr_ev joins (~trev@user/trev)
04:58:05 × opticblast quits (~Thunderbi@172.58.85.88) (Ping timeout: 240 seconds)
05:03:33 × nek0 quits (~nek0@2a01:4f8:222:2b41::12) (Quit: The Lounge - https://thelounge.chat)
05:07:27 × slack1256 quits (~slack1256@181.42.40.58) (Ping timeout: 250 seconds)
05:13:29 × bilegeek_ quits (~bilegeek@2600:1008:b02e:ea76:eada:d06b:de7e:6cef) (Quit: Leaving)
05:14:34 aeroplane joins (~user@user/aeroplane)
05:17:43 takuan joins (~takuan@178-116-218-225.access.telenet.be)
05:19:50 tr_ev is now known as trev
05:23:20 × Sgeo_ quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer)
05:24:44 Sgeo joins (~Sgeo@user/sgeo)
05:25:49 × Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer)
05:28:32 Sgeo joins (~Sgeo@user/sgeo)
05:29:41 czy joins (~user@host-140-25.ilcub310.champaign.il.us.clients.pavlovmedia.net)
05:40:34 planplan joins (~planplan@88.147.153.79)
05:41:20 × planplan quits (~planplan@88.147.153.79) (Client Quit)
05:44:59 × Sgeo quits (~Sgeo@user/sgeo) (Quit: Leaving)
05:46:54 harveypwca joins (~harveypwc@2601:246:c180:a570:3828:d8:e523:3f67)
05:50:15 michalz joins (~michalz@185.246.207.221)
05:54:43 msavoritias joins (cb716af6b3@irc.cheogram.com)
05:55:45 hgolden_ joins (~hgolden@cpe-172-251-233-141.socal.res.rr.com)
05:58:05 tabemann_ joins (~tabemann@172-13-49-137.lightspeed.milwwi.sbcglobal.net)
05:58:22 rs joins (~rs@p200300cf072e68ea6b29732cbdb21e80.dip0.t-ipconnect.de)
05:58:37 drdo0 joins (~drdo@bl14-14-164.dsl.telepac.pt)
05:58:37 × hgolden quits (~hgolden@cpe-172-251-233-141.socal.res.rr.com) (Remote host closed the connection)
05:58:37 × euandreh quits (~Thunderbi@189.6.18.7) (Ping timeout: 255 seconds)
05:58:37 × m5zs7k quits (aquares@web10.mydevil.net) (Ping timeout: 255 seconds)
05:58:37 × son0p quits (~ff@181.136.122.143) (Ping timeout: 255 seconds)
05:58:37 × tabemann__ quits (~tabemann@172-13-49-137.lightspeed.milwwi.sbcglobal.net) (Remote host closed the connection)
05:58:37 × drdo quits (~drdo@bl14-14-164.dsl.telepac.pt) (Quit: Ping timeout (120 seconds))
05:58:37 drdo0 is now known as drdo
05:58:46 rs is now known as Guest6213
05:58:50 m5zs7k_ joins (aquares@web10.mydevil.net)
05:59:43 euandreh joins (~Thunderbi@189.6.18.7)
06:01:04 werneta_ joins (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net)
06:02:46 × werneta quits (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Ping timeout: 249 seconds)
06:06:21 × euandreh quits (~Thunderbi@189.6.18.7) (Ping timeout: 255 seconds)
06:07:46 × bgs quits (~bgs@212.85.160.171) (Remote host closed the connection)
06:07:54 m5zs7k_ is now known as m5zs7k
06:33:21 merijn joins (~merijn@86.86.29.250)
06:41:55 × vglfr quits (~vglfr@37.73.65.155) (Read error: Connection reset by peer)
07:01:37 lortabac joins (~lortabac@2a01:e0a:541:b8f0:a82:d46a:c173:974c)
07:02:37 gurkenglas joins (~gurkengla@dynamic-089-204-139-194.89.204.139.pool.telefonica.de)
07:08:03 × merijn quits (~merijn@86.86.29.250) (Ping timeout: 265 seconds)
07:09:45 dh97 joins (~dh97@2405:201:d02b:48f3:d9ee:cb54:6fa0:b6ac)
07:11:31 PHO` joins (~pho@akari.cielonegro.org)
07:13:52 acidjnk joins (~acidjnk@p200300d6e715c483143575a405c4d32c.dip0.t-ipconnect.de)
07:17:51 × dh97 quits (~dh97@2405:201:d02b:48f3:d9ee:cb54:6fa0:b6ac) (Quit: Quit)
07:21:30 × trev quits (~trev@user/trev) (Ping timeout: 255 seconds)
07:21:47 coot joins (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba)
07:24:17 × tzh quits (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Quit: zzz)
07:26:36 × shriekingnoise quits (~shrieking@186.137.175.87) (Ping timeout: 264 seconds)
07:29:04 euandreh joins (~Thunderbi@189.6.18.7)
07:42:13 merijn joins (~merijn@c-001-001-006.client.esciencecenter.eduvpn.nl)
07:48:45 × harveypwca quits (~harveypwc@2601:246:c180:a570:3828:d8:e523:3f67) (Quit: Leaving)
07:48:51 nate1 joins (~nate@98.45.169.16)
07:53:33 gehmehgeh is now known as gmg
07:53:54 × nate1 quits (~nate@98.45.169.16) (Ping timeout: 255 seconds)
07:56:24 machinedgod joins (~machinedg@d198-53-218-113.abhsia.telus.net)
07:57:49 _ht joins (~Thunderbi@28-52-174-82.ftth.glasoperator.nl)
08:01:52 <tomsmeding> probie: won't you see the individual function in the assembly if you {-# NOINLINE #-} the function?
08:02:27 × jle` quits (~jle`@cpe-23-240-75-236.socal.res.rr.com) (Ping timeout: 255 seconds)
08:04:13 jle` joins (~jle`@cpe-23-240-75-236.socal.res.rr.com)
08:06:05 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection)
08:06:41 FinnElija joins (~finn_elij@user/finn-elija/x-0085643)
08:08:19 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection)
08:08:42 FinnElija joins (~finn_elij@user/finn-elija/x-0085643)
08:12:00 zeenk joins (~zeenk@2a02:2f04:a20f:5200::7fe)
08:13:38 <probie> tomsmeding yes that will work, I was just hoping there some magical `--show-me-the-assembly-for "Module.function"` which prevented it from being inlined and would also print just the `_info` part
08:13:46 <probie> s/there some/there was some/
08:14:05 <tomsmeding> ¯\_(ツ)_/¯
08:14:31 × use-value quits (~Thunderbi@2a00:23c6:8a03:2f01:75c2:a71f:beaa:29bf) (Remote host closed the connection)
08:14:50 use-value joins (~Thunderbi@2a00:23c6:8a03:2f01:75c2:a71f:beaa:29bf)
08:18:02 <merijn> probie: There's some RTS debug tools for walking and dumping info tables, iirc
08:18:30 titibandit joins (~titibandi@user/titibandit)
08:22:56 trev joins (~trev@user/trev)
08:27:05 × whatsupdoc quits (uid509081@id-509081.hampstead.irccloud.com) (Quit: Connection closed for inactivity)
08:30:41 × econo quits (uid147250@user/econo) (Quit: Connection closed for inactivity)
08:40:18 cfricke joins (~cfricke@user/cfricke)
08:41:47 <probie> merijn: I think you may mean something else by "info table" than I mean by "the `_info` part". `SomeModule_someFunction_info` is (at least with the default GHC backend) the label that will appear in the assembly where the actual instructions start for `someFunction` from module `SomeModule`.
08:42:32 × eggplantade quits (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
08:42:40 <merijn> probie: That *sounds* like the info table, which afaik every function, value, and thunk has
08:42:54 <merijn> but you'll probably get more useful comments in #ghc
08:43:19 nschoe joins (~q@82.65.202.30)
08:46:53 tok joins (~user@user/tok)
08:50:18 c0c0 joins (~coco@212-51-146-137.fiber7.init7.net)
08:52:59 × titibandit quits (~titibandi@user/titibandit) (Remote host closed the connection)
08:55:00 euav joins (~euav@195.135.254.99)
08:57:32 alexherbo2 joins (~alexherbo@2a02-842a-8180-4601-d11e-aa70-1ef3-2bb0.rev.sfr.net)
09:05:22 × euav quits (~euav@195.135.254.99) (Remote host closed the connection)
09:06:08 kenran joins (~user@user/kenran)
09:08:43 × terrorjack quits (~terrorjac@2a01:4f8:c17:87f8::) (Quit: The Lounge - https://thelounge.chat)
09:09:18 × merijn quits (~merijn@c-001-001-006.client.esciencecenter.eduvpn.nl) (Ping timeout: 252 seconds)
09:10:35 terrorjack joins (~terrorjac@2a01:4f8:c17:87f8::)
09:15:43 × ft quits (~ft@p4fc2a88b.dip0.t-ipconnect.de) (Quit: leaving)
09:17:35 × chiselfuse quits (~chiselfus@user/chiselfuse) (Ping timeout: 255 seconds)
09:19:39 chiselfuse joins (~chiselfus@user/chiselfuse)
09:21:03 gnalzo joins (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c)
09:21:57 × terrorjack quits (~terrorjac@2a01:4f8:c17:87f8::) (Quit: The Lounge - https://thelounge.chat)
09:23:45 terrorjack joins (~terrorjac@2a01:4f8:c17:87f8::)
09:24:25 × kenran quits (~user@user/kenran) (Ping timeout: 240 seconds)
09:24:59 __monty__ joins (~toonn@user/toonn)
09:25:35 <dminuoso> I have a bunch of worker threads that process requests. A request can be of type "start" or "update", and they have some user identifier attached to them. In my situation the initial start is almost always followed up by an update immediately afterwards. There's now a race condition where sometimes a worker thread will process the update first.
09:25:55 <dminuoso> However, I must also cater for the reality that an initial `start` might have been missed (I consider such records orphan records)
09:27:05 <dminuoso> How can I sensibly avoid generating orphan records in the general case? My most naive attempt would be to consistently add a threadDelay whenever I get an update record, but given that update records is almost everything I ever process, this stupidly delays their processing
09:28:02 × pavonia quits (~user@user/siracusa) (Quit: Bye!)
09:28:11 <dminuoso> Another idea Ive been playing with is to just consider them orphan records that get "adopted" if a start message arrives within seconds, but that creates synchronization problems.
09:28:24 × juri_ quits (~juri@84-19-175-179.pool.ovpn.com) (Ping timeout: 255 seconds)
09:29:29 <dminuoso> Or is using an STM `TVar (Set UserIdentifier)` as a poor mans associative MVar a good idea to avoid concurrent processing (such that I can
09:29:39 <dminuoso> safely do an adoption process?
09:31:31 <__monty__> Does start *need* to be a separate request? Or could you have the first update request implicitly imply start?
09:31:44 × JScript quits (~JScript@144.48.39.180) (Ping timeout: 248 seconds)
09:33:36 juri_ joins (~juri@84-19-175-179.pool.ovpn.com)
09:34:23 <dminuoso> __monty__: Yes, its out of my control
09:35:39 <mauke> start must block updates of the same entity
09:36:02 × zeenk quits (~zeenk@2a02:2f04:a20f:5200::7fe) (Remote host closed the connection)
09:36:18 <mauke> but wouldn't concurrent updates of the same entity race against each other, too?
09:36:31 <dminuoso> mauke: a block wont help if the update is processed first.
09:36:47 zeenk joins (~zeenk@2a02:2f04:a20f:5200::fba)
09:36:50 <dminuoso> Due to timing and some batching involved, in about 0,1% of the cases an update is indeed processed first
09:37:36 <mauke> that's rather my point: don't process updates first
09:38:16 <dminuoso> Maybe I thought about it wrong. So the reality is, because this is an unreliable network I must in principle allow for a start to not occur.
09:38:21 <dminuoso> So I cant just block until I see a start
09:38:24 <chreekat> can 'start' be reformulated as a kind of 'update'?
09:39:07 <mauke> if you don't see a start, don't block
09:39:32 <mauke> I mean, are these messages ordered or not?
09:42:32 <dminuoso> mauke: If an update arrives not even a millisecond after the a start, and you're working with multiple concurrent workers, then you have a race condition.
09:43:18 <mauke> only if you hand out updates indiscriminately
09:43:24 eggplantade joins (~Eggplanta@104.55.37.220)
09:43:36 vglfr joins (~vglfr@37.73.65.155)
09:44:08 × vglfr quits (~vglfr@37.73.65.155) (Read error: Connection reset by peer)
09:44:10 <dminuoso> As mentioned earlier, a start is necessarily almost always followed by an update
09:45:08 <mauke> what kind of uncontrollable event loop is this?
09:45:41 <dminuoso> This is RADIUS messages. As per standard, Start and Interim-Update are different messages
09:45:57 <mauke> the nature of the messages doesn't really matter
09:46:15 <dminuoso> Im just saying its external networking equipment
09:46:45 <mauke> the point is that you shouldn't start processing updates until all outstanding starts are done for the same entity
09:46:57 × phma quits (phma@2001:5b0:2143:c788:d2b8:a200:d590:bdcb) (Read error: Connection reset by peer)
09:46:57 <mauke> (and probably all outstanding updates, too)
09:47:07 <dminuoso> I dont know whether there's outstanding starts
09:47:12 <mauke> why not?
09:47:25 <dminuoso> If the worker thread processing the update is just lucky to get CPU time first
09:47:39 <dminuoso> Then I might not even have come to the point where I know whether or not a start message is in the queue
09:47:53 <mauke> <mauke> only if you hand out updates indiscriminately
09:48:02 × eggplantade quits (~Eggplanta@104.55.37.220) (Ping timeout: 265 seconds)
09:48:04 <mauke> don't let worker threads start processing random messages out of order
09:48:10 phma joins (~phma@67.44.208.196)
09:49:07 <dminuoso> Okay I see your point.
09:49:24 <dminuoso> So I guess I could have a smarter ingress queue that perhaps have some blocking logic to it.
09:50:02 <mauke> or a separate queue per user or something
09:51:06 <mauke> I'm not familiar with RADIUS, but I would assume it doesn't make sense to process interim updates out of order, either
09:55:47 titibandit joins (~titibandi@user/titibandit)
10:08:43 vpan joins (~0@mail.elitnet.lt)
10:11:48 × jpds4 quits (~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection)
10:12:14 <dminuoso> mauke: Okay so thats subtly more complicated, but we can assume an interim update to fire only once an hour.
10:12:19 jpds4 joins (~jpds@gateway/tor-sasl/jpds)
10:13:25 × Maxdamantus quits (~Maxdamant@user/maxdamantus) (Ping timeout: 240 seconds)
10:13:34 <dminuoso> mauke: So the per-user queue bit is interesting, but that opens up a potential space leak (say if something cause a flood of start messages with random user identifiers)
10:13:48 <dminuoso> At least for a naive implementation
10:14:42 Maxdamantus joins (~Maxdamant@user/maxdamantus)
10:14:49 <mauke> https://en.wikipedia.org/wiki/SYN_flood :-D
10:15:16 <dminuoso> Right, something along those lines.
10:16:32 <dminuoso> Although, perhaps I dont need to worry about space leaks much.
10:17:02 <dminuoso> If I maintain something like `Map UserIdentifier ThreadId` as a map of currently running threads
10:17:15 JScript joins (~JScript@144.48.39.182)
10:17:17 × JScript quits (~JScript@144.48.39.182) (Max SendQ exceeded)
10:17:30 <dminuoso> And merely keep a backlog of requests that cant currently be scheduled
10:17:34 <dminuoso> Then the space leak disappears
10:18:11 <dminuoso> Of course then we get into scheduling.
10:18:37 <dminuoso> It's interesting how vastly different and complicated concurrency is.
10:19:13 JScript joins (~JScript@144.48.39.182)
10:23:23 × titibandit quits (~titibandi@user/titibandit) (Quit: leaving)
10:25:14 Guest6229 joins (~thibaut@sunp.ient.rwth-aachen.de)
10:25:28 nek0 joins (~nek0@2a01:4f8:222:2b41::12)
10:26:24 kuribas joins (~user@ip-188-118-57-242.reverse.destiny.be)
10:26:30 <dminuoso> mauke: Implementation-wise it will be vastly more simple to blindly spawn threads and use a blocking action - because it's essentially impossible to have more than `1 start + 1 update` concurrently
10:26:43 <dminuoso> So blocking will give me that ordering for that special case.
10:28:58 Square2 joins (~Square4@user/square)
10:33:38 × Guest6229 quits (~thibaut@sunp.ient.rwth-aachen.de) (Quit: leaving)
10:36:34 titiband1t joins (~titibandi@user/titibandit)
10:38:36 × xff0x quits (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) (Ping timeout: 255 seconds)
10:39:18 oljenkins joins (~philipp@p5dec4bb3.dip0.t-ipconnect.de)
10:42:52 tremon joins (~tremon@83.80.159.219)
10:47:52 × jespada quits (~jespada@cpc121308-nmal25-2-0-cust15.19-2.cable.virginm.net) (Ping timeout: 276 seconds)
10:50:19 jespada joins (~jespada@cpc121308-nmal25-2-0-cust15.19-2.cable.virginm.net)
10:55:10 Barfolomew joins (~Barfolome@2a0a-a546-a8e-1-c27c-c014-a0d8-fcc3.ipv6dyn.netcologne.de)
11:16:45 × mei quits (~mei@user/mei) (Ping timeout: 240 seconds)
11:20:59 mei joins (~mei@user/mei)
11:21:04 × witcher quits (~witcher@wiredspace.de) (Remote host closed the connection)
11:21:36 witcher joins (~witcher@wiredspace.de)
11:24:28 × acidjnk quits (~acidjnk@p200300d6e715c483143575a405c4d32c.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
11:25:03 merijn joins (~merijn@c-001-001-006.client.esciencecenter.eduvpn.nl)
11:27:08 L29Ah parts (~L29Ah@wikipedia/L29Ah) ()
11:27:09 × jpds4 quits (~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection)
11:27:44 jpds4 joins (~jpds@gateway/tor-sasl/jpds)
11:28:55 xff0x joins (~xff0x@2405:6580:b080:900:23bd:4b23:18bc:5cdf)
11:33:54 × Barfolomew quits (~Barfolome@2a0a-a546-a8e-1-c27c-c014-a0d8-fcc3.ipv6dyn.netcologne.de) (Quit: Barfolomew)
11:37:16 × LambdaDuck quits (~anka@ksit.fixme.fi) (Ping timeout: 276 seconds)
11:37:20 × jimki quits (~jmaki@gazorpazorp.fixme.fi) (Ping timeout: 260 seconds)
11:39:16 × nschoe quits (~q@82.65.202.30) (Quit: Switching off)
11:39:36 L29Ah joins (~L29Ah@wikipedia/L29Ah)
11:44:32 polyphem joins (~rod@2a02:810d:840:8754:1b97:4da6:419e:bd10)
11:45:23 eggplantade joins (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net)
11:47:27 <jean-paul[m]> are there clamped types already defined somewhere I could get at them?
11:48:59 <geekosaur> "clamped"?
11:49:21 × witcher quits (~witcher@wiredspace.de) (Remote host closed the connection)
11:49:52 × eggplantade quits (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 248 seconds)
11:50:04 witcher joins (~witcher@wiredspace.de)
11:50:14 <jean-paul[m]> Types that stick to their min/max bound on overflow
11:50:23 nate1 joins (~nate@98.45.169.16)
11:50:24 <geekosaur> nope
11:51:29 <dminuoso> jean-paul[m]: Curious, whats the use case for such types?
11:51:49 <geekosaur> (I think that makes them dependent types)
11:52:07 <dminuoso> geekosaur: Why would it?
11:52:30 <dminuoso> It would only if they got promoted to larger types on overflow
11:52:47 <merijn> dminuoso: Lots of physics and graphics problems
11:52:48 <geekosaur> typechecker may have to prove that extra code to clamp it doesn't have to be emitted?
11:53:09 <geekosaur> that, or every operation needs extra codegen to do the clamping
11:53:19 <dminuoso> I see, I was thinking of the latter.
11:53:21 <geekosaur> (and some will anyway)
11:53:23 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
11:53:32 <dminuoso> Are there x86 instructions for such clamping behavior?
11:53:40 <jean-paul[m]> I can imagine ClampedInt low high being a dependent type, but I think it's simpler if you just have ClampedIntFromLowToHigh (ie, the bounds are not parameters, they're just intrinsic to the type)
11:53:58 <jean-paul[m]> A float clamped between 0 and 1 is used in graphics a lot
11:54:12 <jean-paul[m]> (which is basically what I'm doing)
11:54:32 <dminuoso> jean-paul[m]: Do clamping AMD64 instructions exist for the mathematical operations you're thinking of?
11:54:38 <dminuoso> Or would they require branching?
11:54:48 <jean-paul[m]> I have no idea :)
11:55:24 × nate1 quits (~nate@98.45.169.16) (Ping timeout: 264 seconds)
11:55:27 <jean-paul[m]> my interest is mainly at the programming level ... can I arrange my code more neatly with such a type, does it make sense to have a Num instance for them, etc
11:56:10 <dminuoso> Oh I was merely wondering if those existed, whether they might be exposed as primops already,
11:56:32 <jean-paul[m]> I have never really ventured down to that level
11:56:52 <dminuoso> Interesting, so it seems the efficient way is cmp + cmov
11:57:34 <dminuoso> Presumably cmov just induces a data dependency, so I guess it will bypass branch predictors entirely
11:58:33 <dminuoso> I guess a highly efficient implementation would require custom primops then
11:58:55 <dminuoso> merijn: where does this appear in physics?
12:01:25 <merijn> dminuoso: Computational physics I meant, the kindas 2d/3d convolution stuff for, like, heat transfer, where you have grid boundaries
12:02:03 <probie> I think you can do this in arm without introducing branching via the conditional ops (not that many people are during numerically intense stuff on arm)
12:08:54 bontaq joins (~user@ool-45779b84.dyn.optonline.net)
12:09:57 <fbytez> What's the equivalent of c's `argv[0]`?
12:10:59 <dminuoso> getProgName
12:11:33 <dminuoso> fbytez: Be sure to read the haddock details about it.
12:11:44 <fbytez> Thankyou.
12:11:44 <dminuoso> There's some subtle potentially relevant portability issues with it.
12:12:12 <merijn> dminuoso: Are there? (as in, more so than in C?)
12:12:26 <geekosaur> https://downloads.haskell.org/ghc/9.2.5/docs/html/libraries/base-4.16.4.0/System-Environment.html#v:getProgName
12:12:32 geekosaur slow
12:12:45 <dminuoso> merijn: That's a good point, actually
12:13:05 <geekosaur> afaik they're the same as in C
12:14:25 <fbytez> However, this is hard-to-impossible to implement on some non-Unix OSes, so instead, for maximum portability, we just return the leafname of the program as invoked. Even then there are some differences between platforms: on Windows, for example, a program invoked as foo is probably really FOO.EXE, and that is what getProgName will return.
12:14:36 <dminuoso> Yeah I just browsed the RTS
12:14:37 <fbytez> ^ what is meant by "leafname"? basename?
12:15:00 <dminuoso> fbytez: Consider you might have invoked C:/foo/bar.exe
12:15:07 <dminuoso> or worse
12:15:12 <dminuoso> C:/foo/bar
12:15:18 <dminuoso> What would you expect?
12:15:28 <dminuoso> C:/foo/bar, C:/foo/bar.exe, bar, bar.exe?
12:17:04 × polyphem quits (~rod@2a02:810d:840:8754:1b97:4da6:419e:bd10) (Ping timeout: 248 seconds)
12:17:23 <dminuoso> `for example, a program invoked as foo is probably really FOO.EXE, and that is what getProgName will return.`
12:17:30 <dminuoso> Curiously the rts code doesnt look like it would do that.
12:17:47 <dminuoso> But I dont know. Maybe the windows loader will inject that .EXE
12:17:48 <geekosaur> I think some of that is Windows itself
12:17:52 <dminuoso> oh okay
12:17:58 <fbytez> I don't use Windows, but on Linux I'd expect /foo/bar to be /foo/bar
12:18:00 <dminuoso> The rts code definitely strips any directory information
12:18:02 <geekosaur> also the upcasing
12:18:03 <dminuoso> fbytez: nope
12:18:06 <dminuoso> fbytez: it would produce `bar`
12:18:12 <fbytez> Right, thanks.
12:18:28 <geekosaur> and drive letters aren't necessarily accurate by the time getProgName is called
12:18:32 <dminuoso> fbytez: and on windows C:\foo\bar would produce bar.EXE
12:18:36 <geekosaur> I mean, even DOS 2.11 had SUBST
12:19:08 × oljenkins quits (~philipp@p5dec4bb3.dip0.t-ipconnect.de) (Quit: Lost terminal)
12:19:41 <dminuoso> Though if your Haskell program is required to have DOS 2.11 compatibility, I think you have different problems than getProgName.
12:19:53 <dminuoso> It wouldn't be my primary concern. :-)
12:20:07 <geekosaur> my point was more that they've aleways had a dynamic aspect
12:20:15 <dminuoso> Right.
12:20:19 <dminuoso> I guess the same holds true in linux too
12:20:35 <dminuoso> Since by the time you call getProgName, there could have been any number of bind mounts or unmounts.
12:21:38 <dminuoso> And I suppose you get into toc tou race as well, since the executable could have been renamed by the time getProgName is called
12:21:49 <dminuoso> s/toc tou/another toc tou/
12:22:53 <geekosaur> yep. so it's strongly recommended you not rely on argv[0] / getProgName for anything important
12:23:09 <merijn> Ah...filesystem operation...so easy, until you think about things
12:23:19 <merijn> Then it's TOCTOU races as far as the eye can see
12:24:12 <dminuoso> merijn: Im had some real love with S3 recently, which doesnt even imbue you with things that let you *think* you can solve them.
12:24:28 <dminuoso> On one hand its frustrating, because you're forced to do TOC TOU checks with obvious huge latencies.
12:24:54 <merijn> dminuoso: I think the (scrapped) idea of giving Windows Vista a proper transactional filesystem woulda been brilliant
12:24:57 <merijn> sadly that never happened
12:25:43 <merijn> Could've been really cool
12:25:56 <[exa]> merijn: it was just another flock frontend as far as I recall, no?
12:26:35 × adanwan quits (~adanwan@gateway/tor-sasl/adanwan) (Ping timeout: 255 seconds)
12:26:42 <[exa]> as in, I don't recall that a properly journaled ntfs replacement would ever be in sight
12:26:50 adanwan joins (~adanwan@gateway/tor-sasl/adanwan)
12:37:24 <mauke> https://en.wikipedia.org/wiki/WinFS
12:44:23 <merijn> [exa]: That's the one I was thinking off
12:49:22 <dminuoso> Is there a newtype that conceptually descripes an existential `exists e. Hashable a, Eq a *> e`?
12:49:37 × cfricke quits (~cfricke@user/cfricke) (Quit: WeeChat 3.8)
12:50:02 <dminuoso> Or maybe a typeclass?>
12:51:55 × terrorjack quits (~terrorjac@2a01:4f8:c17:87f8::) (Quit: The Lounge - https://thelounge.chat)
12:53:20 <[exa]> mauke merijn: thx
12:53:45 terrorjack joins (~terrorjac@2a01:4f8:c17:87f8::)
12:58:59 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 264 seconds)
13:06:21 × tok quits (~user@user/tok) (Remote host closed the connection)
13:11:20 acidjnk joins (~acidjnk@p200300d6e715c4838c5446d0fdde46cd.dip0.t-ipconnect.de)
13:16:11 jero98772 joins (~jero98772@2800:484:1d84:9000::3)
13:18:39 motherfsck joins (~motherfsc@user/motherfsck)
13:21:31 gehmehgeh joins (~user@user/gehmehgeh)
13:22:23 × gmg quits (~user@user/gehmehgeh) (Ping timeout: 255 seconds)
13:23:12 × gurkenglas quits (~gurkengla@dynamic-089-204-139-194.89.204.139.pool.telefonica.de) (Ping timeout: 248 seconds)
13:26:50 chele joins (~chele@user/chele)
13:29:39 <dminuoso> mauke: Mmm, the more I try and think how to implement a queuing, it's not very satisfactory.
13:30:08 <dminuoso> Given that I might be getting thousands of requests per second in some situations, I want proper scalability in terms of stm retries.
13:30:49 <dminuoso> That being said https://hackage.haskell.org/package/ttrie is a pretty nifty thing, but it takes some effort verifying its internals
13:32:08 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
13:34:00 × jmdaemon quits (~jmdaemon@user/jmdaemon) (Ping timeout: 260 seconds)
13:35:24 wroathe joins (~wroathe@207-153-38-140.fttp.usinternet.com)
13:35:25 × wroathe quits (~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host)
13:35:25 wroathe joins (~wroathe@user/wroathe)
13:36:09 Digit joins (~user@user/digit)
13:39:33 × Me-me quits (~Me-me@user/me-me) (Quit: Something has gone terribly, terribly wrong, that being that I'm not here any more.)
13:46:52 eggplantade joins (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net)
13:47:36 × JScript quits (~JScript@144.48.39.182) (Ping timeout: 255 seconds)
13:49:24 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 255 seconds)
13:51:30 × eggplantade quits (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 260 seconds)
13:57:19 oljenkins joins (~philipp@p5dec4bb3.dip0.t-ipconnect.de)
13:58:22 yurideabreu joins (~yurideabr@189.6.27.58)
13:58:51 MajorBiscuit joins (~MajorBisc@145.94.190.155)
14:01:12 vglfr joins (~vglfr@37.73.65.155)
14:04:41 o-90 joins (~o-90@gateway/tor-sasl/o-90)
14:06:42 × xff0x quits (~xff0x@2405:6580:b080:900:23bd:4b23:18bc:5cdf) (Quit: xff0x)
14:07:37 ystael joins (~ystael@user/ystael)
14:09:35 <c_wraith> ok, so... I've been thinking about the difficulty I was seeing in getting ghci to <<loop>> yesterday, and I have a hypothesis. Only a major GC will detect loops in the threaded runtime, and sometime in recent years major GCs have been set to return early if there haven't been enough allocations to escape the nursery since the last major gc
14:10:52 rf joins (~rf@2605:59c8:1604:2210:5de6:62f6:20ef:34c8)
14:11:06 <c_wraith> that still doesn't feel complete, but it would explain a lot of it.
14:12:42 xff0x joins (~xff0x@2405:6580:b080:900:9b3e:353e:43c8:742e)
14:19:05 × o-90 quits (~o-90@gateway/tor-sasl/o-90) (Ping timeout: 255 seconds)
14:24:46 × oljenkins quits (~philipp@p5dec4bb3.dip0.t-ipconnect.de) (Quit: leaving)
14:25:20 oljenkins joins (~philipp@p5dec4bb3.dip0.t-ipconnect.de)
14:27:45 × vglfr quits (~vglfr@37.73.65.155) (Ping timeout: 240 seconds)
14:29:57 shriekingnoise joins (~shrieking@186.137.175.87)
14:31:23 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 246 seconds)
14:35:15 Guest26 joins (~Guest26@85.249.45.137)
14:44:17 × lortabac quits (~lortabac@2a01:e0a:541:b8f0:a82:d46a:c173:974c) (Quit: WeeChat 2.8)
14:48:01 × Vq quits (~vq@90-230-208-28-no77.tbcn.telia.com) (Ping timeout: 240 seconds)
14:50:15 Vq joins (~vq@90-230-208-28-no77.tbcn.telia.com)
14:52:28 eggplantade joins (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net)
14:56:00 × yurideabreu quits (~yurideabr@189.6.27.58) (Ping timeout: 255 seconds)
14:57:13 Thilastiko joins (~user@user/Thilastiko)
14:59:45 × alexherbo2 quits (~alexherbo@2a02-842a-8180-4601-d11e-aa70-1ef3-2bb0.rev.sfr.net) (Remote host closed the connection)
15:00:08 waleee joins (~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7)
15:02:24 tzh joins (~tzh@c-24-21-73-154.hsd1.or.comcast.net)
15:18:55 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Ping timeout: 276 seconds)
15:20:12 geekosaur joins (~geekosaur@xmonad/geekosaur)
15:22:23 Inst joins (~Inst@2601:6c4:4081:54f0:45f7:243a:3f7e:8aff)
15:22:52 × ddellacosta quits (~ddellacos@146.70.168.100) (Quit: WeeChat 3.8)
15:24:56 yurideabreu joins (~yurideabr@189.6.27.58)
15:31:25 × cheater quits (~Username@user/cheater) (Ping timeout: 240 seconds)
15:33:45 × michalz quits (~michalz@185.246.207.221) (Ping timeout: 240 seconds)
15:38:55 Square2 is now known as Square
15:39:25 fcortesi joins (~fcortesi@2001:470:69fc:105::f3a9)
15:41:01 × merijn quits (~merijn@c-001-001-006.client.esciencecenter.eduvpn.nl) (Ping timeout: 255 seconds)
15:41:05 michalz joins (~michalz@185.246.207.215)
15:42:13 cheater joins (~Username@user/cheater)
15:44:01 × MajorBiscuit quits (~MajorBisc@145.94.190.155) (Ping timeout: 250 seconds)
15:44:03 dh97 joins (~tanmoydas@2405:201:d02b:48f3:b4d9:7afc:ebd0:3f47)
15:44:21 × waleee quits (~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7) (Quit: WeeChat 3.8)
15:45:42 × michalz quits (~michalz@185.246.207.215) (Ping timeout: 265 seconds)
15:51:01 × [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Ping timeout: 240 seconds)
15:51:53 nate1 joins (~nate@98.45.169.16)
15:53:30 michalz joins (~michalz@185.246.207.201)
15:53:44 alexherbo2 joins (~alexherbo@2a02-842a-8180-4601-d11e-aa70-1ef3-2bb0.rev.sfr.net)
15:54:34 × gnalzo quits (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 3.8)
15:55:48 × dh97 quits (~tanmoydas@2405:201:d02b:48f3:b4d9:7afc:ebd0:3f47) (Ping timeout: 246 seconds)
15:56:45 × nate1 quits (~nate@98.45.169.16) (Ping timeout: 255 seconds)
15:58:48 × vpan quits (~0@mail.elitnet.lt) (Quit: Leaving.)
15:59:59 [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470)
16:00:07 × cdsmith quits (~cdsmithma@2001:470:69fc:105::284) (Quit: You have been kicked for being idle)
16:03:12 × michalz quits (~michalz@185.246.207.201) (Ping timeout: 264 seconds)
16:04:24 × Square quits (~Square4@user/square) (Ping timeout: 255 seconds)
16:09:15 xiliuya joins (~xiliuya@user/xiliuya)
16:11:14 × chele quits (~chele@user/chele) (Remote host closed the connection)
16:12:57 vglfr joins (~vglfr@88.155.117.69)
16:13:49 × werneta_ quits (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Remote host closed the connection)
16:15:17 gurkenglas joins (~gurkengla@dynamic-089-204-139-194.89.204.139.pool.telefonica.de)
16:16:27 × machinedgod quits (~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 246 seconds)
16:16:35 pavonia joins (~user@user/siracusa)
16:28:21 × coot quits (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot)
16:30:46 × kuribas quits (~user@ip-188-118-57-242.reverse.destiny.be) (Remote host closed the connection)
16:35:13 × acidjnk quits (~acidjnk@p200300d6e715c4838c5446d0fdde46cd.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
16:35:15 econo joins (uid147250@user/econo)
16:39:57 × Vq quits (~vq@90-230-208-28-no77.tbcn.telia.com) (Ping timeout: 255 seconds)
16:43:09 × zeenk quits (~zeenk@2a02:2f04:a20f:5200::fba) (Quit: Konversation terminated!)
16:44:20 acidjnk joins (~acidjnk@p200300d6e715c48345effc14b913dd3f.dip0.t-ipconnect.de)
16:51:48 Vq joins (~vq@90-227-195-9-no77.tbcn.telia.com)
16:58:20 harveypwca joins (~harveypwc@2601:246:c180:a570:3828:d8:e523:3f67)
16:59:24 Guest79 joins (~Guest79@dynamic-077-191-182-080.77.191.pool.telefonica.de)
17:00:41 Sgeo joins (~Sgeo@user/sgeo)
17:01:38 <fbytez> Have I written the following idiomatically?
17:01:44 <fbytez> let r = filter (\c -> not (isSpace c || isControl c)) string
17:02:29 <int-e> @pl \c -> not (isSpace c || isControl c)
17:02:29 <lambdabot> not . liftM2 (||) isSpace isControl
17:02:42 <int-e> sheer beauty
17:03:21 <int-e> :t not . ((||) <$> isSpace <*> isControl)
17:03:22 <lambdabot> Char -> Bool
17:03:28 <int-e> I'd leave it as is.
17:03:29 <Guest79> Is there any completely portable development environment for haskell (everything needed in one folder)?
17:03:51 <fbytez> int-e, as I did or as your first example?
17:04:17 <int-e> fbytez: the way you wrote it
17:04:23 × ryantrinkle quits (~ryantrink@140.174.255.47) (Read error: Connection reset by peer)
17:04:28 <fbytez> Thanks for taking a look.
17:04:31 <mauke> fbytez: looks good to me
17:05:49 <int-e> there's also [c | c <- string, not (isSpace c || isControl c)] with it's own flavor
17:06:19 <int-e> but if you use `filter` it'll still basically work if you later switch to Text, for example.
17:13:07 Guest7979 joins (~Guest79@dynamic-077-191-182-080.77.191.pool.telefonica.de)
17:13:18 × Guest7979 quits (~Guest79@dynamic-077-191-182-080.77.191.pool.telefonica.de) (Client Quit)
17:14:22 × Guest79 quits (~Guest79@dynamic-077-191-182-080.77.191.pool.telefonica.de) (Quit: Client closed)
17:14:43 mc47 joins (~mc47@xmonad/TheMC47)
17:15:16 ubert joins (~Thunderbi@p548c9793.dip0.t-ipconnect.de)
17:16:28 × vglfr quits (~vglfr@88.155.117.69) (Ping timeout: 252 seconds)
17:19:04 MajorBiscuit joins (~MajorBisc@2001:1c00:2408:a400:67e:5371:52a7:9b9a)
17:19:31 ryantrinkle joins (~ryantrink@140.174.240.199)
17:22:57 × acidjnk quits (~acidjnk@p200300d6e715c48345effc14b913dd3f.dip0.t-ipconnect.de) (Read error: Connection reset by peer)
17:24:35 acidjnk joins (~acidjnk@p200300d6e715c4837c197c2288c4bb55.dip0.t-ipconnect.de)
17:25:43 × kimiamania quits (~65804703@user/kimiamania) (Quit: PegeLinux)
17:26:51 × MajorBiscuit quits (~MajorBisc@2001:1c00:2408:a400:67e:5371:52a7:9b9a) (Ping timeout: 260 seconds)
17:27:18 kimiamania joins (~65804703@user/kimiamania)
17:28:19 hanabi joins (~hanabi@dhcp-077-251-039-086.chello.nl)
17:29:11 × bontaq quits (~user@ool-45779b84.dyn.optonline.net) (Remote host closed the connection)
17:31:22 × Guest26 quits (~Guest26@85.249.45.137) (Quit: Connection closed)
17:39:47 × Katarushisu quits (~Katarushi@cpc147790-finc20-2-0-cust502.4-2.cable.virginm.net) (Quit: The Lounge - https://thelounge.chat)
17:45:12 × gurkenglas quits (~gurkengla@dynamic-089-204-139-194.89.204.139.pool.telefonica.de) (Ping timeout: 264 seconds)
17:48:02 Digitteknohippie joins (~user@user/digit)
17:49:25 × Digit quits (~user@user/digit) (Ping timeout: 240 seconds)
17:49:27 × Goodbye_Vincent quits (cyvahl@freakshells.net) (Read error: Connection reset by peer)
17:50:37 Goodbye_Vincent joins (cyvahl@198.244.205.143)
17:51:20 × Guest6213 quits (~rs@p200300cf072e68ea6b29732cbdb21e80.dip0.t-ipconnect.de) (Quit: Client closed)
17:55:10 <sm> Guest79: no, I think an online environment like code.world/haskell or repl.it would probably be the closest
17:55:29 × harveypwca quits (~harveypwc@2601:246:c180:a570:3828:d8:e523:3f67) (Quit: Leaving)
17:55:41 <sm[i]> argh, did it again
17:56:03 <sm[i]> those speedy Guests
17:57:29 segfaultfizzbuzz joins (~segfaultf@23-93-74-212.fiber.dynamic.sonic.net)
17:57:45 × Digitteknohippie quits (~user@user/digit) (Ping timeout: 240 seconds)
18:08:07 yurideabreu_ joins (~yurideabr@189.6.27.58)
18:08:34 × yurideabreu quits (~yurideabr@189.6.27.58) (Ping timeout: 276 seconds)
18:09:01 michalz joins (~michalz@185.246.207.221)
18:12:39 × yurideabreu_ quits (~yurideabr@189.6.27.58) (Ping timeout: 250 seconds)
18:12:44 <bionade24> Do you also see those <haskell> tags on this page? https://wiki.haskell.org/How_to_get_rid_of_IO Those should be fields, shouldn't they?
18:14:48 whatsupdoc joins (uid509081@id-509081.hampstead.irccloud.com)
18:15:54 <tomsmeding> I get the feeling that the haskell wiki css is kinda broken
18:15:59 <int-e> if you look at the source it says :<haskell>, then a line of Haskell code, and the </haskell>... is there a markup dialog that works like this for code blocks?
18:16:00 <tomsmeding> pages that looked fine before have the same issue
18:16:10 <tomsmeding> e.g. https://wiki.haskell.org/State_Monad
18:17:11 <sm> I have a feeling hgolden upgraded the wiki and was/is working on fixing
18:17:47 Digit joins (~user@user/digit)
18:17:48 waleee joins (~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7)
18:18:13 <int-e> or was there a custom plugin for making <haskell>...</haskell> work that is now absent or broken
18:19:00 <int-e> would #haskell-infrastructure care about this?
18:21:56 hanabi_ joins (~hanabi@dhcp-077-251-039-086.chello.nl)
18:22:18 × hanabi quits (~hanabi@dhcp-077-251-039-086.chello.nl) (Read error: Connection reset by peer)
18:22:30 × xiliuya quits (~xiliuya@user/xiliuya) (Quit: bye~)
18:26:22 <monochrom> There is always a custom plugin for <haskell> and I think <hask> (difference: block vs inline).
18:26:53 × Goodbye_Vincent quits (cyvahl@198.244.205.143) (Remote host closed the connection)
18:27:07 <monochrom> And it has always been toggling between working and not working.
18:27:35 Goodbye_Vincent joins (cyvahl@freakshells.net)
18:27:51 <monochrom> <code> and <pre> always work.
18:30:19 <monochrom> Unpopular opinion: Get it to work before get it to look fancy. If <haskell> buys you colours at the price of being broken every 5 years, I say KISS and use <code> or <pre>.
18:30:42 <tomsmeding> every 5 years could've been worse
18:31:12 <tomsmeding> my university uses MS Teams, and that breaks every few weeks
18:31:17 <tomsmeding> in various interesting ways
18:34:53 × cassiopea quits (~cassiopea@user/cassiopea) (Remote host closed the connection)
18:39:14 × eggplantade quits (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
18:41:03 eggplantade joins (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net)
18:48:12 hueso_ joins (~root@user/hueso)
18:48:39 × hueso quits (~root@user/hueso) (Read error: Connection reset by peer)
18:50:16 gehmehgeh is now known as gmg
18:52:01 <bionade24> int-e: Did you or someone else report this in #haskell-infra ? I don't want this to be forgotten again.
18:52:40 coot joins (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba)
18:53:36 int-e didn't
19:00:02 × img quits (~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in)
19:04:28 × Goodbye_Vincent quits (cyvahl@freakshells.net) (Remote host closed the connection)
19:04:40 <fbytez> Is there a standard function / operator that curries functions in reverse order to `.`?
19:04:47 × msavoritias quits (cb716af6b3@irc.cheogram.com) (Ping timeout: 246 seconds)
19:05:00 img joins (~img@user/img)
19:05:08 × polykernel[m] quits (~polykerne@user/polykernel) (Quit: issued !quit command)
19:05:11 Goodbye_Vincent joins (cyvahl@freakshells.net)
19:05:18 <tomsmeding> :t (>>>)
19:05:20 <lambdabot> forall k (cat :: k -> k -> *) (a :: k) (b :: k) (c :: k). Category cat => cat a b -> cat b c -> cat a c
19:05:26 <tomsmeding> :t (>>>) @(->)
19:05:27 <lambdabot> error: parse error on input ‘->’
19:05:34 <tomsmeding> % :set -XTypeApplications
19:05:34 <yahb2> <no output>
19:05:39 <fbytez> Is it in prelude?
19:05:43 <tomsmeding> % :t (Control.Category.>>>) @(->)
19:05:43 <yahb2> (Control.Category.>>>) @(->) ; :: Control.Category.Category (->) => (a -> b) -> (b -> c) -> a -> c
19:05:51 <tomsmeding> no, it's there
19:05:58 <fbytez> Right, thanks very much.
19:06:22 <tomsmeding> % :t (Control.Category.<<<) @(->) -- fbytez this is just (.) with a different name
19:06:22 <yahb2> (Control.Category.<<<) @(->) -- fbytez this is just (.) with a different name ; :: Control.Category.Category (->) => (b -> c) -> (a -> b) -> a -> c
19:06:31 <tomsmeding> lol double mention, sorry
19:06:50 <fbytez> No problem at all.
19:10:50 <fbytez> What am I doing here? Needs some form of quoting? -- `import Control.Category (>>>)`
19:10:58 × rburkholder quits (~blurb@96.45.2.121) (Ping timeout: 276 seconds)
19:11:00 <fbytez> *doing wrong
19:11:59 Katarushisu joins (~Katarushi@cpc147790-finc20-2-0-cust502.4-2.cable.virginm.net)
19:14:18 <fbytez> error: parse error on input ‘>>>’
19:16:51 <jean-paul[m]> you need more ()
19:17:00 <jean-paul[m]> the outer set of ( ) introduces your import list
19:17:30 <jean-paul[m]> then a set of ( ) around >>> lets you identify the thing-with-a-funny-name
19:18:05 <jean-paul[m]> like if you wanted to refer to >>> as a value, you would `x = (>>>)`, not `x = >>>`
19:18:10 <fbytez> Because of it being an infix operator?
19:18:10 Square2 joins (~Square4@user/square)
19:19:16 <jean-paul[m]> Actually I'm not sure what the essential cause is, maybe someone else can enlighten us
19:19:32 Tuplanolla joins (~Tuplanoll@91-159-68-236.elisa-laajakaista.fi)
19:19:48 unit73e joins (~emanuel@2001:818:e8dd:7c00:656:e5ff:fe72:9d36)
19:22:19 <geekosaur> it turns an infix operator into a prefix function
19:22:36 <geekosaur> conversely `` turns a prefix function into an infix operator
19:23:10 <unit73e> I just found out that haddock has SVG like this one here: https://hackage.haskell.org/package/active-0.2.0.17/docs/Data-Active.html#g:7
19:23:13 <unit73e> very neat imo
19:26:34 polykernel[m] joins (~polykerne@user/polykernel)
19:27:15 polykernel[m] parts (~polykerne@user/polykernel) ()
19:30:51 opticblast joins (~Thunderbi@172.58.85.88)
19:38:58 nehsou^ joins (~nehsou@c-76-105-96-13.hsd1.ga.comcast.net)
19:40:56 ft joins (~ft@p4fc2a88b.dip0.t-ipconnect.de)
19:42:03 × Goodbye_Vincent quits (cyvahl@freakshells.net) (Remote host closed the connection)
19:42:32 × aeroplane quits (~user@user/aeroplane) (Ping timeout: 252 seconds)
19:42:46 Goodbye_Vincent joins (cyvahl@freakshells.net)
19:43:20 <fbytez> Thanks, jean-paul[m] and geekosaur.
19:43:36 × stiell_ quits (~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection)
19:45:06 zer0bitz_ joins (~zer0bitz@2001:2003:f443:d600:d2a:4f3:eccf:87eb)
19:45:49 × coot quits (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot)
19:46:15 × zer0bitz quits (~zer0bitz@dsl-hkibng32-54f843-214.dhcp.inet.fi) (Ping timeout: 255 seconds)
19:49:59 Square2 is now known as Square
19:53:30 nate1 joins (~nate@98.45.169.16)
19:55:20 machinedgod joins (~machinedg@d198-53-218-113.abhsia.telus.net)
19:56:18 × eggplantade quits (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
19:56:33 × opticblast quits (~Thunderbi@172.58.85.88) (Remote host closed the connection)
19:57:06 opticblast joins (~june@172.58.85.88)
19:58:08 opticblast parts (~june@172.58.85.88) ()
19:58:18 × nate1 quits (~nate@98.45.169.16) (Ping timeout: 252 seconds)
19:59:35 opticblast joins (~june@172.58.85.88)
20:00:33 × opticblast quits (~june@172.58.85.88) (Client Quit)
20:04:44 × _ht quits (~Thunderbi@28-52-174-82.ftth.glasoperator.nl) (Quit: _ht)
20:08:56 jlwoodwa joins (~june@172.58.85.88)
20:09:28 × jlwoodwa quits (~june@172.58.85.88) (Client Quit)
20:09:35 son0p joins (~ff@181.136.122.143)
20:09:50 jlwoodwa joins (~june@172.58.85.88)
20:19:39 × Goodbye_Vincent quits (cyvahl@freakshells.net) (Remote host closed the connection)
20:20:20 Goodbye_Vincent joins (cyvahl@freakshells.net)
20:21:01 × mc47 quits (~mc47@xmonad/TheMC47) (Remote host closed the connection)
20:23:21 × jlwoodwa quits (~june@172.58.85.88) (Quit: leaving)
20:24:14 × whatsupdoc quits (uid509081@id-509081.hampstead.irccloud.com) (Quit: Connection closed for inactivity)
20:24:21 × alexherbo2 quits (~alexherbo@2a02-842a-8180-4601-d11e-aa70-1ef3-2bb0.rev.sfr.net) (Remote host closed the connection)
20:27:35 stiell_ joins (~stiell@gateway/tor-sasl/stiell)
20:28:00 × Thilastiko quits (~user@user/Thilastiko) (Quit: ERC (IRC client for Emacs 26.3))
20:28:41 Guest7 joins (~Guest7@2001:a62:19ac:e601:62bf:be94:859d:59bd)
20:29:00 × Guest7 quits (~Guest7@2001:a62:19ac:e601:62bf:be94:859d:59bd) (Client Quit)
20:33:52 wroathe joins (~wroathe@207-153-38-140.fttp.usinternet.com)
20:33:52 × wroathe quits (~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host)
20:33:52 wroathe joins (~wroathe@user/wroathe)
20:46:31 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 276 seconds)
20:47:18 tosyl joins (~user@103.206.114.87)
20:48:36 × trev quits (~trev@user/trev) (Quit: trev)
20:49:30 coot joins (~coot@213.134.170.228)
20:51:17 zeenk joins (~zeenk@2a02:2f04:a20f:5200::fba)
20:56:48 eggplantade joins (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net)
20:58:38 × tosyl quits (~user@103.206.114.87) (Quit: ##french)
20:58:39 pyook joins (~puke@user/puke)
21:00:39 × Goodbye_Vincent quits (cyvahl@freakshells.net) (Remote host closed the connection)
21:01:21 Goodbye_Vincent joins (cyvahl@freakshells.net)
21:01:27 yurideabreu_ joins (~yurideabr@189.6.27.58)
21:01:28 × eggplantade quits (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 276 seconds)
21:04:05 tosyl joins (~user@103.206.114.114)
21:07:25 × pyook quits (~puke@user/puke) (Ping timeout: 240 seconds)
21:10:02 accord joins (uid568320@id-568320.hampstead.irccloud.com)
21:17:03 × takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
21:28:08 <fbytez> If anyone is interested, the following is a simple irc privmsg binary, which is what you've been helping me with: https://paste.tomsmeding.com/blh01bZQ
21:30:45 × czy quits (~user@host-140-25.ilcub310.champaign.il.us.clients.pavlovmedia.net) (Remote host closed the connection)
21:33:54 alexherbo2 joins (~alexherbo@2a02-842a-8180-4601-d11e-aa70-1ef3-2bb0.rev.sfr.net)
21:41:54 × Goodbye_Vincent quits (cyvahl@freakshells.net) (Read error: Connection reset by peer)
21:42:36 Goodbye_Vincent joins (cyvahl@freakshells.net)
21:56:15 × __monty__ quits (~toonn@user/toonn) (Quit: leaving)
22:00:21 × Katarushisu quits (~Katarushi@cpc147790-finc20-2-0-cust502.4-2.cable.virginm.net) (Quit: The Lounge - https://thelounge.chat)
22:00:51 Katarushisu joins (~Katarushi@cpc147790-finc20-2-0-cust502.4-2.cable.virginm.net)
22:02:45 gurkenglas joins (~gurkengla@dynamic-089-204-139-194.89.204.139.pool.telefonica.de)
22:03:58 × Katarushisu quits (~Katarushi@cpc147790-finc20-2-0-cust502.4-2.cable.virginm.net) (Client Quit)
22:05:27 czy joins (~user@50.30.140.25)
22:06:41 × coot quits (~coot@213.134.170.228) (Quit: coot)
22:08:10 × michalz quits (~michalz@185.246.207.221) (Remote host closed the connection)
22:08:21 Katarushisu joins (~Katarushi@cpc147790-finc20-2-0-cust502.4-2.cable.virginm.net)
22:18:18 × Tuplanolla quits (~Tuplanoll@91-159-68-236.elisa-laajakaista.fi) (Quit: Leaving.)
22:18:34 pyook joins (~puke@user/puke)
22:19:39 × Goodbye_Vincent quits (cyvahl@freakshells.net) (Remote host closed the connection)
22:19:50 elevenkb joins (~elevenkb@105.225.53.253)
22:19:56 × elevenkb quits (~elevenkb@105.225.53.253) (Write error: Broken pipe)
22:20:22 Goodbye_Vincent joins (cyvahl@freakshells.net)
22:22:23 × azimut quits (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 255 seconds)
22:32:24 azimut joins (~azimut@gateway/tor-sasl/azimut)
22:40:19 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
22:44:25 × gurkenglas quits (~gurkengla@dynamic-089-204-139-194.89.204.139.pool.telefonica.de) (Ping timeout: 240 seconds)
22:46:36 gurkenglas joins (~gurkengla@dynamic-046-114-176-254.46.114.pool.telefonica.de)
22:53:02 eggplantade joins (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net)
22:57:05 × eggplantade quits (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 240 seconds)
22:57:24 × Goodbye_Vincent quits (cyvahl@freakshells.net) (Remote host closed the connection)
22:58:07 Goodbye_Vincent joins (cyvahl@freakshells.net)
23:01:29 Raito_Bezarius joins (~Raito@wireguard/tunneler/raito-bezarius)
23:04:41 × azimut quits (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 255 seconds)
23:04:47 elevenkb87 joins (~elevenkb@105.225.53.253)
23:06:00 × elevenkb87 quits (~elevenkb@105.225.53.253) (Client Quit)
23:08:35 × jle` quits (~jle`@cpe-23-240-75-236.socal.res.rr.com) (Ping timeout: 260 seconds)
23:10:15 jle` joins (~jle`@cpe-23-240-75-236.socal.res.rr.com)
23:11:38 elevenkb joins (~user@105.225.53.253)
23:13:27 × elevenkb quits (~user@105.225.53.253) (Quit: ERC 5.4.1 (IRC client for GNU Emacs 30.0.50))
23:13:41 × zeenk quits (~zeenk@2a02:2f04:a20f:5200::fba) (Quit: Konversation terminated!)
23:13:45 elevenkb joins (~user@105.225.53.253)
23:14:35 × stiell_ quits (~stiell@gateway/tor-sasl/stiell) (Ping timeout: 255 seconds)
23:15:30 jmdaemon joins (~jmdaemon@user/jmdaemon)
23:17:26 × unit73e quits (~emanuel@2001:818:e8dd:7c00:656:e5ff:fe72:9d36) (Remote host closed the connection)
23:17:42 stiell_ joins (~stiell@gateway/tor-sasl/stiell)
23:17:46 × acidjnk quits (~acidjnk@p200300d6e715c4837c197c2288c4bb55.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
23:18:04 × tremon quits (~tremon@83.80.159.219) (Quit: getting boxed in)
23:18:22 slack1256 joins (~slack1256@181.42.40.106)
23:18:30 × jero98772 quits (~jero98772@2800:484:1d84:9000::3) (Ping timeout: 252 seconds)
23:24:05 × hanabi_ quits (~hanabi@dhcp-077-251-039-086.chello.nl) (Ping timeout: 240 seconds)
23:24:39 Me-me joins (~Me-me@146.102.215.218.dyn.iprimus.net.au)
23:24:42 × Me-me quits (~Me-me@146.102.215.218.dyn.iprimus.net.au) (Changing host)
23:24:42 Me-me joins (~Me-me@user/me-me)
23:31:47 jero98772 joins (~jero98772@2800:484:1d84:9000::3)
23:31:48 gurkengl1s joins (~gurkengla@dynamic-046-114-176-254.46.114.pool.telefonica.de)
23:32:05 × stiell_ quits (~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection)
23:32:27 stiell_ joins (~stiell@gateway/tor-sasl/stiell)
23:34:02 emmanuelux joins (~emmanuelu@user/emmanuelux)
23:34:13 × gurkenglas quits (~gurkengla@dynamic-046-114-176-254.46.114.pool.telefonica.de) (Ping timeout: 276 seconds)
23:34:58 jpds4 is now known as jpds
23:44:53 mauke_ joins (~mauke@user/mauke)
23:46:25 × mauke quits (~mauke@user/mauke) (Ping timeout: 240 seconds)
23:46:25 mauke_ is now known as mauke
23:47:07 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection)
23:48:02 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
23:48:16 × Goodbye_Vincent quits (cyvahl@freakshells.net) (Remote host closed the connection)
23:48:58 Goodbye_Vincent joins (cyvahl@freakshells.net)
23:54:59 nate1 joins (~nate@98.45.169.16)
23:59:56 × nate1 quits (~nate@98.45.169.16) (Ping timeout: 252 seconds)

All times are in UTC on 2023-04-24.