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.