Home liberachat/#haskell: Logs Calendar

Logs on 2023-11-02 (liberachat/#haskell)

00:00:32 [_] joins (~itchyjunk@user/itchyjunk/x-7353470)
00:01:15 × [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection)
00:03:47 × Guest91 quits (~Guest37@149.159.195.52) (Quit: Client closed)
00:05:53 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:ec87:948a:1a8:d401)
00:06:45 × htor quits (~htor@84.208.240.181) (Quit: htor)
00:07:51 × lg188 quits (~lg188@82.18.98.230) (Ping timeout: 260 seconds)
00:08:14 lg188 joins (~lg188@82.18.98.230)
00:09:49 <dsal> Basically only one file knows anything about postgres. Plus maybe one more to decide to reference it. It feels like it should be easy enough to split off.
00:09:59 <dsal> At some point, there's some linkage, though.
00:13:25 pretty_dumm_guy joins (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
00:27:05 <thegman> is there a way to have a modifiable variable inside of a function
00:27:45 <thegman> i added `where z = 1` and but i think it gets re set to that every time the function runs (its recursive)
00:28:26 × Tuplanolla quits (~Tuplanoll@91-159-68-236.elisa-laajakaista.fi) (Ping timeout: 255 seconds)
00:29:43 <geekosaur> no
00:30:01 <geekosaur> youu have to pass changing things as parameters
00:32:51 × Square2 quits (~Square@user/square) (Ping timeout: 255 seconds)
00:33:32 <thegman> what does that mean
00:33:45 <thegman> do you mean passing the arguments back to the function
00:34:20 Guest35 joins (~Guest35@194.127.199.107)
00:34:25 × Unicorn_Princess quits (~Unicorn_P@user/Unicorn-Princess/x-3540542) (Remote host closed the connection)
00:34:30 <thegman> im doing that with `z` but it just goes back to the where part and sets it back to 1
00:38:28 <geekosaur> yes
00:39:17 <geekosaur> bindings are immutable in Haskell; `z` will always be 1. (You may be temporarily shadowing it but that will go away when you recurse)
00:41:35 <thegman> dang
00:42:25 <thegman> the function i have needs to keep the original value of an input while modifying modifying it when doing another iteration
00:43:02 <Guest35> hi. i've been reading "making our own types and typeclasses" from "learn you a haskell" and i don't understand one sentence which revolves around this piece of code: `https://paste.tomsmeding.com/Ne7LNFJH/raw/1`
00:43:02 <Guest35> the sentence in question is: "Making `Frank` an instance of `Tofu` is pretty simple. We see that `tofu` takes a `j a` (so an example type of that form would be `Maybe Int`) and returns a `t a j`. So if we replace Frank with `j`, the result type would be `Frank Int Maybe`."
00:43:03 <Guest35> shouldn't it be "So if we replace t with Frank, the result type would be Frank Int Maybe" as we would then get
00:43:03 <Guest35> `tofu :: Maybe Int -> Frank Int Maybe`
00:43:18 <yushyin> thegman: you can represent 'state' as a parameter to the function
00:48:13 <Axeman6> Guest35: I'm not sure I understand the question, but if you turn on the InstanceSigs extension, you can hadd the type you think should be there and see if GHC agrees
00:48:21 <geekosaur> Guest35, yes, I think that's right. I can
00:48:44 <geekosaur> 't find an errata page for the online version, and it's not shown in the errata for the print version
00:48:45 <Axeman6> I also think you are right though, nice work
00:49:32 <geekosaur> you're already starting to think in terms of typed, that'll get you far
00:49:37 <geekosaur> *types
00:50:26 <thegman> what the heck is state
00:51:13 thegeekinside joins (~thegeekin@189.141.80.123)
00:51:14 <geekosaur> the stuff that needs to change with each recursion
00:51:49 <geekosaur> literally; we even have a State monad which hides the passing and returning of "mutable" values for us
00:52:30 <geekosaur> so we work with `a` but it's really `s -> (s, a)`
00:52:33 <thegman> i still need to figure out what monads are
00:52:35 <yushyin> https://en.wikipedia.org/wiki/State_(computer_science)#Program_state o.o
00:52:42 <thegman> word on the street is they are the big bad wolf of haskell
00:52:53 <geekosaur> not really
00:53:20 <geekosaur> people spread that because they don't want to have to think about Haskell. but it's immutability that really bugs them
00:53:48 <Guest35> Axeman6 geekosaur, thanks for help, i couldn't make sense of that sentence no matter how i spun it
00:56:00 <geekosaur> well. they also pretend IO is hard because it's a monad. but IO is not hard because it's a monad; it's hard because it's IO
00:56:46 <geekosaur> the monad is literally a state monad that ensures that things happen in the correct order by passing the state between operations
00:56:55 × Guest35 quits (~Guest35@194.127.199.107) (Quit: Client closed)
00:57:55 × pretty_dumm_guy quits (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Ping timeout: 264 seconds)
01:03:55 Lycurgus joins (~georg@user/Lycurgus)
01:05:16 × Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 255 seconds)
01:05:55 Lord_of_Life joins (~Lord@user/lord-of-life/x-2819915)
01:11:42 Guest99 joins (~Guest37@149.159.195.52)
01:22:13 vglfr joins (~vglfr@88.155.154.204)
01:22:19 × vglfr quits (~vglfr@88.155.154.204) (Read error: Connection reset by peer)
01:22:40 vglfr joins (~vglfr@149.102.244.116)
01:26:43 ubert1 joins (~Thunderbi@178.165.171.18.wireless.dyn.drei.com)
01:28:12 × ubert quits (~Thunderbi@77.119.210.181.wireless.dyn.drei.com) (Ping timeout: 240 seconds)
01:28:12 ubert1 is now known as ubert
01:28:47 × Lycurgus quits (~georg@user/Lycurgus) (Quit: leaving)
01:40:36 [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470)
01:42:56 × fweht quits (uid404746@id-404746.lymington.irccloud.com) (Quit: Connection closed for inactivity)
01:44:03 × [_] quits (~itchyjunk@user/itchyjunk/x-7353470) (Ping timeout: 258 seconds)
01:47:07 × xff0x quits (~xff0x@ai101218.d.east.v6connect.net) (Ping timeout: 264 seconds)
01:47:34 nate2 joins (~nate@c-98-45-169-16.hsd1.ca.comcast.net)
01:48:06 lisbeths joins (uid135845@id-135845.lymington.irccloud.com)
01:53:08 × nate2 quits (~nate@c-98-45-169-16.hsd1.ca.comcast.net) (Ping timeout: 255 seconds)
01:59:26 × Taneb quits (~Taneb@runciman.hacksoc.org) (Ping timeout: 255 seconds)
01:59:41 Taneb joins (~Taneb@runciman.hacksoc.org)
02:03:51 × szkl quits (uid110435@id-110435.uxbridge.irccloud.com) (Quit: Connection closed for inactivity)
02:05:29 × Guest99 quits (~Guest37@149.159.195.52) (Quit: Client closed)
02:11:03 × santiagopim quits (~user@90.167.66.131) (Ping timeout: 260 seconds)
02:15:10 aforemny_ joins (~aforemny@i59F516CD.versanet.de)
02:16:12 × aforemny quits (~aforemny@2001:9e8:6cde:2400:d38b:278:6ff7:5f3f) (Ping timeout: 240 seconds)
02:24:19 × ystael quits (~ystael@user/ystael) (Ping timeout: 264 seconds)
02:28:30 × machinedgod quits (~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 255 seconds)
02:28:44 × otto_s quits (~user@p5b044594.dip0.t-ipconnect.de) (Ping timeout: 272 seconds)
02:28:52 <EvanR> thegman, f original current = ... f original current' ... where current' is the updated value
02:29:11 <EvanR> keeps the original original throughout
02:29:53 <EvanR> f previous current = ... f current current' ... remembers 1 previous step of history, but not the original original, in this case
02:30:03 otto_s joins (~user@p5b0440a1.dip0.t-ipconnect.de)
02:31:03 <EvanR> or you could combine them and use 3 parameters
02:31:31 <EvanR> f original previous current = ... f original current current' ...
02:34:03 xff0x joins (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp)
02:35:59 <EvanR> unrelated, ignore monad tutorials and if anything focus on Functor first xD
02:36:28 <EvanR> aka the thing languages should be stealing from haskell and probably could easily
02:38:45 <meejah> I think I found this one most useful: https://www.adit.io/posts/2013-04-17-functors,_applicatives,_and_monads_in_pictures.html
02:39:25 <probie> EvanR: Can most languages easily steal functor? You need to be able to talk about higher kinded types
02:40:45 <EvanR> like haskell actually doesn't enforce the functor laws, some languages could not enforce the types either xD
02:41:00 <EvanR> but even other functional languages don't even try, look at clojure
02:41:03 × vglfr quits (~vglfr@149.102.244.116) (Ping timeout: 240 seconds)
02:43:11 × euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer)
02:43:32 euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
02:43:43 <EvanR> some of their data structures have a map operation, but sometimes it takes the liberty changing the data structure
02:44:28 <EvanR> all functory data types should have map that works like fmap
02:45:55 × thegman quits (~Srain@072-239-207-086.res.spectrum.com) (Read error: Connection reset by peer)
02:49:14 vglfr joins (~vglfr@46.96.14.220)
02:50:32 <EvanR> meejah, that article has the goofiest possible art
02:50:45 × [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection)
02:51:46 <probie> Simply having a map operation is convenient, but not as convenient as Functor. I'm still going to struggle to write functions over arbitrary functors, like `unzip :: Functor f => f (a, b) -> (f a, f b)` in a statically typed language without higher kinded types
02:52:36 <EvanR> many languages have ways of writing "generic" code
02:52:49 <EvanR> they just don't have the map operation called the right thing or take the same arguments
02:53:11 <EvanR> the name changes and the arguments aren't compatible, making the generic code impossible
02:53:22 <EvanR> not just talking about typed languages
02:55:44 × ddellacosta quits (~ddellacos@ool-44c738de.dyn.optonline.net) (Ping timeout: 258 seconds)
02:57:23 ddellacosta joins (~ddellacos@ool-44c738de.dyn.optonline.net)
02:57:56 × AssCrackBandit quits (~user@cust-west-par-46-193-2-167.cust.wifirst.net) (Ping timeout: 255 seconds)
03:04:41 × Buggys quits (Buggys@Buggy.shelltalk.net) (Ping timeout: 246 seconds)
03:05:34 × edr quits (~edr@user/edr) (Quit: Leaving)
03:08:55 × friendshipaka quits (~Friendshi@user/Friendship) (Read error: Connection reset by peer)
03:10:26 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:ec87:948a:1a8:d401) (Remote host closed the connection)
03:10:31 × thegeekinside quits (~thegeekin@189.141.80.123) (Ping timeout: 264 seconds)
03:10:43 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija)))
03:10:43 finn_elija joins (~finn_elij@user/finn-elija/x-0085643)
03:10:43 finn_elija is now known as FinnElija
03:10:46 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:ec87:948a:1a8:d401)
03:10:48 Friendship joins (~Friendshi@user/Friendship)
03:15:41 rosco joins (~rosco@yp-150-69.tm.net.my)
03:23:35 thegeekinside joins (~thegeekin@189.141.80.123)
03:27:51 × thegeekinside quits (~thegeekin@189.141.80.123) (Ping timeout: 240 seconds)
03:29:53 × sabino quits (~sabino@user/sabino) (Quit: Lambda _ -> x)
03:34:32 Lycurgus joins (~georg@user/Lycurgus)
03:50:55 Buggys joins (Buggys@shelltalk.net)
03:53:05 derpyxdhs joins (~Thunderbi@user/derpyxdhs)
04:01:53 × td_ quits (~td@i5387092B.versanet.de) (Ping timeout: 260 seconds)
04:02:54 × emmanuelux quits (~emmanuelu@user/emmanuelux) (Quit: au revoir)
04:03:16 td_ joins (~td@i5387090E.versanet.de)
04:29:53 Inst joins (~Inst@120.244.192.250)
04:29:57 <Inst> I have to say, China is great
04:30:02 <Inst> Was briefly doing random searches on Baidu
04:30:27 <Inst> What I find is a random Chinese e-girl video doing exercises in Baby Rudin while wearing blue contacts.
04:30:43 <Inst> First comment: "This proof is wrong"
04:30:44 <Inst> ????
04:33:14 × waleee quits (~waleee@h-176-10-144-38.NA.cust.bahnhof.se) (Ping timeout: 255 seconds)
04:36:04 Inst_ joins (~Inst@120.244.192.250)
04:38:10 <monochrom> Perhaps the e-girl was wrong. Did you check it?
04:38:15 × Inst quits (~Inst@120.244.192.250) (Ping timeout: 240 seconds)
04:42:25 <Inst_> Ehhh, I think it's probably just how women are expected to look on certain platforms, it's probably wrong to call her an e-girl, or for that matter, to judge her based on her appearance.
04:42:27 <Inst_> https://www.bilibili.com/video/BV1UW4y1G7W2/
04:43:24 <Inst_> "Even a smart elementary school student can prove this"
04:45:00 <Inst_> Oh, she's actually a mom. And while the proof looks correct at the outset, let me see why she's upset about it.
04:45:32 <Inst_> Complaining about how "if her kid was still 2, it'd be acceptable, but now they're 5, it's totally unacceptable."
04:45:39 <Inst_> I'm probably not getting the humor in this.
04:48:05 <Inst_> Okay, that's probably why this is the top-linked video, because the joke is that "Baby Rudin" is literally for babies.
04:49:29 <monochrom> Oh, that.
04:51:20 aforemny joins (~aforemny@2001:9e8:6cfe:d400:32c5:cb0c:efd9:aea6)
04:51:55 × aforemny_ quits (~aforemny@i59F516CD.versanet.de) (Ping timeout: 255 seconds)
04:53:24 Jackneill_ joins (~Jackneill@20014C4E1E16F000C6DFD3C15F3E3440.dsl.pool.telekom.hu)
04:56:18 × Jackneill quits (~Jackneill@20014C4E1E03D8004F80E1E499FDC965.dsl.pool.telekom.hu) (Ping timeout: 272 seconds)
05:08:21 × [Leary] quits (~Leary]@user/Leary/x-0910699) (Remote host closed the connection)
05:08:37 [Leary] joins (~Leary]@user/Leary/x-0910699)
05:12:59 × vglfr quits (~vglfr@46.96.14.220) (Read error: Connection reset by peer)
05:20:40 × qqq quits (~qqq@92.43.167.61) (Ping timeout: 252 seconds)
05:22:29 _ht joins (~Thunderbi@28-52-174-82.ftth.glasoperator.nl)
05:22:50 × Lycurgus quits (~georg@user/Lycurgus) (Quit: Lost terminal)
05:24:16 <Inst_> the reason she'd claim that the proof would garner a zero is because of duplication of work
05:24:57 <Inst_> i.e, let o be either aaddition or subtraction, and use inverses to prove that r + x and rx are irrational if r is rational and non-zero, and x is irrational
05:28:38 <Inst_> *addition or multiplication
05:30:11 <EvanR> irrationals need their own word, the negation of rational defines it as the absence of something instead of highlighting the meat of the matter xD
05:31:25 <Inst_> Okay, I think I know what's going on
05:31:32 <Inst_> she is in fact a glamour model streaming online.
05:31:46 <Inst_> However, there's regulatory requirements that demand that her content be educational at least on occasion.
05:31:54 <Inst_> So, consequently... she decides to stream Baby Rudin.
05:32:10 <Inst_> Which is awesome.
05:33:28 michalz joins (~michalz@185.246.207.218)
05:34:36 <monochrom> Yeah.
05:44:39 × pixelmonk quits (~pixelmonk@173.46.79.26) (Quit: WeeChat 4.1.0)
05:45:19 × Friendship quits (~Friendshi@user/Friendship) (Ping timeout: 264 seconds)
05:49:18 nate2 joins (~nate@c-98-45-169-16.hsd1.ca.comcast.net)
05:49:57 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
05:54:14 × nate2 quits (~nate@c-98-45-169-16.hsd1.ca.comcast.net) (Ping timeout: 255 seconds)
06:00:50 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
06:05:28 misterfish joins (~misterfis@84-53-85-146.bbserv.nl)
06:06:27 acidjnk joins (~acidjnk@p200300d6e72b931400da001bbea1022f.dip0.t-ipconnect.de)
06:14:21 vglfr joins (~vglfr@46.96.14.220)
06:14:44 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection)
06:15:11 FinnElija joins (~finn_elij@user/finn-elija/x-0085643)
06:25:27 × elkcl quits (~elkcl@broadband-95-84-226-240.ip.moscow.rt.ru) (Ping timeout: 240 seconds)
06:25:50 × euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 255 seconds)
06:30:10 × rosco quits (~rosco@yp-150-69.tm.net.my) (Quit: Lost terminal)
06:30:23 rosco joins (~rosco@yp-150-69.tm.net.my)
06:34:13 elkcl joins (~elkcl@broadband-95-84-226-240.ip.moscow.rt.ru)
06:34:43 × misterfish quits (~misterfis@84-53-85-146.bbserv.nl) (Ping timeout: 260 seconds)
06:35:56 × vglfr quits (~vglfr@46.96.14.220) (Read error: Connection reset by peer)
06:36:07 × _ht quits (~Thunderbi@28-52-174-82.ftth.glasoperator.nl) (Quit: _ht)
06:36:42 chomwitt joins (~chomwitt@2a02:587:7a2d:bc00:1ac0:4dff:fedb:a3f1)
06:41:24 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:ec87:948a:1a8:d401) (Remote host closed the connection)
07:17:53 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:ec87:948a:1a8:d401)
07:23:12 danza joins (~francesco@151.47.169.71)
07:34:45 sord937 joins (~sord937@gateway/tor-sasl/sord937)
07:34:50 × sord937 quits (~sord937@gateway/tor-sasl/sord937) (Remote host closed the connection)
07:35:08 sord937 joins (~sord937@gateway/tor-sasl/sord937)
07:36:41 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
07:43:19 lortabac joins (~lorenzo@2a01:e0a:541:b8f0:7e1b:b86f:7cc3:2e52)
07:45:37 × L29Ah quits (~L29Ah@wikipedia/L29Ah) (Ping timeout: 255 seconds)
07:47:51 × danza quits (~francesco@151.47.169.71) (Ping timeout: 240 seconds)
07:52:46 machinedgod joins (~machinedg@d198-53-218-113.abhsia.telus.net)
07:53:07 × derpyxdhs quits (~Thunderbi@user/derpyxdhs) (Quit: derpyxdhs)
07:58:23 × tzh quits (~tzh@c-71-193-181-0.hsd1.or.comcast.net) (Quit: zzz)
08:02:25 takuan joins (~takuan@178-116-218-225.access.telenet.be)
08:12:01 × td_ quits (~td@i5387090E.versanet.de) (Ping timeout: 260 seconds)
08:13:03 × Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer)
08:13:30 td_ joins (~td@i5387092B.versanet.de)
08:15:50 danse-nr3 joins (~danse@151.47.166.154)
08:18:21 misterfish joins (~misterfis@87.215.131.102)
08:25:23 × danse-nr3 quits (~danse@151.47.166.154) (Remote host closed the connection)
08:25:48 danse-nr3 joins (~danse@151.47.166.154)
08:26:21 talismanick joins (~user@2601:204:ef00:bb0::1ab2)
08:28:52 × econo_ quits (uid147250@id-147250.tinside.irccloud.com) (Quit: Connection closed for inactivity)
08:29:46 fendor joins (~fendor@2a02:8388:1640:be00:2a62:2dd0:490d:f2ca)
08:31:57 FinnBoat joins (~user@176-151-21-224.abo.bbox.fr)
08:33:13 chele joins (~chele@user/chele)
08:55:10 × seeg123456 quits (~seeg12345@64.176.64.83) (Remote host closed the connection)
08:58:28 coot joins (~coot@89-69-206-216.dynamic.chello.pl)
09:01:11 seeg123456 joins (~seeg12345@64.176.64.83)
09:08:47 × seeg123456 quits (~seeg12345@64.176.64.83) (Quit: Gateway shutdown)
09:09:03 seeg123456 joins (~seeg12345@64.176.64.83)
09:10:49 idgaen joins (~idgaen@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c)
09:17:03 Umeaboy joins (~Umeaboy@94-255-145-133.cust.bredband2.com)
09:20:17 <Umeaboy> Hi! I fully get that I can install GHC using ghcup, but what if I want to port it to a new distro? I'm using Mageia and we only have gcc-gnat, but I need to know what order to package all the dependencies in order to rebuild the src.rpm from OpenSuse or similar. Mageia (which forked from Mandriva) didn't move their GHC version from Mandriva when they forked so I have to rebuild and repackage all that. The wiki only tells people how
09:20:17 <Umeaboy> to build from source, but not how to actually build all the dependencies in the right order.
09:20:30 <Umeaboy> I could use some help.
09:21:34 <Umeaboy> I have already built ghc-bootstrap, ghc-bootstrap-helpers and I'm trying to package xmlada and grpbuild, but I can't finish it.
09:23:41 × migas9 quits (~migas@static.140.65.63.178.clients.your-server.de) (Remote host closed the connection)
09:24:00 migas9 joins (~migas@static.140.65.63.178.clients.your-server.de)
09:30:07 nckhexen is now known as nckx
09:31:04 × cods quits (~fred@tuxee.net) (Ping timeout: 255 seconds)
09:31:07 × danse-nr3 quits (~danse@151.47.166.154) (Read error: Connection reset by peer)
09:31:46 danse-nr3 joins (~danse@151.47.128.166)
09:33:45 qqq joins (~qqq@92.43.167.61)
09:38:04 Pickchea joins (~private@user/pickchea)
09:39:35 <danse-nr3> is it important for your users to have it packaged Umeaboy? Possibly better to rely on external system rather that having a packaged version without the right throughput to maintain it
09:40:30 <Umeaboy> danse-nr3: Yes, For instance, the program called Shellcheck that checks code errors in scripts is built by GHC so now I need to port GHC for Mageia.
09:40:39 <Umeaboy> Plus amongst of other projects.
09:40:56 <danse-nr3> i see
09:41:30 <Umeaboy> danse-nr3: Can yuo assist me? :)
09:41:57 <Umeaboy> I can do the job, but I need to know how to package ghc dependencies.
09:42:12 <Umeaboy> Like the devel packages for instance.
09:42:36 <danse-nr3> i don't think i can help much, i mostly use ghcup. Can the distro use prebuilt versions?
09:43:02 × chiselfuse quits (~chiselfus@user/chiselfuse) (Remote host closed the connection)
09:43:12 <danse-nr3> (of programs written in haskell, so that users do not have to build locally)
09:44:09 <danse-nr3> there is also #ghc and #hackage where people deal more often with installing from scratch
09:44:34 kuribas joins (~user@ip-188-118-57-242.reverse.destiny.be)
09:45:02 <danse-nr3> also, considering how many distros are there around, i am surprised there is no doc to get the dependencies right ... but i don't have time to search for docs right now
09:45:31 × ft quits (~ft@p4fc2a529.dip0.t-ipconnect.de) (Quit: leaving)
09:46:54 × sord937 quits (~sord937@gateway/tor-sasl/sord937) (Remote host closed the connection)
09:47:19 sord937 joins (~sord937@gateway/tor-sasl/sord937)
09:48:39 chiselfuse joins (~chiselfus@user/chiselfuse)
09:50:50 nate2 joins (~nate@c-98-45-169-16.hsd1.ca.comcast.net)
09:55:32 × nate2 quits (~nate@c-98-45-169-16.hsd1.ca.comcast.net) (Ping timeout: 255 seconds)
09:58:06 cfricke joins (~cfricke@user/cfricke)
09:58:27 × Umeaboy quits (~Umeaboy@94-255-145-133.cust.bredband2.com) (Quit: Leaving)
10:01:31 × cyphase quits (~cyphase@user/cyphase) (Ping timeout: 264 seconds)
10:05:23 cyphase joins (~cyphase@user/cyphase)
10:11:58 Guest21 joins (~Guest21@194.127.199.82)
10:12:07 × Guest21 quits (~Guest21@194.127.199.82) (Client Quit)
10:13:24 Lycurgus joins (~georg@user/Lycurgus)
10:15:48 oo_miguel joins (~Thunderbi@78-11-179-96.static.ip.netia.com.pl)
10:28:48 × qqq quits (~qqq@92.43.167.61) (Remote host closed the connection)
10:34:28 szkl joins (uid110435@id-110435.uxbridge.irccloud.com)
10:35:20 × random-jellyfish quits (~tiber@user/random-jellyfish) (Remote host closed the connection)
10:35:44 random-jellyfish joins (~tiber@2a02:2f04:11e:c600:79b7:1b78:95b:d6a)
10:35:45 × random-jellyfish quits (~tiber@2a02:2f04:11e:c600:79b7:1b78:95b:d6a) (Changing host)
10:35:45 random-jellyfish joins (~tiber@user/random-jellyfish)
10:39:43 × kimiamania46 quits (~b4f4a2ab@user/kimiamania) (Quit: Ping timeout (120 seconds))
10:40:02 kimiamania46 joins (~b4f4a2ab@user/kimiamania)
10:51:47 htor joins (~htor@84.208.240.181)
10:54:50 arahael joins (~arahael@119-18-2-212.771202.syd.nbn.aussiebb.net)
11:00:43 × migas4 quits (~migas@astra4961.startdedicated.net) (Ping timeout: 260 seconds)
11:06:47 × sord937 quits (~sord937@gateway/tor-sasl/sord937) (Remote host closed the connection)
11:07:06 sord937 joins (~sord937@gateway/tor-sasl/sord937)
11:10:22 × danse-nr3 quits (~danse@151.47.128.166) (Ping timeout: 255 seconds)
11:11:11 × FinnBoat quits (~user@176-151-21-224.abo.bbox.fr) (Ping timeout: 246 seconds)
11:11:25 × Katarushisu1 quits (~Katarushi@cpc147790-finc20-2-0-cust502.4-2.cable.virginm.net) (Quit: The Lounge - https://thelounge.chat)
11:12:45 Katarushisu1 joins (~Katarushi@cpc147790-finc20-2-0-cust502.4-2.cable.virginm.net)
11:22:33 santiagopim joins (~user@90.167.66.131)
11:26:30 __monty__ joins (~toonn@user/toonn)
11:36:03 pretty_dumm_guy joins (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
11:45:14 × hexeme quits (~hexeme@user/hexeme) (Ping timeout: 255 seconds)
11:47:52 hexeme joins (~hexeme@user/hexeme)
11:49:20 × Pickchea quits (~private@user/pickchea) (Ping timeout: 258 seconds)
11:57:33 danse-nr3 joins (~danse@151.47.128.166)
12:03:53 edr joins (~edr@user/edr)
12:05:09 × cfricke quits (~cfricke@user/cfricke) (Quit: WeeChat 4.0.5)
12:08:30 × arahael quits (~arahael@119-18-2-212.771202.syd.nbn.aussiebb.net) (Ping timeout: 258 seconds)
12:09:59 <yin> is there a difference between using these 2 forms, from a performance perspective? https://paste.jrvieira.com/1698926967807
12:11:51 <dminuoso> yin: Nope
12:11:53 × acidjnk quits (~acidjnk@p200300d6e72b931400da001bbea1022f.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
12:12:05 <dminuoso> Well, assuming its a truthful translation of course.
12:12:34 <mauke> why not f (T0 x) =
12:14:43 × xff0x quits (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) (Ping timeout: 264 seconds)
12:14:49 mmhat joins (~mmh@p200300f1c7445e43ee086bfffe095315.dip0.t-ipconnect.de)
12:14:53 × mmhat quits (~mmh@p200300f1c7445e43ee086bfffe095315.dip0.t-ipconnect.de) (Client Quit)
12:17:24 × htor quits (~htor@84.208.240.181) (Quit: htor)
12:28:39 acidjnk joins (~acidjnk@p200300d6e72b931400da001bbea1022f.dip0.t-ipconnect.de)
12:28:57 arahael joins (~arahael@119-18-2-212.771202.syd.nbn.aussiebb.net)
12:31:20 <yin> mauke: `t` in this case is actually `h t`
12:32:11 <mauke> that changes performance
12:32:13 <yin> i just hate nesting case expressions an like to adhere to a style
12:32:27 <mauke> also, f (h -> T0 x)
12:32:31 <yin> mauke: betweeen the two examples?
12:32:42 <yin> mauke: is that a view pattern?
12:33:19 <yin> so: https://paste.jrvieira.com/1698928394025
12:38:14 × danse-nr3 quits (~danse@151.47.128.166) (Remote host closed the connection)
12:38:38 danse-nr3 joins (~danse@151.47.128.166)
12:41:10 × szkl quits (uid110435@id-110435.uxbridge.irccloud.com) (Quit: Connection closed for inactivity)
12:42:37 × notzmv quits (~zmv@user/notzmv) (Ping timeout: 258 seconds)
12:45:51 × acidjnk quits (~acidjnk@p200300d6e72b931400da001bbea1022f.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
12:51:20 × poscat quits (~poscat@user/poscat) (Quit: Bye)
12:56:32 × random-jellyfish quits (~tiber@user/random-jellyfish) (Ping timeout: 246 seconds)
13:00:29 × misterfish quits (~misterfis@87.215.131.102) (Ping timeout: 255 seconds)
13:00:35 × Inst_ quits (~Inst@120.244.192.250) (Ping timeout: 240 seconds)
13:02:29 shapr joins (~user@2600:1700:c640:3100:d86f:e811:dfe1:a875)
13:03:37 poscat joins (~poscat@user/poscat)
13:13:31 × lisbeths quits (uid135845@id-135845.lymington.irccloud.com) (Quit: Connection closed for inactivity)
13:19:25 poscat0x04 joins (~poscat@user/poscat)
13:19:48 × son0p quits (~ff@181.136.122.143) (Ping timeout: 272 seconds)
13:20:08 × poscat quits (~poscat@user/poscat) (Ping timeout: 260 seconds)
13:21:38 × arahael quits (~arahael@119-18-2-212.771202.syd.nbn.aussiebb.net) (Ping timeout: 255 seconds)
13:30:56 × danse-nr3 quits (~danse@151.47.128.166) (Read error: Connection reset by peer)
13:31:06 × jinsun quits (~jinsun@user/jinsun) (Read error: Connection reset by peer)
13:31:14 danse-nr3 joins (~danse@ba-19-159-48.service.infuturo.it)
13:31:21 jinsun joins (~jinsun@user/jinsun)
13:37:20 ystael joins (~ystael@user/ystael)
13:41:20 × Lycurgus quits (~georg@user/Lycurgus) (Quit: leaving)
13:50:42 Unicorn_Princess joins (~Unicorn_P@user/Unicorn-Princess/x-3540542)
13:52:20 nate2 joins (~nate@c-98-45-169-16.hsd1.ca.comcast.net)
13:57:28 × nate2 quits (~nate@c-98-45-169-16.hsd1.ca.comcast.net) (Ping timeout: 260 seconds)
14:01:24 × chomwitt quits (~chomwitt@2a02:587:7a2d:bc00:1ac0:4dff:fedb:a3f1) (Ping timeout: 240 seconds)
14:01:37 × haskellbridge quits (~haskellbr@069-135-003-034.biz.spectrum.com) (Remote host closed the connection)
14:01:52 Sgeo joins (~Sgeo@user/sgeo)
14:02:41 × masterbuilder quits (~masterbui@user/masterbuilder) (Quit: leaving)
14:03:01 gatekempt joins (~gatekempt@user/gatekempt)
14:05:08 haskellbridge joins (~haskellbr@069-135-003-034.biz.spectrum.com)
14:05:08 ChanServ sets mode +v haskellbridge
14:05:36 xff0x joins (~xff0x@ai101218.d.east.v6connect.net)
14:06:51 Guest84 joins (~Guest84@194.127.199.107)
14:14:43 × shapr quits (~user@2600:1700:c640:3100:d86f:e811:dfe1:a875) (Remote host closed the connection)
14:14:56 shapr joins (~user@2600:1700:c640:3100:ec3b:814b:6065:5646)
14:15:32 jack-o-lanterndk is now known as jackdk
14:15:41 × Guest84 quits (~Guest84@194.127.199.107) (Quit: Client closed)
14:16:05 notzmv joins (~zmv@user/notzmv)
14:17:05 <danse-nr3> i am sick of rewriting every JSON instance trivially any time an interface could break upon type change :(
14:18:03 <danse-nr3> but i cannot think of any clever idea to detect breaking changes...
14:19:50 <EvanR> are you saying the interface would not break by the types break
14:19:58 <EvanR> but the types break*
14:20:25 <danse-nr3> when one updates a type, an automatically derived JSON instance could propagate the change where that is not safe without warnings
14:20:56 <danse-nr3> so i have to rewrite instances a lot for each interface that might break
14:21:24 <exarkun> As in, propagate it into the JSON representation?
14:21:29 <danse-nr3> yeah
14:21:45 <danse-nr3> and in parsing
14:21:48 <exarkun> "Golden" tests I guess
14:22:14 <exarkun> Gotta have a specification of what you want _somewhere_, at least
14:22:40 <danse-nr3> yeah i have been thinking to spend some free time to write something, but does not seem trivial. Similarly to Arbitrary, one has to generate all representations to detect which ones become invalid
14:23:00 <exarkun> You could have round-trip tests that serialize with one version of your code and deserialize with another version
14:23:16 × chexum quits (~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection)
14:23:19 <danse-nr3> that is also not trivial but yea
14:23:28 chexum joins (~quassel@gateway/tor-sasl/chexum)
14:23:35 <danse-nr3> (and again generating all representation is a task there)
14:23:55 <exarkun> You already have Arbitrary instances for all these types through right
14:24:09 <danse-nr3> not really. Would that help?
14:24:37 <exarkun> It would just mean that one big chunk of your work is done already
14:25:29 <danse-nr3> i thought Arbitrary was not for this. Would hardly need to produce different cases for a list for instance
14:25:46 <danse-nr3> no need to try different Ints
14:26:06 <exarkun> Perhaps I misunderstand the situation
14:26:52 <danse-nr3> yea it is a problem that can seem trivial or complex, i guess that's the reason why it is so frustrating :P
14:26:54 <exarkun> It sounded like you have some types defined by your codebase with derived JSON serializers/deserializers and sometimes you change the types and you wanted tool support telling you when those changes have a semantic change on the JSON
14:27:18 <exarkun> (Like you have tool support telling you when those changes have semantic changes on the Haskell code using those types)
14:27:49 <danse-nr3> yes, but an Arbitrary instance of { a:: Int, b::String } generates a lot of cases that are not interesting to this extent
14:28:11 <exarkun> Ah well, sure, but that's just a question of efficiency
14:28:33 <exarkun> I believe shapr has written up something about the relative efficiency of different property testing libraries in discovering interesting cases
14:28:54 <exarkun> And also has a tool that does something /like/ profile-guided property testing
14:29:08 <danse-nr3> i think it would need a different class altogether but no time to study the problem now ... back to monkey coding ...
14:29:13 <exarkun> :)
14:31:09 thegeekinside joins (~thegeekin@189.141.80.123)
14:33:31 shapr bounces cheerfully
14:37:55 misterfish joins (~misterfis@84-53-85-146.bbserv.nl)
14:39:35 <shapr> danse-nr3: if you're interested in coverage driven property testing, I could talk for hours about it.
14:40:01 <shapr> This is the fun thing I wrote to "run enough property tests" https://github.com/shapr/kudzu/blob/main/src/Kudzu.hs
14:40:43 <shapr> There's a group doing type safe mutation to increase coverage: https://lemonidas.github.io/
14:41:56 <danse-nr3> he also looks handsome, but i am afraid i cannot study this much in depth at the moment :(
14:42:08 Friendship joins (~Friendshi@user/Friendship)
14:42:25 <shapr> haha
14:42:25 <danse-nr3> thanks for the pointers anyway
14:42:41 <shapr> sure yeah, if you ever want to chat about it, I get REALLY EXCITED about property testing
14:43:20 <danse-nr3> it is an interesting topic indeed ... but under which abstraction does it equate to interface breakage?
14:44:23 <shapr> I like exarkun's idea of roundtrip properties with golden test values.
14:44:45 <danse-nr3> yeah, easier than having two versions of some code
14:44:46 <shapr> That is, every time you make "a release" you write out some mid-sized legal values
14:45:11 <shapr> then you use something like hedgehog's tripping combinator to see if they still work when you run the tests.
14:46:06 danse-nr3 looks that up ... while thinking the problem is having a compact set of values without losing errors
14:46:47 × thegeekinside quits (~thegeekin@189.141.80.123) (Remote host closed the connection)
14:47:12 <danse-nr3> uh "hedgehog tripping combinator" did not seem to yield useful results from a quick search ...
14:48:09 <shapr> it's https://hackage.haskell.org/package/hedgehog-1.4/docs/Hedgehog.html#v:tripping
14:48:28 <danse-nr3> oh, cheers
14:49:52 jpds joins (~jpds@gateway/tor-sasl/jpds)
14:49:57 <danse-nr3> i guess if we had golden tests, tripping would not be necessary, just parsing and serialising. The main problem still stands, how to produce meaningful values
14:57:01 <exarkun> JSON is simple enough that maybe as long as you hit every involved constructor once, that's complete?
14:57:24 <exarkun> unless you have a schema that dictates something more complex
14:57:34 <danse-nr3> yes, seems something doing with generics
14:57:40 <danse-nr3> s/doing/doable/
14:58:01 <EvanR> oh, tripping is referring to round tripping (good), and not tripping a breaker (problem detected)
14:58:22 mc47 joins (~mc47@xmonad/TheMC47)
14:58:47 <exarkun> (obligatory nix plug - with nix it's not a big deal to have multiple versions of the code around ;)
14:59:43 × paddymahoney quits (~paddymaho@cpe883d24bcf597-cmbc4dfb741f80.cpe.net.cable.rogers.com) (Ping timeout: 264 seconds)
15:01:05 <int-e> but you'll have nix
15:01:32 vglfr joins (~vglfr@46.96.14.220)
15:03:47 × snowsauce quits (~snowsauce@pa9-84-91-207-96.netvisao.pt) (Remote host closed the connection)
15:09:31 waleee joins (~waleee@h-176-10-144-38.NA.cust.bahnhof.se)
15:12:14 × idgaen quits (~idgaen@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 4.0.5)
15:15:32 chomwitt joins (~chomwitt@2a02:587:7a2d:bc00:1ac0:4dff:fedb:a3f1)
15:29:05 econo_ joins (uid147250@id-147250.tinside.irccloud.com)
15:35:17 sabino joins (~sabino@user/sabino)
15:38:50 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:ec87:948a:1a8:d401) (Remote host closed the connection)
15:38:54 falafel joins (~falafel@62.175.113.194.dyn.user.ono.com)
15:39:06 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:ec87:948a:1a8:d401)
15:39:47 × danse-nr3 quits (~danse@ba-19-159-48.service.infuturo.it) (Ping timeout: 255 seconds)
15:43:14 danse-nr3 joins (~danse@ba-19-159-48.service.infuturo.it)
15:46:05 × waleee quits (~waleee@h-176-10-144-38.NA.cust.bahnhof.se) (Ping timeout: 255 seconds)
15:47:10 tremon joins (~tremon@83.80.159.219)
15:47:45 × vglfr quits (~vglfr@46.96.14.220) (Read error: Connection reset by peer)
15:48:08 vglfr joins (vglfr@gateway/vpn/protonvpn/vglfr)
15:48:44 <albet70> how to wrap three monads into one? I saw EitherT r e m a in contstuff
15:49:45 × lortabac quits (~lorenzo@2a01:e0a:541:b8f0:7e1b:b86f:7cc3:2e52) (Quit: WeeChat 3.5)
15:50:07 <danse-nr3> monad transformers and monad stacks? I think there are the mtl and transformers libraries, with different approaches. For some reason i never need to use these...
15:50:22 <albet70> Either Cont IO three effect
15:50:24 <EvanR> another example from mtl is RWST, which combines Reader, Writer, and State
15:50:41 <EvanR> on top of a 4th monad
15:51:01 <albet70> how to combine them? what's the trick?
15:51:22 <EvanR> the definition of >>= just has to make all the effects happen
15:51:53 <albet70> I mean how to construct the transformer?
15:51:54 <EvanR> and the runRWST function gets the process started, giving back an action in the base monad
15:52:11 <EvanR> construct an action?
15:52:20 <geekosaur> albet70, can you give a concrete example?
15:53:07 <danse-nr3> there are a gazillion of tutorials around. Recently there was a very nice one on haskell weekly comparing the mtl and transformers approach, but as usual ...
15:53:22 <geekosaur> I mean, in xmonad we have `newtype X a = StateT XState (ReaderT XConf IO) a` so we have three monads, and mtl keeps them straight for us
15:53:44 <danse-nr3> ... as usual the chrome history is too lame to find it
15:53:45 <albet70> geekosaur , like this EitherT r e m a
15:53:57 <geekosaur> you can't do that
15:54:28 <albet70> https://wiki.haskell.org/Contstuff
15:54:33 <geekosaur> you can combine them the mtl way, the transformers way, or the effects way. you can't just keep appending stuff to an existing monad transformer
15:56:17 todi joins (~todi@p4fd1a3e6.dip0.t-ipconnect.de)
15:56:42 <geekosaur> that looks like a different monad library entirely. if it doesn';t have a CPSed monad already then you'll have to write one using the contstuff machinery
15:57:16 <albet70> EitherT r (ContT r m) a this can be ok?
15:58:18 gdown joins (~gavin@h69-11-149-109.kndrid.broadband.dynamic.tds.net)
15:59:04 <geekosaur> possibly?
15:59:23 × vglfr quits (vglfr@gateway/vpn/protonvpn/vglfr) (Ping timeout: 260 seconds)
16:00:04 <albet70> if m is IO, this three effect is when it's Right run some a -> IO r action, right?
16:01:35 vglfr joins (~vglfr@46.96.14.220)
16:02:09 <albet70> three effect or three effects? use 'is' or 'are', my English is not good
16:05:08 <EvanR> these three effects are cool
16:05:21 zetef joins (~zetef@2a02:2f00:5201:4b00:7fc8:6fbe:33d9:ba2a)
16:06:03 <EvanR> EitherT sounds like it's supposed to add "terminate early" effects, but ContT can already do that, so I'm confused
16:06:10 <sshine> albet70, I don't think people mind the grammar mistakes in English. what matters is that the Haskell types work :)
16:07:31 acidjnk joins (~acidjnk@p200300d6e72b931400da001bbea1022f.dip0.t-ipconnect.de)
16:08:15 <geekosaur> ContT actually does terminate early, EitherT just shortcuts around your computation when >>= is given a "left"
16:09:01 <albet70> EvanR , when some others function return Either r a, EitherT is useful, Cont isn't
16:09:26 <geekosaur> Contstuff looks like a "mother of all monads" (https://www.schoolofhaskell.com/user/dpiponi/the-mother-of-all-monads) implementation
16:11:28 × zetef quits (~zetef@2a02:2f00:5201:4b00:7fc8:6fbe:33d9:ba2a) (Quit: Leaving)
16:11:45 <albet70> I asked chatgpt what cont effect is, and it tells me cont is about Pause and Resume, head that first time
16:11:56 <albet70> and there is Pause monad, aha
16:12:30 <geekosaur> I don't think that's how I would describe it, but then Cont always confuses me
16:12:56 <danse-nr3> yeah me too. I believe that is a concept coming from other contexts that makes little sense in haskell
16:13:04 <geekosaur> Cont/ContT is about being able to exit early by using an escape hatch passed to your computation
16:13:33 <geekosaur> (I always have to sit down and work out what ContT is doing, then I forget it again shortly afterward)
16:13:35 <albet70> ContT is not just early exit, also Choice
16:13:58 <albet70> geekosaur , me too
16:14:45 pixelmonk joins (~pixelmonk@50.205.76.66)
16:15:10 × machinedgod quits (~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 255 seconds)
16:15:31 <albet70> I learn ContT at least three times one year, then I forget it
16:16:29 × fendor quits (~fendor@2a02:8388:1640:be00:2a62:2dd0:490d:f2ca) (Remote host closed the connection)
16:17:06 <dminuoso> I like to think of the ContT effect as just yield+reify and goto.
16:18:09 <kuribas> There aren't many uses of ContT in haskell, are they?
16:18:09 <dminuoso> Part of the reason it feels so difficult, is because it doesnt cover any single clear usecase.
16:18:11 fendor joins (~fendor@2a02:8388:1640:be00:2a62:2dd0:490d:f2ca)
16:18:33 <dminuoso> kuribas: Mmm, lets phrase it different: There are many uses for continuations.
16:18:42 <kuribas> Sure
16:18:53 <int-e> . o O ( let me get back to you on that one )
16:19:13 <kuribas> I used ContT only once, to get a list of resources out of a bracketed function.
16:19:34 <dminuoso> Most of my ContT uses have disappeared into explicit continuations
16:19:41 <dminuoso> Mostly because it felt much clearer and obvious
16:19:51 Guest58 joins (~Guest37@149.159.199.141)
16:20:01 <kuribas> yeah, this
16:21:29 <albet70> that goto is tricky
16:22:19 gatekempt parts (~gatekempt@user/gatekempt) (Textual IRC Client: www.textualapp.com)
16:24:20 × falafel quits (~falafel@62.175.113.194.dyn.user.ono.com) (Ping timeout: 255 seconds)
16:30:19 <albet70> that data constructor is really open my mind, I never saw something like it in other languages, you can define some values like V a, you can create infinite values! I learned some monads now, I wonder can we have infinite monads?
16:30:44 <albet70> how to create effects?
16:30:46 <monochrom> Well [a] has infinite values too.
16:31:20 <EvanR> let x = x + 1
16:31:54 <EvanR> x = ∞
16:32:45 <geekosaur> infinite values are allowed, infinite types are not
16:32:59 <geekosaur> there are type systems which allow them but ghc's isn't one of them
16:33:06 <EvanR> another missed opportuntiy for mayhem
16:33:50 thegeekinside joins (~thegeekin@189.141.80.123)
16:34:55 × Ranhir quits (~Ranhir@157.97.53.139) (Read error: Connection reset by peer)
16:34:56 <monochrom> My https://www.vex.net/~trebla/haskell/cont.xhtml characterizs Cont as inside-out, inversion of control. Formally, I state and prove an inside-out equation. I think it would be the fundamental theorem of Cont, and it is sufficient and necessary for every use case. I haven't done the similar for ContT, but it should be similar.
16:36:06 <monochrom> Eh? I don't know why I had https there. :)
16:36:23 <geekosaur> for me it's just habit
16:37:17 <monochrom> Ah I think Chrome filled that in.
16:38:33 × rosco quits (~rosco@yp-150-69.tm.net.my) (Quit: Lost terminal)
16:39:30 tzh joins (~tzh@c-71-193-181-0.hsd1.or.comcast.net)
16:39:34 <monochrom> EvanR: Fortunately, impredicative types are the next best thing for mayhem. >:)
16:39:44 <geekosaur> yeh, chrome recently switched to always forcing https
16:40:32 × misterfish quits (~misterfis@84-53-85-146.bbserv.nl) (Ping timeout: 255 seconds)
16:41:34 <dminuoso> albet70: You see this style *very* *very* often in JavaScript.
16:42:11 <dminuoso> It's how you cope with bad library design. You just start tossing continuations at it enough until you goto your goal.
16:42:31 <dminuoso> Its sort of how you slap goto in badly written C programs long enough to make it do what you want.
16:42:53 <dminuoso> The only difference is that C programmers generally know this to be a bad thing.
16:43:45 <monochrom> In fact, a similar inside-out equation is also the best way out there (both for teaching and in research papers) to explain shift-reset. I didn't think it up myself, I was porting best practice. :)
16:44:05 × haskellbridge quits (~haskellbr@069-135-003-034.biz.spectrum.com) (Remote host closed the connection)
16:44:36 <monochrom> One of the few times Dijkstra was right: A formula is worth a thousand pictures.
16:44:38 haskellbridge joins (~haskellbr@069-135-003-034.biz.spectrum.com)
16:44:38 ChanServ sets mode +v haskellbridge
16:44:38 × haskellbridge quits (~haskellbr@069-135-003-034.biz.spectrum.com) (Read error: Connection reset by peer)
16:44:58 haskellbridge joins (~haskellbr@069-135-003-034.biz.spectrum.com)
16:44:58 ChanServ sets mode +v haskellbridge
16:45:03 <monochrom> haskellbridge come back!!!!! :(
16:45:04 <monochrom> :)
16:45:29 <monochrom> OK most of the times Dijkstra was right. :)
16:45:42 <APic>
16:45:54 <geekosaur> for some reason it crashes the first time when I restart it (I added a channel)
16:46:08 <geekosaur> reported it upstream, heard nothing back
16:51:48 _ht joins (~Thunderbi@28-52-174-82.ftth.glasoperator.nl)
16:56:26 × kuribas quits (~user@ip-188-118-57-242.reverse.destiny.be) (Quit: ERC (IRC client for Emacs 27.1))
17:02:22 Tuplanolla joins (~Tuplanoll@91-159-68-236.elisa-laajakaista.fi)
17:03:46 zetef joins (~quassel@2a02:2f00:5201:4b00:7fc8:6fbe:33d9:ba2a)
17:12:36 <EvanR> crashes? what's the error message
17:13:37 Square joins (~Square@user/square)
17:17:53 × Nachtgespenst quits (~user@user/siracusa) (Quit: Bye!)
17:18:35 random-jellyfish joins (~tiber@2a02:2f04:11e:c600:79b7:1b78:95b:d6a)
17:18:35 × random-jellyfish quits (~tiber@2a02:2f04:11e:c600:79b7:1b78:95b:d6a) (Changing host)
17:18:35 random-jellyfish joins (~tiber@user/random-jellyfish)
17:20:34 <Unicorn_Princess> how did it come to pass that if/then/else in haskell isn't a mere function/operator, like C's '?'
17:21:38 <[exa]> Unicorn_Princess: there's some syntactic convenience in that
17:22:16 <EvanR> there is a function if you want to use it
17:22:19 <EvanR> :t bool
17:22:20 <lambdabot> a -> a -> Bool -> a
17:22:51 derpyxdhs joins (~Thunderbi@user/derpyxdhs)
17:23:24 × zetef quits (~quassel@2a02:2f00:5201:4b00:7fc8:6fbe:33d9:ba2a) (Ping timeout: 240 seconds)
17:23:38 <Unicorn_Princess> ah, thanks. was looking for Bool -> a -> a -> a, so hoogle didn't turn it up
17:23:39 <EvanR> if then else was already a syntax in miranda, and other languages that haskell stole liberally from
17:24:07 idgaen joins (~idgaen@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c)
17:26:39 × Guest58 quits (~Guest37@149.159.199.141) (Ping timeout: 248 seconds)
17:30:01 × haskellbridge quits (~haskellbr@069-135-003-034.biz.spectrum.com) (Remote host closed the connection)
17:30:38 haskellbridge joins (~haskellbr@069-135-003-034.biz.spectrum.com)
17:30:38 ChanServ sets mode +v haskellbridge
17:30:58 Ranhir joins (~Ranhir@157.97.53.139)
17:32:17 × danse-nr3 quits (~danse@ba-19-159-48.service.infuturo.it) (Read error: Connection reset by peer)
17:33:02 danse-nr3 joins (~danse@151.47.151.72)
17:33:06 × chele quits (~chele@user/chele) (Remote host closed the connection)
17:35:15 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
17:37:23 × derpyxdhs quits (~Thunderbi@user/derpyxdhs) (Quit: derpyxdhs)
17:37:24 zetef joins (~quassel@2a02:2f00:5201:4b00:7fc8:6fbe:33d9:ba2a)
17:38:49 AssCrackBandit joins (~user@cust-west-par-46-193-2-167.cust.wifirst.net)
17:40:44 zetef_ joins (~quassel@2a02:2f00:5201:4b00:7fc8:6fbe:33d9:ba2a)
17:40:55 emmanuelux joins (~emmanuelu@user/emmanuelux)
17:41:51 × zetef_ quits (~quassel@2a02:2f00:5201:4b00:7fc8:6fbe:33d9:ba2a) (Client Quit)
17:53:27 juri__ joins (~juri@79.140.117.143)
17:53:51 nate2 joins (~nate@c-98-45-169-16.hsd1.ca.comcast.net)
17:54:28 × juri_ quits (~juri@84-19-175-187.pool.ovpn.com) (Ping timeout: 255 seconds)
17:54:43 mikoto-chan joins (~mikoto-ch@ip-212-239-236-59.dsl.scarlet.be)
17:56:04 × juri__ quits (~juri@79.140.117.143) (Read error: Connection reset by peer)
17:57:29 Guest12 joins (~Guest37@149.159.199.141)
17:58:27 juri_ joins (~juri@84-19-175-187.pool.ovpn.com)
17:58:50 × nate2 quits (~nate@c-98-45-169-16.hsd1.ca.comcast.net) (Ping timeout: 255 seconds)
18:02:39 × zetef quits (~quassel@2a02:2f00:5201:4b00:7fc8:6fbe:33d9:ba2a) (Remote host closed the connection)
18:06:36 × sord937 quits (~sord937@gateway/tor-sasl/sord937) (Quit: sord937)
18:07:07 zetef joins (~quassel@2a02:2f00:5201:4b00:7fc8:6fbe:33d9:ba2a)
18:07:26 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
18:09:29 × zetef quits (~quassel@2a02:2f00:5201:4b00:7fc8:6fbe:33d9:ba2a) (Remote host closed the connection)
18:11:01 zetef joins (~quassel@2a02:2f00:5201:4b00:7fc8:6fbe:33d9:ba2a)
18:11:40 × Teacup quits (~teacup@user/teacup) ()
18:11:57 Teacup joins (~teacup@user/teacup)
18:27:31 × coot quits (~coot@89-69-206-216.dynamic.chello.pl) (Quit: coot)
18:32:51 × Square quits (~Square@user/square) (Remote host closed the connection)
18:34:38 × Guest12 quits (~Guest37@149.159.199.141) (Quit: Client closed)
18:36:16 × John_Ivan quits (~John_Ivan@user/john-ivan/x-1515935) (Remote host closed the connection)
18:37:36 John_Ivan joins (~John_Ivan@user/john-ivan/x-1515935)
18:41:20 × John_Ivan quits (~John_Ivan@user/john-ivan/x-1515935) (Remote host closed the connection)
18:41:50 John_Ivan joins (~John_Ivan@user/john-ivan/x-1515935)
18:44:58 × Batzy quits (~quassel@user/batzy) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
18:46:18 Batzy joins (~quassel@user/batzy)
18:48:20 × todi quits (~todi@p4fd1a3e6.dip0.t-ipconnect.de) (Quit: ZNC - https://znc.in)
18:50:07 Guest51 joins (~Guest37@149.159.199.141)
18:52:56 × talismanick quits (~user@2601:204:ef00:bb0::1ab2) (Ping timeout: 272 seconds)
18:56:08 neceve joins (~neceve@user/neceve)
18:58:38 × dcoutts quits (~duncan@cpc69402-oxfd27-2-0-cust903.4-3.cable.virginm.net) (Ping timeout: 272 seconds)
19:04:33 Square joins (~Square@user/square)
19:05:23 × Square quits (~Square@user/square) (Remote host closed the connection)
19:12:11 × pixelmonk quits (~pixelmonk@50.205.76.66) (Ping timeout: 255 seconds)
19:21:38 × ridcully quits (~ridcully@p57b5294c.dip0.t-ipconnect.de) (Quit: WeeChat 4.0.5)
19:21:55 ridcully joins (~ridcully@p57b5294c.dip0.t-ipconnect.de)
19:25:11 pixelmonk joins (~pixelmonk@50.205.76.66)
19:26:06 htor joins (~htor@84.208.240.181)
19:27:00 × ubert quits (~Thunderbi@178.165.171.18.wireless.dyn.drei.com) (Read error: Connection reset by peer)
19:30:01 × Guest51 quits (~Guest37@149.159.199.141) (Quit: Client closed)
19:39:25 × vglfr quits (~vglfr@46.96.14.220) (Read error: Connection reset by peer)
19:51:27 × danse-nr3 quits (~danse@151.47.151.72) (Ping timeout: 240 seconds)
19:51:40 × zer0bitz quits (~zer0bitz@user/zer0bitz) (Read error: Connection reset by peer)
19:52:28 dobblego joins (~dibblego@122-199-1-93.ip4.superloop.au)
19:52:28 × dobblego quits (~dibblego@122-199-1-93.ip4.superloop.au) (Changing host)
19:52:28 dobblego joins (~dibblego@haskell/developer/dibblego)
19:53:44 × dibblego quits (~dibblego@haskell/developer/dibblego) (Ping timeout: 272 seconds)
19:53:45 dobblego is now known as dibblego
19:58:30 vglfr joins (~vglfr@46.96.14.220)
20:01:55 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:ec87:948a:1a8:d401) (Remote host closed the connection)
20:05:50 machinedgod joins (~machinedg@d198-53-218-113.abhsia.telus.net)
20:07:20 danza joins (~francesco@151.47.151.72)
20:09:00 zer0bitz joins (~zer0bitz@user/zer0bitz)
20:09:30 Pickchea joins (~private@user/pickchea)
20:24:15 Guest98 joins (~Guest37@149.159.198.179)
20:26:11 zetef_ joins (~quassel@2a02:2f00:5201:4b00:7fc8:6fbe:33d9:ba2a)
20:28:38 × zetef_ quits (~quassel@2a02:2f00:5201:4b00:7fc8:6fbe:33d9:ba2a) (Client Quit)
20:29:56 × takuan quits (~takuan@178-116-218-225.access.telenet.be) (Ping timeout: 260 seconds)
20:31:13 slack1256 joins (~slack1256@181.203.130.240)
20:31:30 <slack1256> Is there a mutable IntMap for the ST Monad?
20:32:48 <EvanR> or IO monad for that matter
20:32:56 <slack1256> Yep
20:35:02 <dminuoso> slack1256: Mind my asking, why does it have to be mutable?
20:35:32 <slack1256> Test for a company. They are evaluating how fast it is on a single core.
20:36:06 × Guest98 quits (~Guest37@149.159.198.179) (Quit: Client closed)
20:38:03 Inst_ joins (~Inst@120.244.192.250)
20:41:01 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:6063:918b:7689:ac0f)
20:41:14 <EvanR> seems like the point of IntMap is persistence, would it even make sense to have a mutable version
20:44:50 × phma quits (phma@2001:5b0:2143:d188:322e:c0e7:31f:f4) (Read error: Connection reset by peer)
20:45:41 phma joins (~phma@2001:5b0:211f:22a8:df61:73e6:61a7:454)
20:46:59 × Inst_ quits (~Inst@120.244.192.250) (Read error: Connection reset by peer)
20:47:04 liamzy__ joins (~Inst@120.244.192.250)
20:47:19 coot joins (~coot@89-69-206-216.dynamic.chello.pl)
20:48:15 × pixelmonk quits (~pixelmonk@50.205.76.66) (Ping timeout: 240 seconds)
20:49:27 × danza quits (~francesco@151.47.151.72) (Ping timeout: 240 seconds)
20:52:10 × mc47 quits (~mc47@xmonad/TheMC47) (Remote host closed the connection)
20:52:21 pixelmonk joins (~pixelmonk@50.205.76.66)
20:57:58 Nachtgespenst joins (~user@user/siracusa)
21:04:58 <monochrom> In my unpopular opinion: Benchmark IntMap itself or at most IORef (IntMap). If it's fast enough, take it. If it's too slow, leave it.
21:05:33 falafel joins (~falafel@62.175.113.194.dyn.user.ono.com)
21:06:00 <monochrom> If they demand to artificially contrive mutable "IntMap" just to make Haskell look bad (we already know that route will look bad), leave them.
21:06:00 <slack1256> Yeah, I will benchmark that. I hate being evaluated by performance.
21:06:03 × _ht quits (~Thunderbi@28-52-174-82.ftth.glasoperator.nl) (Quit: _ht)
21:06:45 <dminuoso> Benchmarking a singular IntMap as the basis for evaluating language performance seems someone is just trying to set up Haskell for a predetermined result.
21:07:33 <monochrom> I am a reductionist, but a good one, so I know when other people do reductionism wrong, for example this one. :)
21:07:37 <dminuoso> It's sort of like benchmarking the thickness of a screw in order to decide whether Volkswagen is worth buying.
21:09:25 FinnBoat joins (~user@2001:861:5863:3d50:413d:b564:79ed:5fe0)
21:10:19 hippoid joins (~hippoid@user/hippoid)
21:11:18 <EvanR> you could win the rigged contest by uberrigging it back at them: ask them to benchmark immutable arrays
21:11:50 <EvanR> if immutable arrays suck, then language X based on mutable arrays must be terrible
21:15:39 waleee joins (~waleee@h-176-10-144-38.NA.cust.bahnhof.se)
21:16:00 <monochrom> People make up their minds first and then look for moving goalpost rationalizations.
21:16:15 <monochrom> Every time you prove them wrong, they steel their resolve.
21:16:38 <monochrom> This is why I have a "leave them" under a suitable condition. Don't argue. Quit.
21:18:59 ft joins (~ft@p4fc2a529.dip0.t-ipconnect.de)
21:21:20 × fendor quits (~fendor@2a02:8388:1640:be00:2a62:2dd0:490d:f2ca) (Remote host closed the connection)
21:28:53 L29Ah joins (~L29Ah@wikipedia/L29Ah)
21:34:48 × FinnBoat quits (~user@2001:861:5863:3d50:413d:b564:79ed:5fe0) (Ping timeout: 260 seconds)
21:36:35 <meejah> EvanR: yeah, i love the art :)
21:49:27 × falafel quits (~falafel@62.175.113.194.dyn.user.ono.com) (Ping timeout: 240 seconds)
21:53:00 × chomwitt quits (~chomwitt@2a02:587:7a2d:bc00:1ac0:4dff:fedb:a3f1) (Ping timeout: 240 seconds)
21:55:21 nate2 joins (~nate@c-98-45-169-16.hsd1.ca.comcast.net)
21:56:47 dcoutts joins (~duncan@cpc69402-oxfd27-2-0-cust903.4-3.cable.virginm.net)
22:00:22 × nate2 quits (~nate@c-98-45-169-16.hsd1.ca.comcast.net) (Ping timeout: 258 seconds)
22:03:20 cmtaur^ joins (~cd@70-88-177-118-Atlanta.hfc.comcastbusiness.net)
22:09:21 Lycurgus joins (~georg@user/Lycurgus)
22:12:08 × vglfr quits (~vglfr@46.96.14.220) (Read error: Connection reset by peer)
22:14:57 todi joins (~todi@p4fd1a3e6.dip0.t-ipconnect.de)
22:15:01 × michalz quits (~michalz@185.246.207.218) (Remote host closed the connection)
22:17:51 × slack1256 quits (~slack1256@181.203.130.240) (Read error: Connection reset by peer)
22:19:03 × mikoto-chan quits (~mikoto-ch@ip-212-239-236-59.dsl.scarlet.be) (Ping timeout: 240 seconds)
22:20:39 accord joins (uid568320@id-568320.hampstead.irccloud.com)
22:28:36 × zetef quits (~quassel@2a02:2f00:5201:4b00:7fc8:6fbe:33d9:ba2a) (Ping timeout: 240 seconds)
22:29:03 × neceve quits (~neceve@user/neceve) (Ping timeout: 240 seconds)
22:29:30 × Jackneill_ quits (~Jackneill@20014C4E1E16F000C6DFD3C15F3E3440.dsl.pool.telekom.hu) (Ping timeout: 258 seconds)
22:29:51 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
22:32:47 × Lycurgus quits (~georg@user/Lycurgus) (Quit: leaving)
22:48:13 × Pickchea quits (~private@user/pickchea) (Quit: Leaving)
23:04:40 <Axeman6> Re slack1256's question, i wonder how much relevance http://simonmar.github.io/bib/papers/concurrent-data.pdf has today
23:05:43 Axeman6 is now known as Axman6
23:16:15 × idgaen quits (~idgaen@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 4.0.5)
23:16:25 jinsun_ joins (~jinsun@user/jinsun)
23:16:25 jinsun is now known as Guest7997
23:16:26 × Guest7997 quits (~jinsun@user/jinsun) (Killed (cadmium.libera.chat (Nickname regained by services)))
23:16:26 jinsun_ is now known as jinsun
23:17:05 × xsarnik quits (xsarnik@lounge.fi.muni.cz) (Quit: Ping timeout (120 seconds))
23:17:19 xsarnik joins (xsarnik@lounge.fi.muni.cz)
23:19:48 × acidjnk quits (~acidjnk@p200300d6e72b931400da001bbea1022f.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
23:21:06 × coot quits (~coot@89-69-206-216.dynamic.chello.pl) (Quit: coot)
23:23:56 falafel joins (~falafel@62.175.113.194.dyn.user.ono.com)
23:24:12 × random-jellyfish quits (~tiber@user/random-jellyfish) (Ping timeout: 240 seconds)
23:27:27 yj2 parts (echo@user/yjj3) (WeeChat 3.0)
23:27:55 tcard_ joins (~tcard@2400:4051:5801:7500:cf17:befc:ff82:5303)
23:27:58 × tcard quits (~tcard@2400:4051:5801:7500:cf17:befc:ff82:5303) (Read error: Connection reset by peer)
23:31:08 × __monty__ quits (~toonn@user/toonn) (Quit: leaving)
23:36:26 × htor quits (~htor@84.208.240.181) (Quit: htor)
23:37:09 Lycurgus joins (~georg@li1192-118.members.linode.com)
23:37:09 × Lycurgus quits (~georg@li1192-118.members.linode.com) (Changing host)
23:37:09 Lycurgus joins (~georg@user/Lycurgus)
23:40:22 [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470)
23:43:19 <liamzy__> hmmm
23:43:20 liamzy__ is now known as Inst
23:43:23 <Inst> https://neohaskell.org/docs/essentials/types/
23:43:34 <Inst> this actually sounds like a good idea for a language extension, i.e, being able to multiply declare newtypes
23:43:45 <Inst> coerce also sucks, btw
23:44:02 <Inst> well, actually, there's a coerce function operator in Base IIRC
23:46:20 <monochrom> I don't see a difference between "cast" and "coerce" apart from someone-wants-to-use-another-name-for-the-sake-of-it.
23:46:53 <geekosaur> "it has to be like C for anyone to respect it"
23:46:54 <monochrom> What is new in this case?
23:47:25 <geekosaur> this got us OverloadedRecordDot, including people who insist that this made Haskell a "real language"
23:47:40 <geekosaur> at this rate GHC 13 will be either C or JavaScript
23:47:55 <monochrom> C doesn't use the "cast" word either. C's is (int)foo. "cast" would be C++ jargon.
23:49:49 <monochrom> I guess correction: C doesn't use the "cast" word in code. It's C++ code.
23:50:48 <monochrom> So now it has to be like C++ for anyone to respect it. >:)
23:50:56 <monochrom> Either that or C#.
23:51:49 <geekosaur> I'm trying to figure out at what point I need to fork Haskell to have it remain Haskell
23:51:56 <monochrom> On the "bright" side, I like the name "flat map". >:)
23:52:02 <geekosaur> or if that when was OverloadedRecordDot
23:52:27 <monochrom> I think you just fork GHC and delete that extension. :)
23:53:27 × pixelmonk quits (~pixelmonk@50.205.76.66) (Ping timeout: 240 seconds)
23:56:38 <EvanR> a cast in C causes a conversion, coercion sounds like only a change of type, which is what coerce effectively does
23:56:52 <EvanR> so cast is wrong
23:56:54 <geekosaur> it's C++'s reinterpret_cast
23:56:55 <EvanR> for that
23:57:55 <geekosaur> (and not all C casts cause conversion; the confusing multiple uses of C's casts are why C++ has multiple "cast" operations)
23:58:23 <EvanR> the ones that don't really do a conversion do a conversion in my personal platonic C xD
23:58:43 <EvanR> a pointer to A casted to pointer to B really means something
23:59:09 <geekosaur> what if either A or B is `void`?
23:59:23 <EvanR> sure

All times are in UTC on 2023-11-02.