Home liberachat/#haskell: Logs Calendar

Logs on 2022-10-29 (liberachat/#haskell)

00:00:27 <cpli> talismanick, the guarantee applies to entire algorithms, i.e. only using wait-free makes you wait-free
00:00:37 <EvanR> cpli, nothing stops you from writing STM code that retries forever. Actually that's a handy way to get a dummy thread that does nothing
00:00:43 <EvanR> without busy looping
00:01:09 <cpli> EvanR do you have a simple example? that does sound fun
00:01:11 azimut joins (~azimut@gateway/tor-sasl/azimut)
00:01:18 <EvanR> forever retry
00:01:24 <dminuoso> And unlike the naïve MVar variant, GHC wont "help you catch a bug" :p
00:01:29 <cpli> (mainly because a thread doing nothing is kind of useful in places-
00:01:40 × califax quits (~califax@user/califx) (Remote host closed the connection)
00:01:41 <cpli> EvanR i.e. a haskell example
00:01:46 <EvanR> that's... haskell xD
00:01:49 <cpli> oh
00:01:50 <dminuoso> cpli: that was a haskell example. :)
00:01:57 <talismanick> EvanR: That reminds me a bit of a technique in a paper on OOP (the Actor Model back then, really) in Concurrent Prolog
00:02:06 <cpli> Control.Concurrent.retry?
00:02:09 <dminuoso> Isnt it lovely, how you can express a thought so vividly like `forever retry`
00:02:12 <EvanR> :t retry
00:02:14 <lambdabot> error: Variable not in scope: retry
00:02:23 <geekosaur> % :t retry
00:02:23 <yahb2> <interactive>:1:1: error: Variable not in scope: retry
00:02:24 <dminuoso> % import Control.Monad
00:02:24 <yahb2> <no output>
00:02:29 <dminuoso> % import GHC.Conc
00:02:30 <yahb2> <no output>
00:02:32 × freeside quits (~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 250 seconds)
00:02:35 <dminuoso> % :t forever retry
00:02:35 <yahb2> forever retry :: STM b
00:02:51 <cpli> beautiful
00:02:58 <dminuoso> Is the `forever` even needed?
00:03:16 ubert1 joins (~Thunderbi@91.141.46.203.wireless.dyn.drei.com)
00:03:17 <talismanick> https://dl.acm.org/doi/10.1007/BF03037020
00:03:19 <monochrom> Only one way to find out. Try. :)
00:03:21 <cpli> talismanick: concurrent prolog sounds wild.
00:03:22 <dminuoso> % print =<< (atomically retry :: STM ())
00:03:23 <yahb2> <interactive>:20:12: error: ; • Couldn't match expected type: STM () ; with actual type: IO a0 ; • In the second argument of ‘(=<<)’, namely ; ‘(atomically retry :...
00:03:28 <dminuoso> % print =<< atomically (retry :: STM ())
00:03:30 <yahb2> <interactive>:4:32: error: ; Not in scope: type constructor or class ‘STM’
00:03:41 <dminuoso> % print =<< atomically retry
00:03:42 <yahb2> <interactive>:6:11: error: ; Variable not in scope: atomically :: t0 -> IO a0 ; ; <interactive>:6:22: error: Variable not in scope: retry
00:03:52 <dminuoso> % :t retry
00:03:53 <yahb2> <interactive>:1:1: error: Variable not in scope: retry
00:03:57 × ubert quits (~Thunderbi@178.165.186.249.wireless.dyn.drei.com) (Ping timeout: 240 seconds)
00:03:57 ubert1 is now known as ubert
00:03:58 <dminuoso> % import Control.Monad
00:03:58 <yahb2> <no output>
00:04:00 <dminuoso> % import GHC.COnc
00:04:00 <yahb2> <no location info>: error: ; Could not find module ‘GHC.COnc’ ; Perhaps you meant GHC.Conc (from base-4.16.3.0)
00:04:02 <dminuoso> % import GHC.Conc
00:04:03 <yahb2> <no output>
00:04:16 × crns quits (~netcrns@user/crns) (Ping timeout: 250 seconds)
00:04:17 <dminuoso> % print =<< atomically (retry :: STM ())
00:04:19 <yahb2> <interactive>:4:32: error: ; Not in scope: type constructor or class ‘STM’
00:04:28 <dminuoso> I do not know whats going on here.
00:04:29 califax joins (~califax@user/califx)
00:04:49 <jbggs[m]> Is this conversational AI
00:04:50 <dminuoso> *** Exception: thread blocked indefinitely in an STM transaction
00:04:59 <monochrom> Retry with Control.Concurrent.STM? :)
00:04:59 <dminuoso> EvanR: So I do not think this will actually work.
00:05:28 × dolio quits (~dolio@130.44.134.54) (Quit: ZNC 1.8.2 - https://znc.in)
00:05:30 <dminuoso> A similar detection as with MVar seems to be existing here, except I do not think you can work around this.
00:05:37 <[Leary]> There's no memory it depends on, so the retry will never happen.
00:05:58 freeside joins (~mengwong@bb115-66-48-84.singnet.com.sg)
00:06:12 <EvanR> looks like STM is too smart for me
00:06:34 <[Leary]> So the way to make it go forever is to have it read something but ignore it, while another thread can potentially change that thing?
00:06:37 <EvanR> forever retry generated some good puns though
00:06:43 <cpli> i'll be back in a bit, this was fun, i'll implement my star breech when i'm back
00:07:03 dolio joins (~dolio@130.44.134.54)
00:07:05 <dminuoso> EvanR: Know what you can do, however?
00:07:11 <dminuoso> % import Control.Monad
00:07:11 <yahb2> <no output>
00:07:13 <dminuoso> % import Data.Function
00:07:14 <yahb2> <no output>
00:07:16 <dminuoso> % forever fix error
00:07:19 <yahb2> <interactive>:4:1: error: ; Variable not in scope: forever :: t0 -> ([Char] -> a0) -> t ; ; <interactive>:4:9: error: Variable not in scope: fix
00:07:22 × dolio quits (~dolio@130.44.134.54) (Client Quit)
00:07:33 <monochrom> Yeah, one transaction reads a TVar then goes "if it's 0, retry". Another thread runs "write 0 to that TVar" every once in a while.
00:07:36 <dminuoso> Okay, this would normally loop. Something is up with yahb here
00:08:22 dolio joins (~dolio@130.44.134.54)
00:08:28 <dminuoso> monochrom: I think doing the inverse is better. If its 0, retry, and have a signal handler write 1 to that tvar on sigterm.
00:08:35 <monochrom> Well, import Control.Monad and then can't find forever, that's an issue, yeah.
00:09:07 <dminuoso> monochrom: the delay suggests to me there's something killing the yahb instance (due to timeout, presumably), and perhaps re-inputing the last command.
00:09:17 <monochrom> I'm going to issue % :quit to see if it helps to, "have you turned it off and on again?"
00:09:21 <monochrom> % :quit
00:09:21 <yahb2> <no output>
00:09:33 <EvanR> % 1 `div` 0
00:09:33 <yahb2> *** Exception: divide by zero
00:09:47 <dminuoso> Hold on.
00:09:51 <dminuoso> I thought you couldnt divide by zero?
00:09:53 <EvanR> yahb is more resilient than the idris bot
00:10:02 <dminuoso> I finally have the answer. Haskell shows me you can!
00:10:20 <EvanR> you can divide by zero on graphical linear algebra .net blog xD
00:10:48 <monochrom> I can divide by zero in Double. In fact I can do it two ways. :)
00:10:51 <dminuoso> If you divide by negative zero, do you get a negative bottom?
00:11:09 crns joins (~netcrns@p4ff5e2ab.dip0.t-ipconnect.de)
00:11:09 × crns quits (~netcrns@p4ff5e2ab.dip0.t-ipconnect.de) (Changing host)
00:11:09 crns joins (~netcrns@user/crns)
00:11:14 <dminuoso> (and does a negative bottom converge?)
00:11:28 <EvanR> % 1 `div` (negate 0) < 0
00:11:29 <yahb2> *** Exception: divide by zero
00:12:04 <EvanR> % 1 `div` negate 0 < 0
00:12:05 <yahb2> *** Exception: divide by zero
00:12:44 <EvanR> not lazy enough
00:12:47 <monochrom> > sqrt (-0)
00:12:48 <lambdabot> -0.0
00:12:49 <dminuoso> EvanR: So here comes the difficult thing. We may not see the real negative bottom. Imprecise exceptions means we can never know whether the error came from your division or not!
00:12:50 <monochrom> \∩/
00:13:53 <monochrom> Blame theory says that it always came from someone else's division!
00:14:45 <dminuoso> Does that mean if my Haskell program bottoms out, I can never be liable for damages or injuries?
00:14:57 <dminuoso> (Provably)
00:15:35 <geekosaur> only if the bottom's exceptional
00:15:58 <monochrom> That's under the jurisdiction of legal theory, not blame theory. :)
00:17:26 <EvanR> there better not be any bottoms in the avionics software on my plane
00:17:32 <EvanR> of course, there probably are
00:18:25 <EvanR> dminuoso, aiui imprecise exceptions means when evaluating something that could bottom in several ways
00:19:12 <EvanR> one way is selected and that's what you get. But you might be able to know which is which
00:19:25 <monochrom> It's an abstraction. If an expression have several sources of exceptions, imprecise exception says one of them is nondeterministically chosen.
00:19:53 <monochrom> But clearly it is not very nondeterministic. If you find out the evaluation order, that settles it.
00:20:22 <EvanR> I mean you might get one of several different error messages (if any)
00:20:34 <monochrom> This is an abstraction façade to entitle the optimizer to do reordering.
00:20:59 <dminuoso> monochrom: It'll be easy to argue "this is an implementation detail", "lets just worry about language semantics"
00:21:00 <EvanR> it says it's non deterministic?
00:21:13 <EvanR> in some fancy technical sense?
00:21:14 <dminuoso> Otherwise I will just shift the blame (and damages) to the GHC team as being responsible for the implementation.
00:21:19 <monochrom> The same way we say "the OS nondeterministically chooses the next thread to run" but clearly it's deterministic once you know the actual scheduler and all the other 1 million factors.
00:21:22 <dminuoso> I will win this argument in court.
00:21:50 <dminuoso> monochrom: Okay, that means I must really buy a quantum RNG PCI card.
00:22:06 <monochrom> Oh, hiding an implementation detail is a case of abstraction, too.
00:22:06 <dminuoso> If evaluation order is chosen truly randomly, I have a way out.
00:24:21 <monochrom> Yes, to date, short of quantum computing, nondeterminism has always been a hide-implementation-details abstraction, in the very same sense as throwing a die is regarded nondeterministic just because no one bothers measuring all factors involved.
00:24:29 <alexfmpe[m]> as long as any evaluation order results in damages, you're liable according to a non-deterministic finite judge machine
00:25:51 × boxscape_ quits (~boxscape@81.191.27.107) (Remote host closed the connection)
00:26:24 <monochrom> Although, beautifully, this abstraction inspires the beautiful theory of nondeterminisitc computing, which is pivotal in helping us frame very important questions on complexity.
00:29:05 <monochrom> It is also possible that the multiple-world interpretation of quantum computing still makes your quantum nondeterminism a hide-details abstraction, i.e., you are just ignorant of all the entanglements out there that affect you.
00:29:22 <dolio> That's not the only one.
00:29:55 × j4cc3b quits (~j4cc3b@pool-74-105-2-138.nwrknj.fios.verizon.net) (Quit: Client closed)
00:36:05 nate3 joins (~nate@98.45.169.16)
00:36:08 slack1256 joins (~slack1256@181.42.52.169)
00:40:29 wroathe joins (~wroathe@207-153-38-140.fttp.usinternet.com)
00:40:29 × wroathe quits (~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host)
00:40:29 wroathe joins (~wroathe@user/wroathe)
00:40:58 × nate3 quits (~nate@98.45.169.16) (Ping timeout: 255 seconds)
00:48:09 × Kaiepi quits (~Kaiepi@108.175.84.104) (Ping timeout: 255 seconds)
00:52:57 × beteigeuze quits (~Thunderbi@bl14-81-220.dsl.telepac.pt) (Ping timeout: 240 seconds)
01:03:11 redmp joins (~redmp@mobile-166-170-43-64.mycingular.net)
01:04:38 nate3 joins (~nate@98.45.169.16)
01:06:14 × xff0x quits (~xff0x@2405:6580:b080:900:2e5f:ef77:7c98:ca52) (Ping timeout: 250 seconds)
01:08:47 × waleee quits (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 276 seconds)
01:09:29 × money quits (sid532813@user/polo) ()
01:09:57 × freeside quits (~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 272 seconds)
01:10:39 × albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
01:16:45 albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8)
01:18:54 freeside joins (~mengwong@bb115-66-48-84.singnet.com.sg)
01:18:54 xff0x joins (~xff0x@2405:6580:b080:900:2e5f:ef77:7c98:ca52)
01:23:34 × freeside quits (~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 250 seconds)
01:24:03 merijn joins (~merijn@86-86-29-250.fixed.kpn.net)
01:24:28 money joins (sid532813@user/polo)
01:25:42 freeside joins (~mengwong@bb115-66-48-84.singnet.com.sg)
01:33:23 × adanwan quits (~adanwan@gateway/tor-sasl/adanwan) (Remote host closed the connection)
01:33:44 adanwan joins (~adanwan@gateway/tor-sasl/adanwan)
01:42:09 × hgolden quits (~hgolden@cpe-172-251-233-141.socal.res.rr.com) (Remote host closed the connection)
01:42:43 × Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 246 seconds)
01:43:50 Lord_of_Life joins (~Lord@user/lord-of-life/x-2819915)
01:45:25 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 272 seconds)
01:53:02 × axeman quits (~quassel@ip-037-201-153-145.um10.pools.vodafone-ip.de) (Ping timeout: 250 seconds)
01:58:05 × merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 272 seconds)
02:03:52 × nate3 quits (~nate@98.45.169.16) (Ping timeout: 250 seconds)
02:07:26 money is now known as polo
02:08:22 × td_ quits (~td@83.135.9.42) (Ping timeout: 252 seconds)
02:10:05 td_ joins (~td@83.135.9.7)
02:10:26 × causal quits (~user@50.35.83.177) (Quit: WeeChat 3.6)
02:12:39 × slack1256 quits (~slack1256@181.42.52.169) (Ping timeout: 272 seconds)
02:17:43 × crns quits (~netcrns@user/crns) (Ping timeout: 272 seconds)
02:19:23 crns joins (~netcrns@p5dc33ed0.dip0.t-ipconnect.de)
02:19:23 × crns quits (~netcrns@p5dc33ed0.dip0.t-ipconnect.de) (Changing host)
02:19:23 crns joins (~netcrns@user/crns)
02:22:56 × freeside quits (~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 250 seconds)
02:26:37 frost75 joins (~frost@user/frost)
02:30:02 freeside joins (~mengwong@bb115-66-48-84.singnet.com.sg)
02:32:17 Kaiepi joins (~Kaiepi@108.175.84.104)
02:34:38 × freeside quits (~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 250 seconds)
02:37:18 freeside joins (~mengwong@bb115-66-48-84.singnet.com.sg)
02:43:24 × terrorjack quits (~terrorjac@2a01:4f8:1c1e:509a::1) (Quit: The Lounge - https://thelounge.chat)
02:44:44 terrorjack joins (~terrorjac@2a01:4f8:1c1e:509a::1)
02:45:14 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija)))
02:45:14 FinnElija joins (~finn_elij@user/finn-elija/x-0085643)
02:57:21 × constxd quits (~brad@47.55.121.233) (Quit: WeeChat 2.8)
03:01:09 × danza quits (~francesco@151.35.98.197) (Read error: Connection reset by peer)
03:03:25 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection)
03:05:45 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
03:06:16 × [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Ping timeout: 250 seconds)
03:16:11 tiziodcaio joins (~tiziodcai@2001:470:69fc:105::1:2bf8)
03:16:12 [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470)
03:16:41 danza joins (~francesco@bo-18-136-28.service.infuturo.it)
03:17:59 king_gs joins (~Thunderbi@2806:103e:29:47b9:f34b:ffff:4cfc:90a6)
03:18:10 jargon joins (~jargon@184.101.90.242)
03:21:01 × bilegeek quits (~bilegeek@2600:1008:b027:7f32:a99b:c297:feda:8531) (Quit: Leaving)
03:30:31 × td_ quits (~td@83.135.9.7) (Ping timeout: 246 seconds)
03:32:33 td_ joins (~td@83.135.9.8)
03:36:10 × Kaiepi quits (~Kaiepi@108.175.84.104) (Ping timeout: 250 seconds)
03:45:16 × freeside quits (~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 250 seconds)
03:46:32 × johnw quits (~johnw@2600:1700:cf00:db0:24dd:7cba:243c:c819) (Quit: ZNC - http://znc.in)
03:46:34 × [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection)
03:46:34 × litharge quits (litharge@libera/bot/litharge) (*.net *.split)
03:52:34 litharge joins (litharge@libera/bot/litharge)
03:54:24 merijn joins (~merijn@86-86-29-250.fixed.kpn.net)
03:55:37 finn_elija joins (~finn_elij@user/finn-elija/x-0085643)
03:55:37 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija)))
03:55:37 finn_elija is now known as FinnElija
03:58:26 × king_gs quits (~Thunderbi@2806:103e:29:47b9:f34b:ffff:4cfc:90a6) (Ping timeout: 276 seconds)
04:05:56 × frost75 quits (~frost@user/frost) (Quit: Client closed)
04:10:46 king_gs joins (~Thunderbi@187.201.83.115)
04:12:38 × flukiluke quits (~m-7humut@2603:c023:c000:6c7e:8945:ad24:9113:a962) (Remote host closed the connection)
04:12:59 × jao quits (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 272 seconds)
04:13:41 flukiluke joins (~m-7humut@2603:c023:c000:6c7e:8945:ad24:9113:a962)
04:14:08 × whatsupdoc quits (uid509081@id-509081.hampstead.irccloud.com) (Quit: Connection closed for inactivity)
04:17:25 × machinedgod quits (~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 272 seconds)
04:28:36 × merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 250 seconds)
04:30:01 × Vajb quits (~Vajb@85-76-71-213-nat.elisa-mobile.fi) (Read error: Connection reset by peer)
04:30:14 Vajb joins (~Vajb@hag-jnsbng11-58c3a5-27.dhcp.inet.fi)
04:35:03 Kaiepi joins (~Kaiepi@108.175.84.104)
04:51:27 src36 joins (~src@176.53.146.40)
04:52:27 × src36 quits (~src@176.53.146.40) (Client Quit)
04:58:00 × Unicorn_Princess quits (~Unicorn_P@user/Unicorn-Princess/x-3540542) (Remote host closed the connection)
05:08:39 <dsal> I'm using sqlite-simple in an app and would really like to add postgres support. All the options seem pretty invasive. What do people like these days?
05:09:21 × redmp quits (~redmp@mobile-166-170-43-64.mycingular.net) (Ping timeout: 272 seconds)
05:12:01 × Vajb quits (~Vajb@hag-jnsbng11-58c3a5-27.dhcp.inet.fi) (Read error: Connection reset by peer)
05:12:12 Vajb joins (~Vajb@2001:999:504:1841:9e47:1ec7:a52e:1d57)
05:15:51 × monochrom quits (trebla@216.138.220.146) (Quit: NO CARRIER)
05:23:50 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection)
05:24:49 × azimut quits (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 258 seconds)
05:24:49 FinnElija joins (~finn_elij@user/finn-elija/x-0085643)
05:24:54 <kronicmage> @pf \(a, b) (c, d) -> (a+c, b+d)
05:24:54 <lambdabot> Maybe you meant: pl bf
05:25:00 <kronicmage> @pl \(a, b) (c, d) -> (a+c, b+d)
05:25:01 <lambdabot> uncurry (flip flip snd . (ap .) . flip flip fst . ((.) .) . (. (+)) . flip . (((.) . (,)) .) . (+))
05:25:16 <kronicmage> ouch
05:28:04 monochrom joins (trebla@216.138.220.146)
05:28:16 <dsal> :t bimap (+) (+)
05:28:18 <lambdabot> (Bifunctor p, Num a1, Num a2) => p a1 a2 -> p (a1 -> a1) (a2 -> a2)
05:39:14 × jmorris quits (uid537181@id-537181.uxbridge.irccloud.com) (Quit: Connection closed for inactivity)
05:52:45 nate3 joins (~nate@98.45.169.16)
06:03:09 takuan joins (~takuan@178-116-218-225.access.telenet.be)
06:04:49 × king_gs quits (~Thunderbi@187.201.83.115) (Read error: Connection reset by peer)
06:05:28 king_gs joins (~Thunderbi@2806:103e:29:47b9:f34b:ffff:4cfc:90a6)
06:15:57 gurkenglas joins (~gurkengla@p548ac72e.dip0.t-ipconnect.de)
06:25:07 merijn joins (~merijn@86-86-29-250.fixed.kpn.net)
06:30:25 × nate3 quits (~nate@98.45.169.16) (Ping timeout: 272 seconds)
06:35:49 × birdgoose quits (~jesse@2406:e003:1d87:6601:e725:b6b4:ace8:4ebe) (Quit: Konversation terminated!)
06:36:07 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 258 seconds)
06:38:01 FinnElija joins (~finn_elij@user/finn-elija/x-0085643)
06:57:35 × king_gs quits (~Thunderbi@2806:103e:29:47b9:f34b:ffff:4cfc:90a6) (Quit: king_gs)
06:58:30 × merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 255 seconds)
06:59:22 × rembo10 quits (~rembo10@main.remulis.com) (Quit: ZNC 1.8.2 - https://znc.in)
07:01:55 rembo10 joins (~rembo10@main.remulis.com)
07:03:44 × danza quits (~francesco@bo-18-136-28.service.infuturo.it) (Ping timeout: 250 seconds)
07:05:00 gmg joins (~user@user/gehmehgeh)
07:09:03 × Kaiepi quits (~Kaiepi@108.175.84.104) (Ping timeout: 272 seconds)
07:16:59 danza joins (~francesco@151.57.22.153)
07:19:31 jtomas joins (~jtomas@191.red-88-17-199.dynamicip.rima-tde.net)
07:20:42 Kaiepi joins (~Kaiepi@108.175.84.104)
07:21:43 × danza quits (~francesco@151.57.22.153) (Read error: Connection reset by peer)
07:31:47 mixfix41 joins (~sdeny9ee@user/mixfix41)
07:37:23 acidjnk_new3 joins (~acidjnk@p200300d6e7137a26b5cba7005e8744f0.dip0.t-ipconnect.de)
07:38:38 × zaquest quits (~notzaques@5.130.79.72) (Remote host closed the connection)
07:39:57 zaquest joins (~notzaques@5.130.79.72)
07:42:57 × jargon quits (~jargon@184.101.90.242) (Remote host closed the connection)
07:43:11 coot joins (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba)
07:49:12 whatsupdoc joins (uid509081@id-509081.hampstead.irccloud.com)
08:02:01 × acidjnk_new3 quits (~acidjnk@p200300d6e7137a26b5cba7005e8744f0.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
08:08:24 vglfr joins (~vglfr@145.224.100.22)
08:09:10 titibandit joins (~titibandi@xdsl-87-79-250-160.nc.de)
08:09:28 lisbeths joins (uid135845@id-135845.lymington.irccloud.com)
08:11:50 polo is now known as Gambino
08:15:14 wootehfoot joins (~wootehfoo@user/wootehfoot)
08:19:51 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:5147:575b:dd93:ff03) (Remote host closed the connection)
08:21:52 merijn joins (~merijn@86-86-29-250.fixed.kpn.net)
08:34:03 × Sgeo_ quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer)
08:36:13 Tuplanolla joins (~Tuplanoll@91-159-69-11.elisa-laajakaista.fi)
08:43:24 emmanuelux joins (~emmanuelu@user/emmanuelux)
08:54:31 × Unhammer quits (~Unhammer@user/unhammer) (Ping timeout: 260 seconds)
08:55:20 × Batzy quits (~quassel@user/batzy) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
08:55:43 Batzy joins (~quassel@user/batzy)
08:57:17 thyriaen joins (~thyriaen@2a01:aea0:dd4:470d:6245:cbff:fe9f:48b1)
08:57:18 × Batzy quits (~quassel@user/batzy) (Client Quit)
08:57:43 Batzy joins (~quassel@user/batzy)
08:59:11 × vglfr quits (~vglfr@145.224.100.22) (Remote host closed the connection)
08:59:46 vglfr joins (~vglfr@145.224.100.22)
09:04:54 freeside joins (~mengwong@122.11.214.174)
09:08:29 Unhammer joins (~Unhammer@user/unhammer)
09:09:08 × tzh quits (~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz)
09:11:44 × tcard_ quits (~tcard@2400:4051:5801:7500:19ce:ed82:2ab7:90f9) (Read error: Connection reset by peer)
09:11:44 tcard__ joins (~tcard@2400:4051:5801:7500:19ce:ed82:2ab7:90f9)
09:15:27 AkechiShiro joins (~licht@user/akechishiro)
09:17:32 zeenk joins (~zeenk@2a02:2f04:a105:5d00:c862:f190:2ea:d494)
09:18:13 × econo quits (uid147250@user/econo) (Quit: Connection closed for inactivity)
09:20:19 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:5147:575b:dd93:ff03)
09:24:15 × thyriaen quits (~thyriaen@2a01:aea0:dd4:470d:6245:cbff:fe9f:48b1) (Quit: Leaving)
09:24:42 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:5147:575b:dd93:ff03) (Ping timeout: 252 seconds)
09:25:46 × merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 246 seconds)
09:26:00 × titibandit quits (~titibandi@xdsl-87-79-250-160.nc.de) (Remote host closed the connection)
09:27:00 thyriaen joins (~thyriaen@2a01:aea0:dd4:470d:6245:cbff:fe9f:48b1)
09:27:12 CiaoSen joins (~Jura@p200300c95724d3002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
09:27:17 titibandit joins (~titibandi@xdsl-87-79-250-160.nc.de)
09:28:44 jakalx parts (~jakalx@base.jakalx.net) ()
09:30:10 × thyriaen quits (~thyriaen@2a01:aea0:dd4:470d:6245:cbff:fe9f:48b1) (Remote host closed the connection)
09:31:15 thyriaen joins (~thyriaen@2a01:aea0:dd4:470d:6245:cbff:fe9f:48b1)
09:44:11 × titibandit quits (~titibandi@xdsl-87-79-250-160.nc.de) (Quit: Leaving.)
09:45:58 × thyriaen quits (~thyriaen@2a01:aea0:dd4:470d:6245:cbff:fe9f:48b1) (Remote host closed the connection)
09:46:16 <dminuoso> dsal: You can also just additionally load hasql, implement queries for both backends, and just keep a database independent layer in between.
09:46:32 <dminuoso> Just dont succumb to postgresql-simple.
09:46:41 thyriaen joins (~thyriaen@2a01:aea0:dd4:470d:6245:cbff:fe9f:48b1)
09:48:49 <dminuoso> With a bit of discipline you can probably reuse most queries across them
09:49:10 × biberu quits (~biberu@user/biberu) (Read error: Connection reset by peer)
09:49:55 <dminuoso> Otherwise hdbc is a thing, its not overly terrible
09:50:33 × jtomas quits (~jtomas@191.red-88-17-199.dynamicip.rima-tde.net) (Ping timeout: 272 seconds)
09:57:02 titibandit joins (~titibandi@xdsl-87-79-250-160.nc.de)
09:59:30 jakalx joins (~jakalx@base.jakalx.net)
10:02:05 biberu joins (~biberu@user/biberu)
10:02:57 × ubert quits (~Thunderbi@91.141.46.203.wireless.dyn.drei.com) (Ping timeout: 240 seconds)
10:05:02 <fendor[m]> Can I have something akin to rewrite rules for type family application? E.g., I have type level functions Append and RemoveLast, and I want `forall p . RemoveLast (Append p 'Z) ~ p` to hold
10:05:46 <fendor[m]> or do I need a type-plugin that fixes that adds this simplification for me?
10:07:39 × freeside quits (~mengwong@122.11.214.174) (Ping timeout: 272 seconds)
10:14:01 <[Leary]> fendor[m]: I'm not sure if there are better ways, but if you use defunctionalised type families you can write these rules into the definitions of `RemoveLast` and `Append`.
10:14:43 <probie> As a hack, I've often added those sort of things as assertions at the use site (I remember at one point needing `Reverse (Reverse xs) ~ xs`), which works well enough if their use is internal and not exposed to a user of one's library
10:15:41 <fendor[m]> [Leary]: Any resources on how to defunctionalise type families?
10:15:53 <fendor[m]> probie: that sounds curious, I am fine with terrible UX for now
10:16:16 × zer0bitz quits (~zer0bitz@2001:2003:f748:2000:99dc:7f1f:c53d:641d) (Read error: Connection reset by peer)
10:18:35 <[Leary]> fendor[m]: It's been a while since I read about it, I forget where. But this looks alright: https://free.cofree.io/2019/01/08/defunctionalization/
10:18:51 <fendor[m]> thank you!
10:19:14 zer0bitz joins (~zer0bitz@2001:2003:f748:2000:5894:8e10:5893:ce6f)
10:20:48 × jmdaemon quits (~jmdaemon@user/jmdaemon) (Ping timeout: 252 seconds)
10:29:12 burakcank is now known as Guest283
10:30:35 frost14 joins (~frost@user/frost)
10:31:35 × tcard__ quits (~tcard@2400:4051:5801:7500:19ce:ed82:2ab7:90f9) (Quit: Leaving)
10:32:32 × CiaoSen quits (~Jura@p200300c95724d3002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
10:32:36 beteigeuze joins (~Thunderbi@bl14-81-220.dsl.telepac.pt)
10:36:32 tcard joins (~tcard@2400:4051:5801:7500:19ce:ed82:2ab7:90f9)
10:39:29 × coot quits (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot)
10:40:04 coot joins (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba)
10:40:04 × coot quits (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Remote host closed the connection)
10:41:28 merijn joins (~merijn@86-86-29-250.fixed.kpn.net)
10:45:54 jtomas joins (~jtomas@191.red-88-17-199.dynamicip.rima-tde.net)
10:46:11 __monty__ joins (~toonn@user/toonn)
10:53:21 × lisbeths quits (uid135845@id-135845.lymington.irccloud.com) (Quit: Connection closed for inactivity)
11:09:00 danza joins (~francesco@151.35.235.74)
11:12:43 janlely joins (~janlely@122.231.201.44)
11:16:00 × merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 264 seconds)
11:16:48 × beteigeuze quits (~Thunderbi@bl14-81-220.dsl.telepac.pt) (Ping timeout: 250 seconds)
11:17:55 beteigeuze joins (~Thunderbi@89.187.168.47)
11:21:09 × emmanuelux quits (~emmanuelu@user/emmanuelux) (Quit: au revoir)
11:25:50 acidjnk joins (~acidjnk@p200300d6e7137a2658873e742925ddf0.dip0.t-ipconnect.de)
11:36:10 × mrmonday quits (~robert@what.i.hope.is.not.a.tabernaevagant.es) (Quit: .)
11:37:55 mrmonday joins (~robert@what.i.hope.is.not.a.tabernaevagant.es)
11:43:15 <dminuoso> fendor[m]: The only equivalent of rewrite rules I know of is typechecker plugins.
11:44:58 CiaoSen joins (~Jura@p200300c95724d3002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
11:49:37 × gurkenglas quits (~gurkengla@p548ac72e.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
11:57:52 × titibandit quits (~titibandi@xdsl-87-79-250-160.nc.de) (Quit: Leaving.)
11:59:16 <fendor[m]> typechecker plugin it is!
11:59:16 <fendor[m]> will make it actually easier
11:59:17 × infinity0 quits (~infinity0@pwned.gg) (Ping timeout: 240 seconds)
12:05:42 × frost14 quits (~frost@user/frost) (Ping timeout: 244 seconds)
12:05:59 merijn joins (~merijn@86-86-29-250.fixed.kpn.net)
12:11:08 × merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 276 seconds)
12:19:09 × gmg quits (~user@user/gehmehgeh) (Remote host closed the connection)
12:19:09 × califax quits (~califax@user/califx) (Remote host closed the connection)
12:20:39 × vglfr quits (~vglfr@145.224.100.22) (Ping timeout: 272 seconds)
12:21:37 × cyphase quits (~cyphase@user/cyphase) (Ping timeout: 240 seconds)
12:22:19 gmg joins (~user@user/gehmehgeh)
12:22:38 califax joins (~califax@user/califx)
12:24:10 titibandit joins (~titibandi@xdsl-87-79-250-160.nc.de)
12:26:41 cyphase joins (~cyphase@user/cyphase)
12:30:02 jlgw joins (~jw@83-233-104-81.cust.bredband2.com)
12:37:44 <jlgw> Hi, I'm trying to remap ctrl-j in ghci, but any time I enter a remap of ctrl-j (e.g. adding `bind: ctrl-j down` in ~/.haskeline) the return key is also remapped. I don't get this issue for other remaps (e.g. `bind: ctrl-k up`) and it's not an issue I've encountered in GNU readline. I've skimmed through the haskeline docs and the open issues but I haven't found anything relevant. Any tips on a solution or further reading?
12:39:11 vglfr joins (~vglfr@145.224.100.22)
12:42:27 <fendor[m]> huh, the defunctionatalisation approach looks very promising, too
12:45:49 [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470)
12:56:03 × Maeda quits (~Maeda@91-161-10-149.subs.proxad.net) (Quit: Stop)
12:57:46 Unicorn_Princess joins (~Unicorn_P@user/Unicorn-Princess/x-3540542)
13:02:23 shapr joins (~user@144.163.4.141)
13:03:17 <MangoIV[m]> <fendor[m]> "Any resources on how to defuncti..." <- there's a library, `first-class-families`, you can have a look at. It's probably faster than reading 10 blogposts.
13:03:20 <MangoIV[m]> * there's a (imho really good) library, `first-class-families`,
13:03:38 <fendor[m]> ooh, nice!
13:03:39 <MangoIV[m]> https://flora.pm/packages/@hackage/first-class-families
13:03:50 × cyphase quits (~cyphase@user/cyphase) (Ping timeout: 250 seconds)
13:03:52 <fendor[m]> haha, nice, flora 🙂
13:04:12 <MangoIV[m]> yes, I am a flora power user.
13:05:01 fendor[m] uploaded an image: (174KiB) < https://libera.ems.host/_matrix/media/v3/download/matrix.org/IpizUwRetSGlZXTMURjQtqkm/image.png >
13:05:01 <fendor[m]> I remember reading that on discord 😄 I am immediately filing a layout bug report
13:05:48 MangoIV[m] uploaded an image: (427KiB) < https://libera.ems.host/_matrix/media/v3/download/matrix.org/hEogonwbNYLOUdvCDHRzMPwW/image.png >
13:05:48 <MangoIV[m]> might as well just ping Hecate, they will probably be able to help you, for me it doesn't look like that:
13:06:27 <fendor[m]> will do, thank you very much!
13:06:47 <MangoIV[m]> you're very welcome :)
13:07:33 × phma quits (~phma@2001:5b0:212a:cc58:94b0:45f6:bc48:ff7d) (Read error: Connection reset by peer)
13:08:08 phma joins (~phma@host-67-44-208-99.hnremote.net)
13:15:22 × acidjnk quits (~acidjnk@p200300d6e7137a2658873e742925ddf0.dip0.t-ipconnect.de) (Ping timeout: 246 seconds)
13:16:56 infinity0 joins (~infinity0@pwned.gg)
13:23:52 freeside joins (~mengwong@bb115-66-48-84.singnet.com.sg)
13:31:33 phma_ joins (~phma@2001:5b0:211f:2dc8:ca7e:3ef3:1458:a7b3)
13:36:01 × phma quits (~phma@host-67-44-208-99.hnremote.net) (Ping timeout: 272 seconds)
13:36:23 × zeenk quits (~zeenk@2a02:2f04:a105:5d00:c862:f190:2ea:d494) (Quit: Konversation terminated!)
13:50:29 causal joins (~user@50.35.83.177)
13:54:18 × Natch quits (~natch@c-9e07225c.038-60-73746f7.bbcust.telenor.se) (Remote host closed the connection)
13:58:52 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
13:59:26 jonathanx joins (~jonathan@host-78-78-169-236.mobileonline.telia.com)
14:07:21 merijn joins (~merijn@86-86-29-250.fixed.kpn.net)
14:10:10 jao joins (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net)
14:15:20 × jonathanx quits (~jonathan@host-78-78-169-236.mobileonline.telia.com) (Ping timeout: 250 seconds)
14:22:51 × wootehfoot quits (~wootehfoo@user/wootehfoot) (Read error: Connection reset by peer)
14:24:46 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:5147:575b:dd93:ff03)
14:29:21 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:5147:575b:dd93:ff03) (Ping timeout: 260 seconds)
14:32:13 justsomeguy joins (~justsomeg@user/justsomeguy)
14:40:54 × merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 250 seconds)
14:41:01 beteigeuze1 joins (~Thunderbi@89.187.168.50)
14:43:47 × beteigeuze quits (~Thunderbi@89.187.168.47) (Ping timeout: 272 seconds)
14:44:32 × titibandit quits (~titibandi@xdsl-87-79-250-160.nc.de) (Remote host closed the connection)
14:45:40 × beteigeuze1 quits (~Thunderbi@89.187.168.50) (Ping timeout: 250 seconds)
14:50:39 × tiziodcaio quits (~tiziodcai@2001:470:69fc:105::1:2bf8) (Quit: Reconnecting)
14:51:09 gqplox joins (~textual@2a02:c7c:941d:fd00:40a0:1c9d:7a12:f334)
14:59:02 × gmg quits (~user@user/gehmehgeh) (Quit: Leaving)
15:00:02 machinedgod joins (~machinedg@d198-53-218-113.abhsia.telus.net)
15:00:36 × danza quits (~francesco@151.35.235.74) (Read error: Connection reset by peer)
15:06:24 Natch joins (~natch@c-9e07225c.038-60-73746f7.bbcust.telenor.se)
15:06:49 <zzz> weird. it looks fine to me on linux firefox but not on chromium
15:06:51 tiziodcaio joins (~tiziodcai@2001:470:69fc:105::1:2bf8)
15:08:53 <zzz> Hecate: there's also an extra space at the beginning of each code block: https://shot.jrvieira.com/1667056109.png
15:11:45 azimut joins (~azimut@gateway/tor-sasl/azimut)
15:16:41 danza joins (~francesco@151.68.163.113)
15:17:40 coot joins (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba)
15:28:20 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection)
15:30:57 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
15:31:44 mvk joins (~mvk@2607:fea8:5ce3:8500::f30b)
15:32:10 × img quits (~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in)
15:32:36 img joins (~img@user/img)
15:33:30 beteigeuze joins (~Thunderbi@bl14-81-220.dsl.telepac.pt)
15:34:58 × pavonia quits (~user@user/siracusa) (Quit: Bye!)
15:38:20 × CiaoSen quits (~Jura@p200300c95724d3002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
15:39:06 zebrag joins (~chris@user/zebrag)
15:43:15 azimut_ joins (~azimut@gateway/tor-sasl/azimut)
15:43:21 merijn joins (~merijn@86-86-29-250.fixed.kpn.net)
15:44:17 × azimut quits (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 258 seconds)
15:56:10 × coot quits (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot)
15:57:10 acidjnk joins (~acidjnk@p200300d6e7137a24c5c90248eaa00c2d.dip0.t-ipconnect.de)
15:57:11 × danza quits (~francesco@151.68.163.113) (Read error: Connection reset by peer)
15:59:20 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 250 seconds)
16:00:06 Las[m] joins (~lasmatrix@2001:470:69fc:105::74e)
16:03:00 × califax quits (~califax@user/califx) (Remote host closed the connection)
16:03:44 califax joins (~califax@user/califx)
16:04:36 michalz joins (~michalz@185.246.207.221)
16:11:09 chomwitt joins (~chomwitt@athe730-c-multi-217.home.otenet.gr)
16:11:57 × acidjnk quits (~acidjnk@p200300d6e7137a24c5c90248eaa00c2d.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
16:18:08 × merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 276 seconds)
16:19:24 econo joins (uid147250@user/econo)
16:29:26 wroathe joins (~wroathe@207-153-38-140.fttp.usinternet.com)
16:29:26 × wroathe quits (~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host)
16:29:26 wroathe joins (~wroathe@user/wroathe)
16:32:42 × shapr quits (~user@144.163.4.141) (Ping timeout: 250 seconds)
16:47:54 danza joins (~francesco@151.68.168.242)
16:55:20 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:5147:575b:dd93:ff03)
16:57:50 × mixfix41 quits (~sdeny9ee@user/mixfix41) (Ping timeout: 250 seconds)
17:00:49 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection)
17:02:11 merijn joins (~merijn@86-86-29-250.fixed.kpn.net)
17:02:15 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
17:03:56 × glguy quits (~glguy@libera/staff-emeritus/glguy) (Ping timeout: 260 seconds)
17:06:55 × merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 272 seconds)
17:09:26 nate3 joins (~nate@98.45.169.16)
17:10:08 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 276 seconds)
17:11:03 glguy joins (~glguy@libera/staff-emeritus/glguy)
17:15:11 Sgeo joins (~Sgeo@user/sgeo)
17:17:46 × justsomeguy quits (~justsomeg@user/justsomeguy) (Ping timeout: 250 seconds)
17:18:30 Buliarous joins (~gypsydang@46.232.210.139)
17:20:51 × glguy quits (~glguy@libera/staff-emeritus/glguy) (Ping timeout: 260 seconds)
17:20:58 × Buliarous quits (~gypsydang@46.232.210.139) (Client Quit)
17:21:41 wroathe joins (~wroathe@207-153-38-140.fttp.usinternet.com)
17:21:41 × wroathe quits (~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host)
17:21:41 wroathe joins (~wroathe@user/wroathe)
17:23:16 dimsuz joins (~dima@185.17.131.16)
17:24:11 <EvanR> dminuoso, whats wrong with postgresql-simple
17:24:53 glguy joins (~glguy@libera/staff-emeritus/glguy)
17:25:58 <dimsuz> hi! learing to parse with megaparsec. Struggling to turn this: ""@@header@@\nline\nline\line\n@@header@@\nline\nline"" into [Hunk{header,[lines]}]. I have working parser for "header" and then I'm trying to sepBy header, but also need to not consume it while sepBy-ing... Need advice/direction.
17:27:07 emmanuelux joins (~emmanuelu@user/emmanuelux)
17:30:40 <EvanR> hmm I would not start with sepBy for that
17:31:11 <EvanR> if you have a parser for header body optional newlines/whitespace, then you can use many on that to get a list
17:33:44 × ec quits (~ec@gateway/tor-sasl/ec) (Remote host closed the connection)
17:33:45 <dimsuz> oh, that gives me an idea that I should write a separate parser for body. not sure though if I should make it know that it should stop if it sees 'header'. megaparsec has "notFollowedBy", maybe I should use it
17:34:36 × danza quits (~francesco@151.68.168.242) (Ping timeout: 264 seconds)
17:34:46 <EvanR> if it that lines can't start with @@? or @@header@@
17:34:50 <EvanR> or something else
17:36:15 ec joins (~ec@gateway/tor-sasl/ec)
17:36:36 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 260 seconds)
17:36:50 <EvanR> you could make a line parser that fails if the first two characters is @@
17:38:17 moonsheep joins (~user@user/moonsheep)
17:39:10 <dimsuz> yes, it's a diff hunk parser, so headers are stuff like "@@ +3,44 -8,55 @@", then go the lines separated by '\n', then goes another hunk (header+lines)
17:39:12 <EvanR> thunk hunk parser would be, header followed by many lines
17:39:24 tzh joins (~tzh@c-24-21-73-154.hsd1.or.comcast.net)
17:39:32 <EvanR> then hunk parser would be, header followed by many lines
17:39:45 <EvanR> the word hunk is throwing me off heavily
17:39:52 <dimsuz> oh, and line parser failing wouldn't fail whole parsing?
17:39:59 <moonsheep> for some procedure that may fail (i.e. a protocol of some sort) what is the best way to back out in case of an unrecoverable failure? there seems to be so many options and I never know which to pick: Alternative, MonadFail, MonadError, etc.
17:40:19 <dimsuz> "hunk" is diff speak :) not sure why they're called taht
17:40:21 <EvanR> that's how many works, it tries the parser repeatedly until it fails
17:40:27 acidjnk joins (~acidjnk@p200300d6e7137a24f4d49bb670ebec41.dip0.t-ipconnect.de)
17:40:40 <dimsuz> EvanR: thanks, going off to try this
17:40:45 <EvanR> when you use the basic combinator p1 <|> p2, p1 is tried, if it fails p2 is tried, if that fails p1 <|> p2 fails
17:41:05 <EvanR> something like that is going on within many
17:41:09 <dimsuz> yep, I understand it for <|> but somehow didn't intuitively undrstood it for many
17:41:18 <moonsheep> on a related note, that seems like the main advantage of Alternative, but I'm not sure if it plays nice with IO
17:41:47 <EvanR> moonsheep, if you're in IO, you could throw an IO exception xD
17:42:08 <EvanR> if you're in pure code, something like Except or ExceptT
17:42:15 <moonsheep> I am in a MonadUnliftIO
17:42:22 <EvanR> if you're in a sophisticated monad transformer...
17:42:30 <moonsheep> pretty much
17:42:45 <EvanR> consult your sophisticated monad transformer manual / service representative
17:42:52 <moonsheep> hmm right
17:43:15 <moonsheep> well, MonadError "feels" like it was built exactly for this kind of scenario
17:43:20 <int-e> don't get yourself into a bind
17:43:20 <moonsheep> just wanted to know what you guys thought
17:45:02 <[Leary]> moonsheep: The unliftio paradigm already has its own opinions about how exceptions should be produced and recovered from, as I recall. If you're in that world already, it's probably worth heeding.
17:45:16 <moonsheep> so I should use IO exceptions?
17:46:07 <moonsheep> I have some finallys that always have to fire at the end of all things, no matter what, and I was scared that they would interact weirdly with other things
17:46:14 <EvanR> wait that's not what we were saying at all
17:46:35 <moonsheep> well what are those "opinions on how exceptions should be produced"?
17:46:37 <EvanR> I haven't used MonadUnliftIO but there's probably some more appropriate exception mechanism
17:46:46 <EvanR> for that
17:47:33 ddellacosta joins (~ddellacos@89.45.224.247)
17:47:37 <moonsheep> unliftio does have a handy "throwString", should I just use that for one-off errors?
17:49:45 <EvanR> it looks like throwIO is recommended if you have your own exception type, else if you can't be arsed use throwString
17:50:13 <moonsheep> right
17:50:21 <moonsheep> sounds like a decent plan
17:50:29 <EvanR> has the same effect as fromEither if you are converting an Either into an exception
17:52:54 × ddellacosta quits (~ddellacos@89.45.224.247) (Ping timeout: 252 seconds)
17:54:23 <EvanR> looks like they reference and depend on the package safe-exceptions
17:56:24 <EvanR> which claims that by default exception handling is scary
17:57:10 <EvanR> which kind of sounds like bootstrapping its own purpose
17:58:46 × TonyStone quits (~TonyStone@cpe-74-76-51-197.nycap.res.rr.com) (Remote host closed the connection)
18:00:33 TonyStone joins (~TonyStone@cpe-74-76-51-197.nycap.res.rr.com)
18:00:49 <geekosaur> exception handling by default is scary
18:00:50 <moonsheep> yeah that's kind of the point of unliftioo
18:01:23 <geekosaur> and bracket, which issupposed to hide some of that scariness, propitiates it instead
18:02:10 <sm> g'day all
18:02:26 wroathe joins (~wroathe@50.205.197.50)
18:02:26 × wroathe quits (~wroathe@50.205.197.50) (Changing host)
18:02:26 wroathe joins (~wroathe@user/wroathe)
18:03:11 <sm> is there an easy way to get a human-friendly hash of a haskell value, eg of a Data instance ?
18:04:25 <moonsheep> does it have to be cryptographically secure?
18:04:38 <sm> not really
18:04:39 <sm> no, not at all
18:04:45 <moonsheep> what about Hashable then?
18:04:49 × talismanick quits (~talismani@76.133.152.122) (Ping timeout: 246 seconds)
18:04:57 <sm> it's more important that it be fairly reliably unique
18:05:27 <sm> I found that, but I think it produces an integer ? I'm wanting something more alphanumeric
18:05:36 <moonsheep> well Hashable doesn't do any guarantees on the algorithm used
18:05:53 <EvanR> render the Integer in hex xD
18:06:17 <EvanR> I guess that doesn't guarantee there will be letters
18:06:32 <moonsheep> I mean, the representation you use is largely irrelevant
18:06:48 <moonsheep> if your issue is that integers are too small you could use a bytestring I guess
18:07:36 <sm> this is something users will see, I want it to look like familiar, like an md5 hash
18:08:13 <sm> would md5 be wrong for this ?
18:08:25 <moonsheep> so then are you asking for a way to represent integers as strings in some base (like base16)?
18:08:42 <moonsheep> sm: md5 is vulnerable to collision attacks, but if those aren't a problem then it's fine
18:08:50 <sm> concretely, people want to see a unique content-based hash for each of their hledger transactions
18:08:50 <[Leary]> I would just render the integer in base64.
18:09:31 <moonsheep> yeah base64 is pretty nice
18:09:33 <sm> hashable + base64, that sounds like an option
18:09:38 <moonsheep> I wonder why hashes aren't more often represented like that
18:09:53 <moonsheep> it's always base16 for some reason
18:10:38 <moonsheep> well I guess padding =s sure
18:11:30 justsomeguy joins (~justsomeg@user/justsomeguy)
18:12:49 <sm> https://hackage.haskell.org/package/pureMD5 might be plan B
18:13:12 <sm> (with custom haskell value -> hash generator, which I expect I'll need anyway)
18:13:16 <sm> thanks all
18:13:26 <darkling> If we're generating IDs that are going to be turned into base64 strings for human consumption, we always make sure they're a multiple of 3 bytes, so there's no trailing = symbols.
18:15:16 <EvanR> moonsheep, bespoke ways to display hashes or IDs abound in web land, perhaps you would be interested in applying for a job at amazon to learn more. Don't think call now
18:16:24 <moonsheep> darkling: if you know the length in advance you don't really need the trailing =
18:17:18 <moonsheep> EvanR: one day
18:18:29 × nate3 quits (~nate@98.45.169.16) (Ping timeout: 272 seconds)
18:18:50 coot joins (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba)
18:25:30 AlexNoo_ joins (~AlexNoo@178.34.163.109)
18:27:11 × Alex_test quits (~al_test@178.34.162.124) (Ping timeout: 244 seconds)
18:27:44 danza joins (~francesco@151.68.168.242)
18:28:48 × AlexNoo quits (~AlexNoo@178.34.162.124) (Ping timeout: 255 seconds)
18:28:58 × AlexZenon quits (~alzenon@178.34.162.124) (Ping timeout: 246 seconds)
18:30:45 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
18:31:33 Alex_test joins (~al_test@178.34.163.109)
18:32:26 cowboy8625 joins (~cowboy@rrcs-173-198-134-163.west.biz.rr.com)
18:36:47 AlexZenon joins (~alzenon@178.34.163.109)
18:38:09 <dimsuz> EvanR: thanks for the help with parser combinators, it all worked out beautifully. Feeling good, going for a walk. Cheers!
18:38:34 × dimsuz quits (~dima@185.17.131.16) (Quit: leaving)
18:41:45 × son0p quits (~ff@181.136.122.143) (Remote host closed the connection)
18:44:23 × mvk quits (~mvk@2607:fea8:5ce3:8500::f30b) (Ping timeout: 276 seconds)
18:45:34 nate3 joins (~nate@98.45.169.16)
18:47:25 × danza quits (~francesco@151.68.168.242) (Read error: Connection reset by peer)
18:54:08 × acidjnk quits (~acidjnk@p200300d6e7137a24f4d49bb670ebec41.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
18:54:35 × nate3 quits (~nate@98.45.169.16) (Ping timeout: 272 seconds)
18:55:35 AlexNoo_ is now known as AlexNoo
18:56:14 <APic> Guad Nocht!
19:03:05 <EvanR> sometimes you see proposals to add something like monads, do notation, or something like just State monad to language X. If they could only steal one thing I would settle for Functor
19:03:37 × freeside quits (~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 240 seconds)
19:03:48 <EvanR> spread the news about Functor please because it's large scale missing too
19:03:52 waleee joins (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340)
19:04:12 <EvanR> and much more widely applicable
19:04:40 × albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
19:06:33 <EvanR> geekosaur, what's wrong with bracket?
19:06:48 × moonsheep quits (~user@user/moonsheep) (Quit: ERC 5.4 (IRC client for GNU Emacs 28.2))
19:07:13 moonsheep joins (~user@185.154.9.186)
19:07:26 moonsheep parts (~user@185.154.9.186) ()
19:07:34 <geekosaur> IIRC a missing `mask` in the recovery/after-close part means an exception there can leak resources
19:08:00 <geekosaur> and it won't be fixed because "someone might be relying on it running without `mask`"
19:08:43 <EvanR> that does sound a bit dubious
19:08:53 <c_wraith> I think you have to mask the whole bracket and strategically unmask to make it work right, too
19:09:09 <c_wraith> Like, you can't just mask in the release action, because that still leaves a gap
19:09:19 <geekosaur> https://stackoverflow.com/questions/64468126/how-to-make-bracket-safe-from-async-exception
19:09:25 <geekosaur> yeh
19:09:31 <EvanR> it is specific to async exceptions
19:09:32 <geekosaur> this is more or less why unliftio
19:09:51 <c_wraith> well yes. async exceptions are the only thing mask stops
19:10:46 <geekosaur> but async exceptions are also essentially the only thing that can lead to resource leaks (unless you're really careless)
19:10:47 albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8)
19:11:04 <c_wraith> Oh, I've seen some careless code. :P
19:11:13 <geekosaur> so have I
19:11:35 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
19:11:36 <geekosaur> but more often in C or etc.; Haskell programmers usually make some attempt at safety
19:11:57 <EvanR> strive to write carelessness safe code
19:12:19 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 272 seconds)
19:12:36 <Franciman> geekosaur: laziness can also lead to strange behaviour making your machine fail
19:12:41 <Franciman> because it goes out of RAM
19:12:51 <Franciman> well, not laziness per se, while careless usage of laziness
19:13:14 <EvanR> careless evaluation
19:13:19 <geekosaur> Franciman, given that you hate Haskell so much,m could you please go peddle your wares elsewhere?
19:13:36 × cowboy8625 quits (~cowboy@rrcs-173-198-134-163.west.biz.rr.com) (Quit: WeeChat 3.5)
19:14:05 <Franciman> wtf
19:14:11 <Franciman> ok
19:14:15 <DigitalKiwi> what's funny is the majority of programs that make my machine run out of ram are not haskell
19:14:34 <c_wraith> are they electron?
19:14:55 acidjnk joins (~acidjnk@p200300d6e7137a24f17133d2359444b2.dip0.t-ipconnect.de)
19:15:04 <DigitalKiwi> there are a few of those yeah lol
19:15:20 wroathe joins (~wroathe@50.205.197.50)
19:15:20 × wroathe quits (~wroathe@50.205.197.50) (Changing host)
19:15:20 wroathe joins (~wroathe@user/wroathe)
19:15:40 <DigitalKiwi> i'm actually really shocked that signal-desktop works as well as it does heh
19:15:41 × albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
19:15:56 <DigitalKiwi> but slack and discord == OOM
19:16:10 <EvanR> wasteful usage of ram grows to meet memory upgrades?
19:16:25 <DigitalKiwi> ram soldered in capped at 16GB :(
19:16:26 <EvanR> it's even built into haskell
19:16:33 <geekosaur> here you're pissing on laziness. last time it was "in ocaml. way better". in fact I'm hard put to see much positive in your contributions here, according to my logs
19:17:07 <Franciman> ...
19:17:10 <Franciman> are you serious?
19:17:16 <Franciman> it was a joke...
19:17:17 <EvanR> how's the laziness situation on ocaml
19:17:28 <DigitalKiwi> i'm too lazy to learn it
19:17:45 <DigitalKiwi> so it's going great i guess?
19:17:48 freeside joins (~mengwong@bb115-66-48-84.singnet.com.sg)
19:17:49 son0p joins (~ff@181.136.122.143)
19:17:56 <EvanR> 🥁
19:18:00 <Franciman> let's put it clear geekosaur
19:18:14 <Franciman> i have no interest in showing things
19:18:34 <Franciman> i wanted to participate in the conversation without saying haskell sucks
19:18:40 <Franciman> i even said «careless usage of laziness»
19:18:56 <Franciman> what's edgy about it?
19:19:34 <EvanR> SPJ: Haskell is useless. Franciman: Haskell sucks
19:19:44 <Franciman> i don't care whether haskell sucks or not
19:19:47 <Franciman> i was wrong in the past
19:20:09 <Franciman> i've done my share of errors
19:20:38 <EvanR> cunningham & cunningham: everything sucks
19:21:47 albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8)
19:24:47 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
19:26:06 <geekosaur> sysadmin: all hardware sucks, all software sucks
19:26:44 <Franciman> bye bye
19:26:48 Franciman parts (~Franciman@mx1.fracta.dev) (WeeChat 3.0)
19:29:33 SnoopDoll joins (~SnoopDoll@host-95-251-162-186.retail.telecomitalia.it)
19:29:48 buffet parts (~buffet@buffet.sh) (WeeChat 3.5)
19:30:16 SnoopDoll parts (~SnoopDoll@host-95-251-162-186.retail.telecomitalia.it) ()
19:31:09 × machinedgod quits (~machinedg@d198-53-218-113.abhsia.telus.net) (Quit: Lost terminal)
19:44:56 <dsal> dminuoso: I've not looked at hasql. But what's wrong with postgresql-simple?
19:46:47 × coot quits (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot)
19:46:54 × caryhartline quits (~caryhartl@2600:1700:2d0:8d30:41f8:4e00:54f7:b844) (Quit: caryhartline)
19:49:40 × son0p quits (~ff@181.136.122.143) (Remote host closed the connection)
19:55:55 polo joins (~polo@user/polo)
20:00:47 Cale_ joins (~cale@cpef48e38ee8583-cm30b7d4b3fc20.cpe.net.cable.rogers.com)
20:01:52 × Cale quits (~cale@cpef48e38ee8583-cm30b7d4b3fc20.cpe.net.cable.rogers.com) (Ping timeout: 260 seconds)
20:01:58 nate3 joins (~nate@98.45.169.16)
20:05:02 × Cale_ quits (~cale@cpef48e38ee8583-cm30b7d4b3fc20.cpe.net.cable.rogers.com) (Client Quit)
20:05:10 Cale joins (~cale@cpef48e38ee8583-cm30b7d4b3fc20.cpe.net.cable.rogers.com)
20:08:05 Guest|57 joins (~Guest|57@128.172.245.79)
20:15:23 × polo quits (~polo@user/polo) (Ping timeout: 276 seconds)
20:20:25 × freeside quits (~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 255 seconds)
20:24:05 × takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
20:25:58 × justsomeguy quits (~justsomeg@user/justsomeguy) (Quit: WeeChat 3.6)
20:26:41 × qhong quits (~qhong@rescomp-21-400677.stanford.edu) (Remote host closed the connection)
20:26:50 cyphase joins (~cyphase@user/cyphase)
20:29:57 × nate3 quits (~nate@98.45.169.16) (Ping timeout: 240 seconds)
20:29:58 mrianbloom joins (uid350277@id-350277.ilkley.irccloud.com)
20:30:54 <mrianbloom> Can you specify that you want some example code to be compiled in a package even if it is not an executable and has no main function?
20:31:34 <mrianbloom> Currently using stack but I guess this also applies to cabal.
20:37:26 RevoGen joins (~RevoGen@136.167.84.221)
20:40:34 jmdaemon joins (~jmdaemon@user/jmdaemon)
20:42:34 <sclv> mrianbloom: if you have a library stanza, all modules in the library will be compiled
20:42:46 buffet joins (~buffet@buffet.sh)
20:42:54 buffet parts (~buffet@buffet.sh) (WeeChat 3.5)
20:43:11 <mrianbloom> I see.
20:44:01 <mrianbloom> Seems like I'm suggesting it can be used by library users.
20:44:56 seriley joins (~seriley@75.164.74.1)
20:45:17 freeside joins (~mengwong@bb115-66-48-84.singnet.com.sg)
20:45:31 lechner- joins (~lechner@2601:641:400:1e5::d35)
20:46:17 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 240 seconds)
20:47:06 × zebrag quits (~chris@user/zebrag) (Quit: Konversation terminated!)
20:48:00 <seriley> When I do :info Enum in ghci, the first line gives me "type Enum :: * -> Constraint. What does that mean?
20:49:30 <geekosaur> Enum takes a Type and produces a Constraint. so something like `Enum Int` is legal as long as it occurs to the left of a `=>`
20:49:38 × freeside quits (~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 252 seconds)
20:49:47 <[Leary]> mrianbloom: If you don't want it to be exposed for use like a regular library module, you can keep it internal by putting it in `other modules`. Though in that case, I'm not certain it will be compiled without being a dependency; you may need to do an `import MyLibrary.Example()` somewhere.
20:49:51 <geekosaur> but `Enum Monad` would be ill-typed as its kind is not `*` but `* -> *`
20:50:16 <seriley> thanks
20:50:27 <mrianbloom> I see, thank you.
20:50:35 <geekosaur> nor can you say `foo :: Enum Int` because it's a Constraint instead of a Type
20:51:29 <seriley> ok. That makes sense
20:52:50 <seriley> Constraints only work on the left of => in a type declaration?
20:53:17 × RevoGen quits (~RevoGen@136.167.84.221) (Remote host closed the connection)
20:54:36 <geekosaur> yes
20:54:45 <monochrom> For beginners it is simpler to ignore "type Enum :: * -> Constraint" and focus on "class Enum a where ..." and some of the instances.
20:54:50 <geekosaur> ^
20:55:11 <geekosaur> that teells you what it can do., the rest is more or less typechecker gobbledygook
20:55:50 <seriley> I see. thanks again
20:55:55 <monochrom> Hell, in general, beginners better focus on Haskell 2010; hell, sometimes even that is too big.
20:57:47 <monochrom> After you understand the concept of type classes, then this Constraint business is a powerful generalization. But walk before run, low tech before high tech.
20:59:50 <[Leary]> Haskell is just big full-stop. If I were teaching it, I would start with plain LC and introduce one Haskell feature at a time.
21:01:20 ddellacosta joins (~ddellacos@143.244.47.100)
21:01:33 gurkenglas joins (~gurkengla@p548ac72e.dip0.t-ipconnect.de)
21:03:05 merijn joins (~merijn@86-86-29-250.fixed.kpn.net)
21:07:26 × thyriaen quits (~thyriaen@2a01:aea0:dd4:470d:6245:cbff:fe9f:48b1) (Ping timeout: 250 seconds)
21:10:07 × Kaiepi quits (~Kaiepi@108.175.84.104) (Ping timeout: 272 seconds)
21:10:40 bitmapper joins (uid464869@id-464869.lymington.irccloud.com)
21:12:55 freeside joins (~mengwong@bb115-66-48-84.singnet.com.sg)
21:13:47 nate3 joins (~nate@98.45.169.16)
21:13:54 harveypwca joins (~harveypwc@2601:246:c180:a570:3828:d8:e523:3f67)
21:14:09 Lycurgus joins (~juan@user/Lycurgus)
21:19:26 × Lycurgus quits (~juan@user/Lycurgus) (Quit: Exeunt juan@acm.org)
21:19:37 × nate3 quits (~nate@98.45.169.16) (Ping timeout: 272 seconds)
21:22:01 polo joins (~polo@user/polo)
21:24:46 × Clint quits (~Clint@user/clint) (Quit: restarting)
21:30:11 × harveypwca quits (~harveypwc@2601:246:c180:a570:3828:d8:e523:3f67) (Quit: Leaving)
21:30:28 nate3 joins (~nate@98.45.169.16)
21:33:46 × polo quits (~polo@user/polo) (Quit: My MacBook has gone to sleep. ZZZzzz…)
21:34:05 zzz is now known as yin
21:34:41 polo joins (~polo@user/polo)
21:34:44 <yin> hi. i'm trying out hls with CoC on nvim. where can i get a list of all the commands i can use?
21:35:08 <yin> been searching the docs for about 15 mins and am lost
21:37:59 × merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 272 seconds)
21:38:42 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
21:42:55 × michalz quits (~michalz@185.246.207.221) (Remote host closed the connection)
21:44:48 Clint joins (~Clint@user/clint)
21:48:17 × acidjnk quits (~acidjnk@p200300d6e7137a24f17133d2359444b2.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
21:53:25 machinedgod joins (~machinedg@d198-53-218-113.abhsia.telus.net)
21:53:48 × jtomas quits (~jtomas@191.red-88-17-199.dynamicip.rima-tde.net) (Ping timeout: 264 seconds)
21:56:15 mmhat joins (~mmh@p200300f1c7307602ee086bfffe095315.dip0.t-ipconnect.de)
21:57:56 × polo quits (~polo@user/polo) (Quit: My MacBook has gone to sleep. ZZZzzz…)
21:59:52 zebrag joins (~chris@user/zebrag)
22:01:50 polo joins (~polo@user/polo)
22:05:38 × polo quits (~polo@user/polo) (Client Quit)
22:08:55 wroathe joins (~wroathe@207-153-38-140.fttp.usinternet.com)
22:08:55 × wroathe quits (~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host)
22:08:55 wroathe joins (~wroathe@user/wroathe)
22:09:07 × __monty__ quits (~toonn@user/toonn) (Quit: leaving)
22:18:13 × freeside quits (~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 246 seconds)
22:19:35 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:5147:575b:dd93:ff03) (Remote host closed the connection)
22:20:27 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:5147:575b:dd93:ff03)
22:34:30 freeside joins (~mengwong@bb115-66-48-84.singnet.com.sg)
22:34:42 Kaiepi joins (~Kaiepi@108.175.84.104)
22:38:52 × freeside quits (~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 250 seconds)
22:47:45 <hololeap> yin, I haven't used CoC but this may be helpful? https://github.com/neoclide/coc.nvim/wiki/Using-coc-list
22:50:49 × chomwitt quits (~chomwitt@athe730-c-multi-217.home.otenet.gr) (Ping timeout: 272 seconds)
22:52:49 freeside joins (~mengwong@bb115-66-48-84.singnet.com.sg)
22:55:37 × nate3 quits (~nate@98.45.169.16) (Ping timeout: 240 seconds)
23:00:24 × waleee quits (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 264 seconds)
23:11:58 jinsun__ joins (~jinsun@user/jinsun)
23:11:58 jinsun is now known as Guest308
23:11:58 × Guest308 quits (~jinsun@user/jinsun) (Killed (zirconium.libera.chat (Nickname regained by services)))
23:11:58 jinsun__ is now known as jinsun
23:15:04 phma_ is now known as phma
23:21:39 wootehfoot joins (~wootehfoo@user/wootehfoot)
23:24:02 son0p joins (~ff@181.136.122.143)
23:30:50 × mcglk quits (~mcglk@131.191.49.120) (Read error: Connection reset by peer)
23:33:57 merijn joins (~merijn@86-86-29-250.fixed.kpn.net)
23:35:56 × superbil quits (~superbil@1-34-176-171.hinet-ip.hinet.net) (*.net *.split)
23:35:56 × tubogram44 quits (~tubogram@user/tubogram) (*.net *.split)
23:36:17 tubogram44 joins (~tubogram@user/tubogram)
23:36:29 superbil joins (~superbil@1-34-176-171.hinet-ip.hinet.net)
23:36:43 × mmhat quits (~mmh@p200300f1c7307602ee086bfffe095315.dip0.t-ipconnect.de) (Quit: WeeChat 3.7.1)
23:37:36 × Guest|57 quits (~Guest|57@128.172.245.79) (Ping timeout: 264 seconds)
23:37:49 lechner- parts (~lechner@2601:641:400:1e5::d35) (Using Circe, the loveliest of all IRC clients)
23:40:03 nate3 joins (~nate@98.45.169.16)
23:45:39 talismanick joins (~talismani@76.133.152.122)
23:45:44 danza joins (~francesco@151.34.103.177)
23:46:03 talismanick is now known as Guest9837
23:48:20 × wootehfoot quits (~wootehfoo@user/wootehfoot) (Read error: Connection reset by peer)
23:51:03 × Guest9837 quits (~talismani@76.133.152.122) (Quit: Using Circe, the loveliest of all IRC clients)
23:51:10 dsrt^ joins (~dsrt@76.145.185.103)
23:54:57 × freeside quits (~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 240 seconds)
23:55:37 × nate3 quits (~nate@98.45.169.16) (Ping timeout: 240 seconds)
23:56:30 nate3 joins (~nate@98.45.169.16)

All times are in UTC on 2022-10-29.