2022/10/29

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