2020/12/20

2020-12-20 00:03:54 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:9d9f:2423:b563:76e5)
2020-12-20 00:05:24 +0100Varis(~Tadas@unaffiliated/varis) (Remote host closed the connection)
2020-12-20 00:05:59 +0100fendor(~fendor@178.115.130.51.wireless.dyn.drei.com) (Remote host closed the connection)
2020-12-20 00:09:01 +0100urek(~urek@2804:7f1:e10a:f71b:1d25:d790:4162:b2ba)
2020-12-20 00:13:00 +0100 <ggVGc> great... wondered why my application was using 11gb of memory... LazyBS.writeFile
2020-12-20 00:13:03 +0100 <ggVGc> :(
2020-12-20 00:13:15 +0100kam1(~kam1@24.231.108.143)
2020-12-20 00:13:21 +0100 <ggVGc> why does lazy IO even exist
2020-12-20 00:13:35 +0100 <c_wraith> that isn't lazy IO
2020-12-20 00:13:54 +0100 <c_wraith> when it completes execution, arguments will have been fully evaluated
2020-12-20 00:14:08 +0100 <c_wraith> (and the return value, for that matter)
2020-12-20 00:14:35 +0100 <hpc> more precisely, execution of writeFile isn't dependent on another expression being evaluated
2020-12-20 00:15:10 +0100 <c_wraith> it's possible lazy bytestrings with lots of thunks in them are your problem
2020-12-20 00:15:23 +0100 <c_wraith> Bute it's not writeFile causing it.
2020-12-20 00:15:45 +0100 <c_wraith> It's writeFile forcing their evaluation. Which causes some profiling modes to report it as the primary cost center
2020-12-20 00:16:02 +0100 <gentauro> 00:13 < ggVGc> great... wondered why my application was using 11gb of memory... LazyBS.writeFile
2020-12-20 00:16:21 +0100 <gentauro> ggVGc: you are still far away from the 23 GB mem leak of `taffybar` on my laptop :P
2020-12-20 00:16:33 +0100 <gentauro> (I guess having 64 GB helps with running Haskell stuff)
2020-12-20 00:16:52 +0100 <gentauro> I even let the mem leak stay there for a few weeks just because I could xD
2020-12-20 00:20:22 +0100 <gentauro> c_wraith: so the best way to handle ByteString should be doing a `LBS.ByteString` -> `BS.ByteString` and then call `writeFile`?
2020-12-20 00:20:34 +0100 <c_wraith> that's not going to fix anything
2020-12-20 00:20:52 +0100 <c_wraith> It's just going to change where the massive thunk buildup is evaluated
2020-12-20 00:21:00 +0100 <c_wraith> The fix is to not build up thunks
2020-12-20 00:21:00 +0100elliott__(~elliott@pool-108-51-101-42.washdc.fios.verizon.net) (Ping timeout: 256 seconds)
2020-12-20 00:21:06 +0100 <dolio> It's a good thing lazy IO exists, or all the people who use it as a scapegoat for their real problems might have to figure out what's actuall wrong.
2020-12-20 00:22:50 +0100elliott__(~elliott@pool-108-51-101-42.washdc.fios.verizon.net)
2020-12-20 00:23:08 +0100coot(~coot@37.30.50.101.nat.umts.dynamic.t-mobile.pl) (Quit: coot)
2020-12-20 00:24:41 +0100Welkin(~Welkin@216.243.35.47)
2020-12-20 00:24:51 +0100 <ggVGc> c_wraith: hm, yeah, I thought it was weird... And it's possible changing it also had some other effect. But I did get my memory usage down to a stable level
2020-12-20 00:24:58 +0100 <ggVGc> hence I have now stopped investigating
2020-12-20 00:25:45 +0100 <ggVGc> I guess I did move some other things around that might have affected laziness when changing things to try to pinpoint what was happening
2020-12-20 00:25:49 +0100 <Welkin> user count dropped since I was last on here 6-9 months ago
2020-12-20 00:26:08 +0100hackage(mniip@haskell/bot/hackage) (Read error: Connection reset by peer)
2020-12-20 00:26:31 +0100aoei(~aoei@li2174-104.members.linode.com) (Quit: ZNC 1.7.5 - https://znc.in)
2020-12-20 00:26:32 +0100nitrix(~nitrix@haskell/developer/nitrix) (Remote host closed the connection)
2020-12-20 00:26:40 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:9d9f:2423:b563:76e5) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-12-20 00:26:45 +0100hackage(mniip@haskell/bot/hackage)
2020-12-20 00:26:45 +0100nitrix(~nitrix@haskell/developer/nitrix)
2020-12-20 00:26:46 +0100aoei(~aoei@li2174-104.members.linode.com)
2020-12-20 00:28:25 +0100theorbtwo(~theorb@cpc81822-swin19-2-0-cust3.3-1.cable.virginm.net)
2020-12-20 00:28:40 +0100Varis(~Tadas@unaffiliated/varis)
2020-12-20 00:28:56 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
2020-12-20 00:35:44 +0100ddellacosta(dd@gateway/vpn/mullvad/ddellacosta) (Ping timeout: 260 seconds)
2020-12-20 00:37:37 +0100shutdown_-h_now(~arjan@2001:1c06:2d0b:2312:b430:7c21:4c6a:15a8) (Ping timeout: 272 seconds)
2020-12-20 00:41:16 +0100philopso1(~caecilius@gateway/tor-sasl/caecilius)
2020-12-20 00:43:00 +0100shutdown_-h_now(~arjan@2001:1c06:2d0b:2312:438:f47:3e76:14d7)
2020-12-20 00:43:15 +0100kam1(~kam1@24.231.108.143) (Read error: Connection reset by peer)
2020-12-20 00:44:43 +0100philopsos(~caecilius@gateway/tor-sasl/caecilius) (Ping timeout: 240 seconds)
2020-12-20 00:47:38 +0100brodie(~brodie@207.53.253.137) (Ping timeout: 256 seconds)
2020-12-20 00:52:44 +0100geowiesnot(~user@87-89-181-157.abo.bbox.fr) (Ping timeout: 256 seconds)
2020-12-20 00:55:40 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-12-20 00:57:20 +0100nowhere_man(~pierre@2a01:e0a:3c7:60d0:e88f:4e24:f6a7:f155)
2020-12-20 00:58:08 +0100m0rphism(~m0rphism@HSI-KBW-085-216-104-059.hsi.kabelbw.de) (Quit: WeeChat 2.7.1)
2020-12-20 00:59:54 +0100boxscape(4ff0ba59@gateway/web/cgi-irc/kiwiirc.com/ip.79.240.186.89)
2020-12-20 01:00:10 +0100 <boxscape> :t \f -> fmap join . traverse f
2020-12-20 01:00:15 +0100 <lambdabot> (Monad m, Traversable m, Applicative f) => (a1 -> f (m a2)) -> m a1 -> f (m a2)
2020-12-20 01:00:21 +0100 <boxscape> is there a better function for this?
2020-12-20 01:00:42 +0100shatriff(~vitaliish@176-52-216-242.irishtelecom.com) (Remote host closed the connection)
2020-12-20 01:00:56 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
2020-12-20 01:01:17 +0100shatriff(~vitaliish@176-52-216-242.irishtelecom.com)
2020-12-20 01:01:17 +0100 <hpc> :t (fmap join .)
2020-12-20 01:01:19 +0100 <lambdabot> (Monad m, Functor f) => (a1 -> f (m (m a2))) -> a1 -> f (m a2)
2020-12-20 01:02:13 +0100sakirious(~sakirious@c-71-197-191-137.hsd1.wa.comcast.net)
2020-12-20 01:02:30 +0100 <hpc> if you're looking for something predefined, probably not?
2020-12-20 01:02:37 +0100 <boxscape> hm, okay
2020-12-20 01:04:17 +0100cosimone(~cosimone@2001:b07:ae5:db26:1fb3:ef3f:ece2:c6f8) (Ping timeout: 260 seconds)
2020-12-20 01:06:27 +0100 <nowhere_man> Hi everyone
2020-12-20 01:07:03 +0100 <nowhere_man> I'm writing a bot for a Codingame challenge, and I want to write a function whose type should be recursive IIUC
2020-12-20 01:07:22 +0100 <nowhere_man> I'm having a hard time understanding how to use Fix for that
2020-12-20 01:08:16 +0100 <nowhere_man> I want a function with type akin to: type Strategy = State -> (Order, Strategy)
2020-12-20 01:09:08 +0100 <hpc> so, at the value level, imagine you have something like
2020-12-20 01:09:13 +0100 <hpc> ones = 1 : ones
2020-12-20 01:09:27 +0100 <hpc> to turn that into something using fix, you turn it into a function
2020-12-20 01:09:31 +0100 <hpc> ones x = 1 : x
2020-12-20 01:09:37 +0100 <hpc> or just (1 :)
2020-12-20 01:09:38 +0100 <hpc> and then fix that
2020-12-20 01:09:42 +0100 <hpc> > fix (1 :)
2020-12-20 01:09:45 +0100 <lambdabot> [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1...
2020-12-20 01:09:50 +0100 <boxscape> does it have to be Fix as opposed to something like newtype Strategy = Strategy (State -> (Order, Strategy))?
2020-12-20 01:09:55 +0100 <hpc> do the same thing at the type level with your type, and then Fix it
2020-12-20 01:10:39 +0100 <hpc> you might not necessarily need Fix for this though, yeah
2020-12-20 01:11:04 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:9d9f:2423:b563:76e5)
2020-12-20 01:11:45 +0100chang(~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com)
2020-12-20 01:12:07 +0100gehmehgeh(~ircuser1@gateway/tor-sasl/gehmehgeh) (Quit: Leaving)
2020-12-20 01:12:32 +0100hiroaki(~hiroaki@ip4d168e73.dynamic.kabel-deutschland.de) (Ping timeout: 265 seconds)
2020-12-20 01:13:06 +0100 <nowhere_man> I tried this :
2020-12-20 01:13:07 +0100 <nowhere_man> data Fix f = Fix (f (Fix f))
2020-12-20 01:13:12 +0100 <nowhere_man> type Strategy a = Int -> (Bool, a)
2020-12-20 01:13:16 +0100 <nowhere_man> type ActualStrategy = Fix Strategy
2020-12-20 01:13:20 +0100 <nowhere_man> but I get:
2020-12-20 01:13:29 +0100 <nowhere_man> The type synonym ‘Strategy’ should have 1 argument, but has been given none
2020-12-20 01:16:05 +0100 <hpc> type synonyms need to be fully applied
2020-12-20 01:16:09 +0100 <hpc> use a newtype instead
2020-12-20 01:17:43 +0100 <nowhere_man> newtype Strategy a = Int -> (Bool, a) gets me error: parse error on input ‘->’
2020-12-20 01:18:00 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Ping timeout: 256 seconds)
2020-12-20 01:18:13 +0100 <nowhere_man> and newtype ActualStrategy = Fix Strategy gets me Expecting one more argument to ‘Strategy’
2020-12-20 01:18:31 +0100 <hpc> needs a constructor - newtype Strategy a = Strategy (Int -> (Bool, a))
2020-12-20 01:18:42 +0100 <hpc> ActualStrategy i think can stay as a type alias here
2020-12-20 01:19:04 +0100 <hpc> personally, i would avoid using type aliases to learn this stuff
2020-12-20 01:19:11 +0100 <hpc> it just makes it harder to see what the real types are
2020-12-20 01:23:14 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com)
2020-12-20 01:23:26 +0100kam1(~kam1@24.231.108.143)
2020-12-20 01:24:09 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Remote host closed the connection)
2020-12-20 01:24:10 +0100xlei(znc@unaffiliated/xlei) (Ping timeout: 246 seconds)
2020-12-20 01:25:43 +0100 <solonarv> you don't need a type alias, and you don't need to explicitly use Fix either
2020-12-20 01:26:04 +0100 <solonarv> newtype Strategy = Strategy (State -> (Order, Strategy)) -- this works just fine
2020-12-20 01:26:09 +0100 <nowhere_man> but then, what should be the type of my function?
2020-12-20 01:27:51 +0100jedws(~jedws@121.209.189.201)
2020-12-20 01:27:51 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:9d9f:2423:b563:76e5) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-12-20 01:27:58 +0100 <nowhere_man> because if I use ActualStrategy with the following definition: strategy num = (odd num, strategy)
2020-12-20 01:28:21 +0100 <nowhere_man> Couldn't match expected type ‘Fix FixStrategy'’
2020-12-20 01:28:22 +0100 <nowhere_man> with actual type ‘p0 -> p1 -> (MyOrder, FixStrategy)’
2020-12-20 01:28:28 +0100 <nowhere_man> ha, shit
2020-12-20 01:29:22 +0100 <nowhere_man> Couldn't match expected type ‘Fix ActualStrategy' with actual type 'p0 -> (Bool, ActualStrategy)'
2020-12-20 01:30:20 +0100solarliner(~solarline@243.81.10.109.rev.sfr.net)
2020-12-20 01:31:24 +0100elfets(~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de) (Quit: Leaving)
2020-12-20 01:32:13 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-12-20 01:33:20 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:9d9f:2423:b563:76e5)
2020-12-20 01:35:17 +0100 <solonarv> I would recommend avoiding Fix, it doesn't do anything useful here
2020-12-20 01:36:20 +0100 <nowhere_man> is there a way to type that function?
2020-12-20 01:37:23 +0100solarliner(~solarline@243.81.10.109.rev.sfr.net) (Remote host closed the connection)
2020-12-20 01:37:30 +0100fuzzypixelz(~fuzzypixe@eth-west-pareq2-46-193-4-100.wb.wifirst.net)
2020-12-20 01:38:00 +0100niHiggim(~niHiggim@98.122.188.27)
2020-12-20 01:39:16 +0100ericsagn1(~ericsagne@2405:6580:0:5100:e26e:cf9:1dd6:9615) (Ping timeout: 258 seconds)
2020-12-20 01:39:45 +0100 <nowhere_man> I have zero emotional attachment to Fix ;-)
2020-12-20 01:39:57 +0100heatsink(~heatsink@2600:1700:bef1:5e10:404:9305:1542:3c1a) (Remote host closed the connection)
2020-12-20 01:40:52 +0100niHiggim(~niHiggim@98.122.188.27) (Remote host closed the connection)
2020-12-20 01:41:07 +0100 <solonarv> I already suggested the right type above
2020-12-20 01:41:19 +0100 <solonarv> newtype Strategy = Strategy (State -> (Order, Strategy))
2020-12-20 01:41:28 +0100ddellacosta(dd@gateway/vpn/mullvad/ddellacosta)
2020-12-20 01:42:04 +0100 <boxscape> to be clear the type of the function in that case is simply `Strategy`
2020-12-20 01:42:13 +0100 <solonarv> yes
2020-12-20 01:44:05 +0100z0(~z0@188.251.64.220) (Quit: leaving)
2020-12-20 01:47:29 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Ping timeout: 260 seconds)
2020-12-20 01:48:26 +0100cole-h(~cole-h@c-73-48-197-220.hsd1.ca.comcast.net)
2020-12-20 01:52:03 +0100_linker_(~linker@2a02:a31a:a041:9a80:6084:8b0:6bec:7d) (Remote host closed the connection)
2020-12-20 01:52:49 +0100ericsagn1(~ericsagne@2405:6580:0:5100:b5ee:dfae:b902:5746)
2020-12-20 01:54:16 +0100 <nowhere_man> okayyyyyy
2020-12-20 01:54:23 +0100 <nowhere_man> thx solonarv
2020-12-20 02:00:47 +0100m0rphism(~m0rphism@HSI-KBW-085-216-104-059.hsi.kabelbw.de)
2020-12-20 02:01:03 +0100andreas303(~andreas@gateway/tor-sasl/andreas303) (Ping timeout: 240 seconds)
2020-12-20 02:04:42 +0100kam1(~kam1@24.231.108.143) (Ping timeout: 260 seconds)
2020-12-20 02:04:51 +0100andreas303(~andreas@gateway/tor-sasl/andreas303)
2020-12-20 02:06:16 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
2020-12-20 02:09:23 +0100jb55(~jb55@gateway/tor-sasl/jb55) (Ping timeout: 240 seconds)
2020-12-20 02:09:28 +0100FreeBirdLjj(~freebirdl@101.87.168.174)
2020-12-20 02:10:41 +0100 <boxscape> @src fix
2020-12-20 02:10:42 +0100 <lambdabot> fix f = let x = f x in x
2020-12-20 02:11:05 +0100 <boxscape> why is it usually defined in this way rather than fix f = f (fix f)? something about sharing maybe?
2020-12-20 02:11:50 +0100 <solonarv> boxscape: precisely
2020-12-20 02:12:06 +0100 <boxscape> how exactly does sharing play into this?
2020-12-20 02:12:42 +0100 <solonarv> the first form allocates a single thunk, 'x', that refers to itself
2020-12-20 02:13:30 +0100 <solonarv> the second form first has to be translated into ANF: fix f = let y = fix f in f y
2020-12-20 02:15:15 +0100 <boxscape> Ah, Isee
2020-12-20 02:15:42 +0100 <boxscape> thanks
2020-12-20 02:16:18 +0100 <boxscape> This ANF (administrative normal form?) is something that's required for STG?
2020-12-20 02:16:34 +0100jb55(~jb55@gateway/tor-sasl/jb55)
2020-12-20 02:16:52 +0100 <solonarv> STG is always in ANF, so basically yes
2020-12-20 02:16:57 +0100 <boxscape> okay
2020-12-20 02:17:14 +0100Welkin(~Welkin@216.243.35.47) (Ping timeout: 260 seconds)
2020-12-20 02:17:17 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:9d9f:2423:b563:76e5) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-12-20 02:19:41 +0100Lycurgus(~niemand@cpe-45-46-137-210.buffalo.res.rr.com)
2020-12-20 02:26:10 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:cca6:5d8:2bb0:556c) (Remote host closed the connection)
2020-12-20 02:27:36 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:9d9f:2423:b563:76e5)
2020-12-20 02:28:20 +0100Tuplanolla(~Tuplanoll@91-159-68-239.elisa-laajakaista.fi) (Ping timeout: 256 seconds)
2020-12-20 02:32:56 +0100columbarius(~columbari@i5E86B362.versanet.de) (Ping timeout: 240 seconds)
2020-12-20 02:33:14 +0100xcmw(~textual@2603-6011-2200-f103-cdbc-9ec6-8319-9dc9.res6.spectrum.com) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-12-20 02:34:29 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-12-20 02:35:18 +0100columbarius(~columbari@87.123.198.237)
2020-12-20 02:38:16 +0100ddellacosta(dd@gateway/vpn/mullvad/ddellacosta) (Ping timeout: 240 seconds)
2020-12-20 02:39:54 +0100kam1(~kam1@24.231.108.143)
2020-12-20 02:40:01 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
2020-12-20 02:40:20 +0100heatsink(~heatsink@2600:1700:bef1:5e10:404:9305:1542:3c1a)
2020-12-20 02:40:40 +0100boxscape(4ff0ba59@gateway/web/cgi-irc/kiwiirc.com/ip.79.240.186.89) (Quit: Connection closed)
2020-12-20 02:43:56 +0100boxscape(4ff0ba59@gateway/web/cgi-irc/kiwiirc.com/ip.79.240.186.89)
2020-12-20 02:44:14 +0100jedws(~jedws@121.209.189.201) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-12-20 02:44:57 +0100heatsink(~heatsink@2600:1700:bef1:5e10:404:9305:1542:3c1a) (Ping timeout: 260 seconds)
2020-12-20 02:46:28 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:9d9f:2423:b563:76e5) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-12-20 02:50:51 +0100sMuNiX(~sMuNiX@vlnsm8-montreal02-142-122-8-233.internet.virginmobile.ca)
2020-12-20 02:51:23 +0100Lord_of_Life_(~Lord@unaffiliated/lord-of-life/x-0885362)
2020-12-20 02:52:25 +0100Lord_of_Life(~Lord@unaffiliated/lord-of-life/x-0885362) (Ping timeout: 240 seconds)
2020-12-20 02:52:33 +0100heatsink(~heatsink@2600:1700:bef1:5e10:404:9305:1542:3c1a)
2020-12-20 02:52:44 +0100Lord_of_Life_Lord_of_Life
2020-12-20 02:57:28 +0100bitmagie(~Thunderbi@200116b8060b130001a0e879def0d467.dip.versatel-1u1.de)
2020-12-20 02:58:47 +0100kam1(~kam1@24.231.108.143) (Remote host closed the connection)
2020-12-20 02:59:06 +0100kam1(~kam1@24.231.108.143)
2020-12-20 02:59:12 +0100Wuzzy(~Wuzzy@p5b0dfe65.dip0.t-ipconnect.de) (Remote host closed the connection)
2020-12-20 03:02:52 +0100xff0x_(~fox@2001:1a81:533f:8600:c719:1424:71ec:9a95)
2020-12-20 03:04:15 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:a111:468a:beb5:7acf)
2020-12-20 03:05:27 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:cca6:5d8:2bb0:556c)
2020-12-20 03:06:13 +0100xff0x(~fox@port-92-195-45-54.dynamic.as20676.net) (Ping timeout: 264 seconds)
2020-12-20 03:06:32 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net)
2020-12-20 03:13:04 +0100hidedagger(~nate@unaffiliated/hidedagger)
2020-12-20 03:14:38 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-12-20 03:18:36 +0100jmchael(~jmchael@81.174.180.109) (Ping timeout: 240 seconds)
2020-12-20 03:28:07 +0100xsperry(~as@unaffiliated/xsperry) (Remote host closed the connection)
2020-12-20 03:29:09 +0100Gurkenglas_(~Gurkengla@unaffiliated/gurkenglas) (Ping timeout: 268 seconds)
2020-12-20 03:31:09 +0100nowhere_man(~pierre@2a01:e0a:3c7:60d0:e88f:4e24:f6a7:f155) (Ping timeout: 272 seconds)
2020-12-20 03:31:49 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:cca6:5d8:2bb0:556c) (Remote host closed the connection)
2020-12-20 03:31:58 +0100kam1(~kam1@24.231.108.143) (Ping timeout: 256 seconds)
2020-12-20 03:32:57 +0100nowhere_man(~pierre@2a01:e0a:3c7:60d0:e88f:4e24:f6a7:f155)
2020-12-20 03:33:21 +0100retr0_(~retr0@2405:201:c01a:700a:90eb:8710:3ff2:3716)
2020-12-20 03:33:25 +0100 <retr0_> hi
2020-12-20 03:34:00 +0100retr0_(~retr0@2405:201:c01a:700a:90eb:8710:3ff2:3716) ("Leaving")
2020-12-20 03:35:26 +0100FreeBirdLjj(~freebirdl@101.87.168.174) (Remote host closed the connection)
2020-12-20 03:37:25 +0100kam1(~kam1@24.231.108.143)
2020-12-20 03:39:11 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 256 seconds)
2020-12-20 03:39:48 +0100Lycurgus(~niemand@cpe-45-46-137-210.buffalo.res.rr.com) (Quit: Exeunt)
2020-12-20 03:45:17 +0100ADG1089_(~adg1089@171.76.183.207)
2020-12-20 03:48:43 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 246 seconds)
2020-12-20 03:48:45 +0100ADG1089_(~adg1089@171.76.183.207) (Read error: Connection reset by peer)
2020-12-20 03:53:02 +0100Mikagami(~MOSCOS@122.54.107.175)
2020-12-20 03:53:15 +0100Welkin(~Welkin@216.243.35.47)
2020-12-20 03:53:30 +0100columbarius(~columbari@87.123.198.237) (Ping timeout: 256 seconds)
2020-12-20 03:55:05 +0100MOSCOS(~MOSCOS@122.54.107.175) (Ping timeout: 240 seconds)
2020-12-20 03:55:18 +0100wagle(~wagle@quassel.wagle.io) (Quit: http://quassel-irc.org - Chat comfortably. Anywhere.)
2020-12-20 03:55:50 +0100wagle(~wagle@quassel.wagle.io)
2020-12-20 03:58:19 +0100m0rphism(~m0rphism@HSI-KBW-085-216-104-059.hsi.kabelbw.de) (Ping timeout: 265 seconds)
2020-12-20 04:02:13 +0100columbarius(~columbari@87.123.198.237)
2020-12-20 04:05:14 +0100ADG1089_(~adg1089@171.76.183.207)
2020-12-20 04:05:15 +0100sw1nn(~sw1nn@host86-164-184-101.range86-164.btcentralplus.com) (Ping timeout: 256 seconds)
2020-12-20 04:07:30 +0100hcchien(~hcchien@s91904426.blix.com)
2020-12-20 04:07:33 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:a111:468a:beb5:7acf) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-12-20 04:10:25 +0100justanotheruser(~justanoth@unaffiliated/justanotheruser) (Ping timeout: 272 seconds)
2020-12-20 04:11:52 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:cca6:5d8:2bb0:556c)
2020-12-20 04:12:04 +0100sagax(~sagax_nb@213.138.71.146) (Read error: Connection reset by peer)
2020-12-20 04:13:16 +0100fuzzypixelz(~fuzzypixe@eth-west-pareq2-46-193-4-100.wb.wifirst.net) (Quit: fuzzypixelz)
2020-12-20 04:15:21 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:a111:468a:beb5:7acf)
2020-12-20 04:16:52 +0100theDon(~td@94.134.91.83) (Ping timeout: 272 seconds)
2020-12-20 04:17:56 +0100sw1nn(~sw1nn@2a00:23c6:2385:3a00:55:615d:2b49:d448)
2020-12-20 04:18:33 +0100theDon(~td@94.134.91.11)
2020-12-20 04:19:09 +0100xcmw(~textual@2603-6011-2200-f103-cdbc-9ec6-8319-9dc9.res6.spectrum.com)
2020-12-20 04:21:00 +0100xirhtogal(~lagothrix@unaffiliated/lagothrix)
2020-12-20 04:21:00 +0100lagothrix(~lagothrix@unaffiliated/lagothrix) (Killed (verne.freenode.net (Nickname regained by services)))
2020-12-20 04:21:00 +0100xirhtogallagothrix
2020-12-20 04:22:23 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-12-20 04:27:06 +0100toorevitimirp(~tooreviti@117.182.182.252)
2020-12-20 04:27:44 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 268 seconds)
2020-12-20 04:27:44 +0100Ariakenom(~Ariakenom@2001:9b1:efb:fc00:34da:ffcd:6792:c11b) (Quit: Leaving)
2020-12-20 04:29:32 +0100matryoshka(~matryoshk@2606:6080:1002:8:3285:30e:de43:8809) (Read error: Connection reset by peer)
2020-12-20 04:29:55 +0100matryoshka(~matryoshk@2606:6080:1002:8:3285:30e:de43:8809)
2020-12-20 04:32:16 +0100stackdimes(~stackdime@136.144.43.79)
2020-12-20 04:33:13 +0100quantumvatican(~private@sou45-h01-176-173-75-58.dsl.sta.abo.bbox.fr)
2020-12-20 04:34:16 +0100vicfred(~vicfred@unaffiliated/vicfred) (Quit: Leaving)
2020-12-20 04:38:48 +0100 <quantumvatican> hello, I just finished today's advent of code using the ReadP parser lib after spending hours initially trying to do the same thing using Parsec. The ReadP parser I generate produces the expected results while its parsec counterpart doesn't.
2020-12-20 04:39:17 +0100 <quantumvatican> Here is the relevant code snippet: https://framabin.org/p/?1ec64b9a6d97553f#rSZa4gjvzdRyZyWdpy8gFiyttdTsFk/BQol/TPmx8CE=
2020-12-20 04:39:53 +0100star_cloud(~star_clou@ec2-34-217-37-165.us-west-2.compute.amazonaws.com)
2020-12-20 04:39:58 +0100 <quantumvatican> Could you help me understand what is wrong in my parsec alternative?
2020-12-20 04:40:13 +0100 <glguy> quantumvatican, In parsec, attoparsec, megaparsec in (a<|>b), if a succeeds then b is discarded
2020-12-20 04:40:45 +0100star_cloud(~star_clou@ec2-34-217-37-165.us-west-2.compute.amazonaws.com) (Remote host closed the connection)
2020-12-20 04:41:22 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com)
2020-12-20 04:42:20 +0100 <quantumvatican> Oh ok. I thought backtracking using "try" would do the trick...
2020-12-20 04:42:40 +0100stackdimes(~stackdime@136.144.43.79) (Quit: WeeChat 2.9)
2020-12-20 04:42:57 +0100 <solonarv> nope. Suppose you have a parser that looks like this: (a <|> b) *> c
2020-12-20 04:43:20 +0100 <solonarv> the input matches b *> c, and a prefix of the input matches a
2020-12-20 04:43:33 +0100 <solonarv> (but the rest of the input then doesn't match c)
2020-12-20 04:43:50 +0100 <solonarv> so a is tried, succeeds, and then c is tried, fails; the parse fails
2020-12-20 04:43:57 +0100wei2912(~wei2912@unaffiliated/wei2912)
2020-12-20 04:44:09 +0100 <solonarv> because a succeeded, b is never tried, so "b followed by c" is also never tried
2020-12-20 04:44:32 +0100electricityZZZZ(~electrici@108-216-157-17.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 260 seconds)
2020-12-20 04:46:44 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:a111:468a:beb5:7acf) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-12-20 04:47:05 +0100 <glguy> quantumvatican, in parsec with (a <|> b) as soon as a consumes some input b is discarded. If a succeeds (consuming input or not) b is discarded. if a fails without consuming any input then b is used
2020-12-20 04:47:33 +0100 <glguy> try a hides any input consumed in a in the case that a fails
2020-12-20 04:48:30 +0100Kronic(~Kronic___@84.203.96.46) (Quit: Leaving)
2020-12-20 04:48:43 +0100 <c_wraith> breaking distributive rules makes me sad :(
2020-12-20 04:49:01 +0100bitmagie(~Thunderbi@200116b8060b130001a0e879def0d467.dip.versatel-1u1.de) (Quit: bitmagie)
2020-12-20 04:49:17 +0100 <solonarv> ReadP on the other hand tries *both* sides when you use <|>
2020-12-20 04:49:19 +0100 <quantumvatican> Ok I see. This is funny because I was initially using ReadP to parse the first aoc inputs and found its symetric choice operator inconvenient because it would generate a list of all possible alternatives. Now I get to see that is has its uses.
2020-12-20 04:50:05 +0100 <quantumvatican> Thank you very much for the explanation.
2020-12-20 04:51:32 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Excess Flood)
2020-12-20 04:51:39 +0100jedws(~jedws@121.209.189.201)
2020-12-20 04:51:42 +0100 <solonarv> iqubic: ping
2020-12-20 04:51:54 +0100 <iqubic> Hello there.
2020-12-20 04:52:11 +0100 <solonarv> see messages above :)
2020-12-20 04:52:29 +0100 <iqubic> So megaparsec won't work for Day 19 part 2?
2020-12-20 04:52:50 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com)
2020-12-20 04:52:57 +0100 <boxscape> maybe if you write an algorithm to adjust the rules so they don't need unbiased choice...
2020-12-20 04:53:11 +0100 <glguy> You can use parsec, attoparsec, megaparsec in Day19, yes, but you have to account for how <|> works
2020-12-20 04:53:32 +0100justanotheruser(~justanoth@unaffiliated/justanotheruser)
2020-12-20 04:53:36 +0100 <iqubic> How does <|> work for megaparsec?
2020-12-20 04:54:14 +0100 <iqubic> Because I tried that for my input and got an answer that was about 50 lower than the correct answer given by ReadP.
2020-12-20 04:54:14 +0100cr3(~cr3@192-222-143-195.qc.cable.ebox.net) (Quit: leaving)
2020-12-20 04:54:16 +0100 <boxscape> <glguy> in parsec with (a <|> b) as soon as a consumes some input b is discarded. If a succeeds (consuming input or not) b is discarded. if a fails without consuming any input then b is used
2020-12-20 04:55:12 +0100 <iqubic> Right. Is there a way to make that unbiased with try or something?
2020-12-20 04:55:20 +0100 <solonarv> try doesn't help
2020-12-20 04:55:25 +0100 <iqubic> Why not?
2020-12-20 04:55:26 +0100jedws(~jedws@121.209.189.201) (Client Quit)
2020-12-20 04:55:28 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-12-20 04:55:37 +0100 <solonarv> try makes a parser not consume input if it fails
2020-12-20 04:55:52 +0100 <solonarv> but if the parser succeeds, try doesn't do anything
2020-12-20 04:56:07 +0100 <iqubic> And how is that bad?
2020-12-20 04:56:08 +0100 <glguy> I mean... it wastes some memory in that case :)
2020-12-20 04:56:13 +0100 <solonarv> so in both (a <|> b) and (try a <|> b), if a succeeds, b is never tried
2020-12-20 04:56:36 +0100 <solonarv> which means if you have (a <|> b) *> c, and a succeeds, only a *> c is tried; b *> c isn't tried
2020-12-20 04:57:21 +0100justsomeguy(~justsomeg@unaffiliated/--/x-3805311) ()
2020-12-20 04:57:34 +0100 <glguy> So to solve #19 with megaparsec, you just make sure never to generate: (a <|> b) *> c
2020-12-20 04:57:48 +0100 <glguy> you generate: (a *> c) <|> (b *> c)
2020-12-20 04:57:56 +0100 <glguy> (+ try)
2020-12-20 04:58:00 +0100 <iqubic> Right. And that means solving Day 19 with megaparsec is hard.
2020-12-20 04:58:23 +0100 <glguy> Codensity makes it easy to rewrite your parser like that
2020-12-20 04:58:43 +0100 <iqubic> I don't know what codensity is.
2020-12-20 04:59:09 +0100 <solonarv> newtype Codensity m a = Codensity { runCodensity :: forall r. (a -> m r) -> m r }
2020-12-20 04:59:21 +0100 <solonarv> it's a better-behaved cousin of ContT
2020-12-20 04:59:44 +0100 <iqubic> Right.
2020-12-20 04:59:46 +0100 <solonarv> @hackage kan-extensions/docs/Control-Monad-Codensity.html
2020-12-20 04:59:46 +0100 <lambdabot> https://hackage.haskell.org/package/kan-extensions/docs/Control-Monad-Codensity.html
2020-12-20 05:02:03 +0100 <iqubic> glguy: Why did you use ReadP over parsec?
2020-12-20 05:03:13 +0100 <solonarv> the same reason I did, presumably: it doesn't have the above issue
2020-12-20 05:03:32 +0100 <glguy> Yeah, it tries all parses in parallel which seemed good for a grammar that I had no control over
2020-12-20 05:03:50 +0100 <glguy> using parsec/megaparsec/attoparsec requires you to put in a lot of thought in how you structure your parser
2020-12-20 05:03:55 +0100 <solonarv> in ReadP, (a <|> b) *> c *equals* (a *> c) <|> (b *> c) -- up to performance and internal-representation quibbles, perhaps
2020-12-20 05:04:21 +0100 <solonarv> so you don't need to worry about making sure you generate the second one
2020-12-20 05:06:14 +0100Sheilong(uid293653@gateway/web/irccloud.com/x-lvkvgosacwanvten) ()
2020-12-20 05:08:11 +0100 <iqubic> glguy: What kind of structure does your solution produce?
2020-12-20 05:08:32 +0100 <glguy> What do you mean?
2020-12-20 05:10:30 +0100 <iqubic> I mean, if you were to convert your solution from ReadP to Parsec by changing the type signatures, and changing "R.String s" to the parsec version, would it work properly?
2020-12-20 05:11:10 +0100 <glguy> I'd have to do the thing we were just talking about to make it work with megaparsec
2020-12-20 05:11:59 +0100 <iqubic> How hard would that be?
2020-12-20 05:13:38 +0100urek(~urek@2804:7f1:e10a:f71b:1d25:d790:4162:b2ba) (Read error: Connection reset by peer)
2020-12-20 05:13:51 +0100 <glguy> easy if you know what change to make I suppose
2020-12-20 05:15:11 +0100urek(~urek@179.177.35.104.dynamic.adsl.gvt.net.br)
2020-12-20 05:15:19 +0100 <iqubic> I don't know what change to make.
2020-12-20 05:15:28 +0100sparsity(5eae2591@gateway/web/cgi-irc/kiwiirc.com/ip.94.174.37.145) (Quit: Connection closed)
2020-12-20 05:17:59 +0100 <zzz> is there any way to have lookups in constant time with a purely functional data structure?
2020-12-20 05:18:53 +0100 <iqubic> I think HashMaps have constant time lookup.
2020-12-20 05:18:58 +0100 <dsal> solonarv, glguy: thanks for the explanation. I just got out of the shower and it the shower didn't answer this question.
2020-12-20 05:19:59 +0100 <koz_> dsal: The All-Mighty Shower Oracle.
2020-12-20 05:20:09 +0100 <koz_> Soak for 10 years, solve P vs NP.
2020-12-20 05:20:23 +0100 <solonarv> iqubic: no, it's just log-time with a big base
2020-12-20 05:20:31 +0100 <iqubic> Right.
2020-12-20 05:20:55 +0100 <solonarv> which is close enough to constant-time in practrice
2020-12-20 05:21:31 +0100 <koz_> It's like, base-size-of-word-on-machine I believe>
2020-12-20 05:21:32 +0100 <jle`> 💤 constant-time lookups, we have vector
2020-12-20 05:21:35 +0100 <koz_> So like, 64.
2020-12-20 05:21:36 +0100 <jle`> * zzz
2020-12-20 05:21:53 +0100 <koz_> Since HashMap is based on a HAMT IIRC.
2020-12-20 05:22:52 +0100 <zzz> vector is log n according to hackage
2020-12-20 05:23:13 +0100 <jle`> zzz: https://hackage.haskell.org/package/vector-0.12.1.2/docs/Data-Vector.html#v:-33-
2020-12-20 05:23:15 +0100 <jle`> O(1) it says
2020-12-20 05:23:24 +0100 <solonarv> in some sense log-n lookups are the best you can get because of how hardware works
2020-12-20 05:23:37 +0100 <dsal> In some OSes, you can just allocate a single array and just let the OS deal with it.
2020-12-20 05:23:49 +0100 <zzz> wait
2020-12-20 05:24:04 +0100 <solonarv> (or even worse, O(n^1/3))
2020-12-20 05:24:29 +0100 <jle`> log(n) isn't too bad either in many cases since it caps out at log(word size)
2020-12-20 05:24:42 +0100 <boxscape> Vector can only have O(1) lookup because array is built into ghc, right?
2020-12-20 05:24:58 +0100 <solonarv> yes
2020-12-20 05:25:12 +0100 <jle`> doesn't have to necessarily be built-in
2020-12-20 05:25:18 +0100 <jle`> it could be implemented with FFI
2020-12-20 05:25:20 +0100 <solonarv> true, C FFI would also do it
2020-12-20 05:25:22 +0100 <boxscape> okay, fair
2020-12-20 05:25:38 +0100 <solonarv> constant factors might be a bit big though
2020-12-20 05:26:42 +0100quantumvatican(~private@sou45-h01-176-173-75-58.dsl.sta.abo.bbox.fr) (Quit: Lost terminal)
2020-12-20 05:28:05 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:a111:468a:beb5:7acf)
2020-12-20 05:29:16 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
2020-12-20 05:34:46 +0100justan0theruser(~justanoth@unaffiliated/justanotheruser)
2020-12-20 05:36:33 +0100justanotheruser(~justanoth@unaffiliated/justanotheruser) (Ping timeout: 272 seconds)
2020-12-20 05:36:46 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:cca6:5d8:2bb0:556c) (Remote host closed the connection)
2020-12-20 05:37:45 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:2570:8bc6:6048:3a26)
2020-12-20 05:41:23 +0100ericsagn1(~ericsagne@2405:6580:0:5100:b5ee:dfae:b902:5746) (Ping timeout: 260 seconds)
2020-12-20 05:42:17 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:2570:8bc6:6048:3a26) (Ping timeout: 260 seconds)
2020-12-20 05:45:44 +0100vicfred(~vicfred@unaffiliated/vicfred)
2020-12-20 05:48:31 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:2570:8bc6:6048:3a26)
2020-12-20 05:53:02 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:2570:8bc6:6048:3a26) (Ping timeout: 260 seconds)
2020-12-20 05:53:36 +0100ericsagn1(~ericsagne@2405:6580:0:5100:84a9:93da:24c6:b2c7)
2020-12-20 05:54:15 +0100HarveyPwca(~HarveyPwc@c-98-220-98-201.hsd1.il.comcast.net) (Quit: Leaving)
2020-12-20 05:58:48 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-12-20 05:59:39 +0100boxscape(4ff0ba59@gateway/web/cgi-irc/kiwiirc.com/ip.79.240.186.89) (Quit: Connection closed)
2020-12-20 05:59:59 +0100hackagelanguage-c 0.9.0.1 - Analysis and generation of C code https://hackage.haskell.org/package/language-c-0.9.0.1 (jophish)
2020-12-20 06:00:12 +0100argento(~argent0@168.227.97.29)
2020-12-20 06:00:36 +0100 <jophish> every time that notification happens I get all excited thinking that someone is messaging me, but it's just the bot :(
2020-12-20 06:01:17 +0100warperwarpwarp(43a5e3c8@c-67-165-227-200.hsd1.co.comcast.net)
2020-12-20 06:01:58 +0100Tario(~Tario@201.192.165.173) (Ping timeout: 256 seconds)
2020-12-20 06:03:29 +0100 <warperwarpwarp> can anyone recommend a solid http request-parsing response-writing library? I'll have byte streams to read from and write to.
2020-12-20 06:03:52 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
2020-12-20 06:03:53 +0100 <warperwarpwarp> my needs are extraordinarily few
2020-12-20 06:04:32 +0100 <jophish> I tend to reach to servant for that kind of thing
2020-12-20 06:06:06 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Ping timeout: 256 seconds)
2020-12-20 06:08:30 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:2570:8bc6:6048:3a26)
2020-12-20 06:09:00 +0100 <warperwarpwarp> Ok, I'll look into that. What else I was considering was just parsing myself since I only need CONNECT and no bodies, and also somehow taking the Socket back from Warp when I recognize the right method.
2020-12-20 06:09:29 +0100solonarv(~solonarv@adijon-656-1-25-229.w90-13.abo.wanadoo.fr) (Ping timeout: 268 seconds)
2020-12-20 06:09:30 +0100 <warperwarpwarp> Though Warp it's not obvious to me how I'd correlate requests to client, and client to socket, except doing it myself around Warp, at which point why use warp.
2020-12-20 06:13:12 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:2570:8bc6:6048:3a26) (Ping timeout: 260 seconds)
2020-12-20 06:19:34 +0100ADG1089_(~adg1089@171.76.183.207) (Ping timeout: 246 seconds)
2020-12-20 06:21:39 +0100ADG1089_(~adg1089@171.76.183.207)
2020-12-20 06:23:36 +0100Lycurgus(~niemand@cpe-45-46-137-210.buffalo.res.rr.com)
2020-12-20 06:27:19 +0100ADG1089(~aditya@122.163.166.13)
2020-12-20 06:28:56 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:2570:8bc6:6048:3a26)
2020-12-20 06:33:37 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:2570:8bc6:6048:3a26) (Ping timeout: 260 seconds)
2020-12-20 06:36:41 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-12-20 06:36:56 +0100 <ADG1089> how do we solve this "warning: haddock-html" problem on ghc-pkg check? I tried cabal update after removing .cabal directory
2020-12-20 06:39:09 +0100elliott__(~elliott@pool-108-51-101-42.washdc.fios.verizon.net) (Ping timeout: 260 seconds)
2020-12-20 06:53:48 +0100rembo10(~rembo10@wally.codeshy.com) (Quit: ZNC 1.8.1 - https://znc.in)
2020-12-20 06:54:49 +0100ADG1089(~aditya@122.163.166.13) (Quit: Konversation terminated!)
2020-12-20 06:55:18 +0100Lycurgusgenerally ignores warnings
2020-12-20 06:56:04 +0100ADG1089_(~adg1089@171.76.183.207) (Ping timeout: 260 seconds)
2020-12-20 06:56:41 +0100warperwarpwarp(43a5e3c8@c-67-165-227-200.hsd1.co.comcast.net) (Remote host closed the connection)
2020-12-20 06:56:47 +0100ADG1089_(~aditya@122.163.166.13)
2020-12-20 06:57:57 +0100rembo10(~rembo10@wally.codeshy.com)
2020-12-20 06:58:05 +0100Lycurgus(~niemand@cpe-45-46-137-210.buffalo.res.rr.com) (Quit: Exeunt)
2020-12-20 07:04:49 +0100boxscape(4ff0ba59@gateway/web/cgi-irc/kiwiirc.com/ip.79.240.186.89)
2020-12-20 07:07:31 +0100hololeap(~hololeap@unaffiliated/hololeap) (Ping timeout: 246 seconds)
2020-12-20 07:10:34 +0100 <ADG1089_> pointfree does not install with ghc-8.10.2
2020-12-20 07:10:36 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
2020-12-20 07:10:41 +0100 <ADG1089_> should i switch to lts release?
2020-12-20 07:10:44 +0100 <ADG1089_> (cabal)
2020-12-20 07:10:55 +0100urodna(~urodna@unaffiliated/urodna) (Quit: urodna)
2020-12-20 07:12:59 +0100boxscape(4ff0ba59@gateway/web/cgi-irc/kiwiirc.com/ip.79.240.186.89) (Quit: Connection closed)
2020-12-20 07:18:11 +0100ADG1089(~aditya@122.163.166.13)
2020-12-20 07:18:31 +0100 <koz_> ADG1089_: What does cabal have to do with this?
2020-12-20 07:18:33 +0100ADG1089_(~aditya@122.163.166.13) (Ping timeout: 268 seconds)
2020-12-20 07:18:42 +0100 <koz_> If pointfree doesn't build with 8.10.2, try building with 8.8.4.
2020-12-20 07:22:01 +0100 <ADG1089> koz_: something like `cabal install pointfree --resolver ghc-8.8.4`?
2020-12-20 07:22:11 +0100 <koz_> --resolver is a stack thing.
2020-12-20 07:22:14 +0100 <koz_> Are you using stack?
2020-12-20 07:22:22 +0100roconnor(~roconnor@host-45-78-199-13.dyn.295.ca)
2020-12-20 07:22:25 +0100cole-h(~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) (Ping timeout: 264 seconds)
2020-12-20 07:22:37 +0100 <ADG1089> no i thought if cabal has some similar option
2020-12-20 07:22:50 +0100 <ADG1089> i think i will have to switch ghc from ghcup
2020-12-20 07:23:02 +0100 <koz_> ADG1089: If you have GHC installed from ghcup, you can do
2020-12-20 07:23:12 +0100 <koz_> cabal install -w ghc-8.8.4 pointfree
2020-12-20 07:23:28 +0100 <koz_> Assuming you have ghc-8.8.4 installed and your path is set up properly for ghcup.
2020-12-20 07:24:38 +0100 <ADG1089> wait i installed ghc from pacman for xmonad, will that interfere
2020-12-20 07:25:05 +0100 <koz_> If you use -w like I did, it shouldn't.
2020-12-20 07:25:15 +0100 <koz_> I am unsure how Arch names its GHC, because I don't use it.
2020-12-20 07:25:17 +0100 <ADG1089> koz_: thanks
2020-12-20 07:25:19 +0100 <koz_> (Arch's GHC that is)
2020-12-20 07:25:29 +0100hololeap(~hololeap@unaffiliated/hololeap)
2020-12-20 07:33:10 +0100 <ADG1089> is there a traverse operation for this: `\x -> f y1 x >> f y2 x >> f y3 x >> ... >> f yn x` maybe traverse_ or mapM_
2020-12-20 07:36:49 +0100drbean(~drbean@TC210-63-209-92.static.apol.com.tw)
2020-12-20 07:38:19 +0100mirrorbird(~psutcliff@2a00:801:447:b1bf:a43d:1573:86a9:1f86)
2020-12-20 07:38:36 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:a111:468a:beb5:7acf) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-12-20 07:38:42 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-12-20 07:41:34 +0100 <iqubic> traverse_ (flip f) xs is what you want.
2020-12-20 07:42:38 +0100 <iqubic> Well, actually you want "traverse_ (flip f x) xs"
2020-12-20 07:42:54 +0100 <ADG1089> @t traverse_ (flip f)
2020-12-20 07:42:55 +0100 <lambdabot> Maybe you meant: tell thank you thanks thesaurus thx tic-tac-toe ticker time todo todo-add todo-delete type v @ ? .
2020-12-20 07:43:21 +0100 <Rembane> ADG1089: Try :t instead.
2020-12-20 07:43:29 +0100 <Rembane> :t traverse_ (flip f)
2020-12-20 07:43:29 +0100 <ADG1089> :t traverse_ (flip f x)
2020-12-20 07:43:30 +0100 <lambdabot> error:
2020-12-20 07:43:30 +0100 <lambdabot> • Could not deduce (FromExpr b0) arising from a use of ‘f’
2020-12-20 07:43:30 +0100 <lambdabot> from the context: (Foldable t, Show a, Show b)
2020-12-20 07:43:31 +0100 <lambdabot> (Foldable t, Applicative f, Show a, FromExpr (f b)) => t a -> f ()
2020-12-20 07:43:34 +0100 <Rembane> :D
2020-12-20 07:43:36 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
2020-12-20 07:43:43 +0100 <ADG1089> :t let f :: a -> b -> m c in traverse_ (flip f x)
2020-12-20 07:43:44 +0100 <lambdabot> error:
2020-12-20 07:43:44 +0100 <lambdabot> The type signature for ‘f’ lacks an accompanying binding
2020-12-20 07:44:01 +0100 <ADG1089> :t traverse_ (flip hPutStrLn x)
2020-12-20 07:44:03 +0100 <lambdabot> error:
2020-12-20 07:44:03 +0100 <lambdabot> • Variable not in scope: hPutStrLn :: a -> Expr -> f b0
2020-12-20 07:44:03 +0100 <lambdabot> • Perhaps you meant one of these:
2020-12-20 07:44:08 +0100 <ADG1089> zzz
2020-12-20 07:44:27 +0100ericsagn1(~ericsagne@2405:6580:0:5100:84a9:93da:24c6:b2c7) (Ping timeout: 268 seconds)
2020-12-20 07:45:12 +0100 <Rembane> :t \f -> traverse_ (flip f) -- ADG1089
2020-12-20 07:45:14 +0100 <lambdabot> Foldable t => (a -> b1 -> b2) -> t b1 -> a -> ()
2020-12-20 07:47:48 +0100 <ADG1089> :t \x -> \ys -> \f -> traverse_ f ys x
2020-12-20 07:47:50 +0100 <lambdabot> Foldable t1 => t2 -> t1 a -> (a -> t2 -> b) -> ()
2020-12-20 07:48:11 +0100 <ADG1089> Rembane: thanks!
2020-12-20 07:48:16 +0100hexfive(~hexfive@50-47-142-195.evrt.wa.frontiernet.net)
2020-12-20 07:48:30 +0100 <Rembane> ADG1089: np!
2020-12-20 07:56:20 +0100ericsagn1(~ericsagne@2405:6580:0:5100:e741:8684:6690:73be)
2020-12-20 07:58:12 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 260 seconds)
2020-12-20 07:58:23 +0100cfricke(~cfricke@unaffiliated/cfricke)
2020-12-20 07:59:04 +0100geowiesnot(~user@87-89-181-157.abo.bbox.fr)
2020-12-20 08:00:32 +0100coot(~coot@37.30.50.101.nat.umts.dynamic.t-mobile.pl)
2020-12-20 08:00:46 +0100takuan(~takuan@178-116-218-225.access.telenet.be)
2020-12-20 08:00:55 +0100sgibber2018(~arch-gibb@208.85.237.137) (Ping timeout: 256 seconds)
2020-12-20 08:04:20 +0100lordyod(~lordyod@c-67-169-144-132.hsd1.ca.comcast.net) (Quit: The Lounge - https://thelounge.chat)
2020-12-20 08:05:56 +0100 <whataday> parse "let x = 1; let y=2; print (x+y)" , how to store x and y? IORef?
2020-12-20 08:06:09 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com)
2020-12-20 08:08:56 +0100 <Rembane> whataday: give us more context. What do you want to do?
2020-12-20 08:09:21 +0100 <whataday> a very simple dsl
2020-12-20 08:10:49 +0100 <sshine> could you be more specific?
2020-12-20 08:11:21 +0100 <Rembane> I'm gonna do some guessing... having a map between variable names and values sounds like what you need, you can send that around as an argument to your functions or put everything in a State monad.
2020-12-20 08:11:54 +0100 <sshine> whataday, are you building a parser and evaluator of a DSL like the one above?
2020-12-20 08:12:01 +0100vicfred(~vicfred@unaffiliated/vicfred) (Quit: Leaving)
2020-12-20 08:12:44 +0100 <whataday> parse "let a=b" to Value a b, parse "a b " to Function a b, data DSL = Value a b| Function a b
2020-12-20 08:12:54 +0100 <whataday> sshine yes
2020-12-20 08:14:05 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-12-20 08:14:27 +0100 <sshine> I'd go with a State monad, too. or if you like something simpler, something like: eval :: YourAST -> Map VarName Value -> IO ()
2020-12-20 08:14:58 +0100Amirali_(~Amirali@51.194.80.91) (Ping timeout: 265 seconds)
2020-12-20 08:16:40 +0100sgibber2018(~arch-gibb@208.85.237.137)
2020-12-20 08:17:44 +0100 <sshine> that way 'eval' can call itself and every time it sees a "let x = 1;" it can update its variable table, and every time it sees an "x", it kan look it up.
2020-12-20 08:18:45 +0100 <zzz> i remember watching a talk on youtube about probably monads with an elegant example of parenthesis matching. does anyone has an idea of which one it could be? this was years ago
2020-12-20 08:19:51 +0100 <Rembane> zzz: Do you have any more information about the talk? :)
2020-12-20 08:21:36 +0100fengh(~haskeller@ip72-205-40-121.dc.dc.cox.net) (Ping timeout: 240 seconds)
2020-12-20 08:23:02 +0100 <zzz> unfortunately no. aside from the fact that it was a male presenter and that the solution to checking for balanced parens used a class and some type level trick... i think i remember seeing <>
2020-12-20 08:23:37 +0100 <zzz> this was years ago when i was still trying to understand what a monad was
2020-12-20 08:23:55 +0100 <sshine> zzz, was it a tutorial? a tech talk?
2020-12-20 08:24:05 +0100 <zzz> tech talk i think
2020-12-20 08:24:12 +0100mirrorbird(~psutcliff@2a00:801:447:b1bf:a43d:1573:86a9:1f86) (Quit: Leaving)
2020-12-20 08:24:36 +0100 <zzz> white slides, actually i think it had some live coding
2020-12-20 08:24:38 +0100 <zzz> not sure...
2020-12-20 08:25:05 +0100 <sshine> > "Stardate " <> show (12 * 365) <> ".6: I'm still trying to find out what a Monad is."
2020-12-20 08:25:08 +0100 <lambdabot> "Stardate 4380.6: I'm still trying to find out what a Monad is."
2020-12-20 08:26:04 +0100tomku(~tomku@unaffiliated/tomku) (Ping timeout: 256 seconds)
2020-12-20 08:26:08 +0100 <zzz> :p
2020-12-20 08:26:20 +0100 <sshine> zzz, good luck finding it. :)
2020-12-20 08:26:34 +0100 <zzz> thanks
2020-12-20 08:26:36 +0100 <sshine> if I see a guy with parentheses on some white slides, I'll let you know. ;-D
2020-12-20 08:26:53 +0100lordyod(~lordyod@c-67-169-144-132.hsd1.ca.comcast.net)
2020-12-20 08:26:56 +0100 <zzz> sshine: a monad is just a monoid in the category of endofunctors
2020-12-20 08:27:02 +0100 <zzz> what's the problem?
2020-12-20 08:27:25 +0100tomku(~tomku@unaffiliated/tomku)
2020-12-20 08:27:49 +0100 <Rembane> ^^
2020-12-20 08:27:54 +0100 <sshine> (this isn't it, but I thought it was funny to mention it here: Perry Metzger - Emacs: The Editor for the Next Forty Years - https://www.youtube.com/watch?v=KYcY7CcS7nc -- it qualifies for all your criteria, and considering the subject of elisp, I'd say *very* parentheses-related!)
2020-12-20 08:30:13 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2020-12-20 08:35:01 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 264 seconds)
2020-12-20 08:37:59 +0100leolanger(67742f78@103.116.47.120)
2020-12-20 08:39:00 +0100leolanger(67742f78@103.116.47.120) (Remote host closed the connection)
2020-12-20 08:39:55 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:2570:8bc6:6048:3a26)
2020-12-20 08:40:35 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
2020-12-20 08:40:43 +0100gt_(~gt@96-19-96-19-8-130.cpe.sparklight.net)
2020-12-20 08:40:44 +0100 <int-e> @quote endofunctors.*bad
2020-12-20 08:40:45 +0100 <lambdabot> dmwit says: analogies are endofunctors in the category of bad explanations
2020-12-20 08:42:20 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-12-20 08:42:38 +0100 <koz_> Something something burritos, something something monads, something something turtles, something something all the way down.
2020-12-20 08:45:08 +0100 <Rembane> And they all leak!
2020-12-20 08:45:18 +0100 <Rembane> Especially burritos if stuffed with good stuff
2020-12-20 08:45:32 +0100jamm(~jamm@unaffiliated/jamm)
2020-12-20 08:46:22 +0100 <koz_> The law of leaky burritos.
2020-12-20 08:46:37 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:2570:8bc6:6048:3a26) (Ping timeout: 260 seconds)
2020-12-20 08:48:00 +0100ADG1089__(~aditya@122.163.166.13)
2020-12-20 08:48:04 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
2020-12-20 08:49:12 +0100ADG1089(~aditya@122.163.166.13) (Ping timeout: 268 seconds)
2020-12-20 08:53:26 +0100danvet(~Daniel@2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa)
2020-12-20 08:58:35 +0100gt_(~gt@96-19-96-19-8-130.cpe.sparklight.net) ("Leaving")
2020-12-20 08:59:15 +0100polyrain(~polyrain@2001:8003:e501:6901:1500:cd8a:5a55:1c9c)
2020-12-20 09:00:13 +0100machinedgod(~machinedg@135-23-192-217.cpe.pppoe.ca) (Ping timeout: 264 seconds)
2020-12-20 09:01:55 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:2570:8bc6:6048:3a26)
2020-12-20 09:02:15 +0100incertia(~incertia@d4-50-26-103.nap.wideopenwest.com) (Quit: ZNC 1.7.5 - https://znc.in)
2020-12-20 09:03:16 +0100danso(~dan@69-165-210-185.cable.teksavvy.com) (Quit: WeeChat 2.9)
2020-12-20 09:03:35 +0100incertia(~incertia@d4-50-26-103.nap.wideopenwest.com)
2020-12-20 09:04:39 +0100 <sshine> wasn't there also one about endofunctors between analogies?
2020-12-20 09:05:00 +0100jamm(~jamm@unaffiliated/jamm) (Remote host closed the connection)
2020-12-20 09:05:52 +0100 <sshine> https://mathoverflow.net/questions/13832/analogies-between-analogies
2020-12-20 09:05:56 +0100 <siraben> When reading Criterion reports, which numbers matter?
2020-12-20 09:06:05 +0100 <sshine> siraben, the low ones!
2020-12-20 09:06:06 +0100 <siraben> The time or the mean field?
2020-12-20 09:06:16 +0100 <siraben> mean and std dev right?
2020-12-20 09:06:43 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:2570:8bc6:6048:3a26) (Ping timeout: 260 seconds)
2020-12-20 09:06:46 +0100 <zzz> sshine: found it (kind of)
2020-12-20 09:07:36 +0100 <zzz> it's a section on various Edward Kmett talks
2020-12-20 09:07:52 +0100 <sshine> zzz, cool.
2020-12-20 09:07:56 +0100 <zzz> on monoidal parsing
2020-12-20 09:08:12 +0100 <sshine> hm.
2020-12-20 09:10:08 +0100kostic_(~kostic@51.194.80.91)
2020-12-20 09:10:28 +0100 <sshine> siraben, I shouldn't be answering, because I only benchmarked toy code for getting to know primitives, and not production code. but I just went with 'mean estimate', assuming the stddev was low. I haven't tried to benchmark something with a high stddev unless I was accidentally abusing the CPU for other purposes simultaneously.
2020-12-20 09:11:48 +0100 <sshine> siraben, so basically just what's decipherable in the graphs: compare means between two solutions, unless the stddev appears to be too high.
2020-12-20 09:12:35 +0100jamm(~jamm@unaffiliated/jamm)
2020-12-20 09:12:49 +0100grdvnl(~gdrvnl@cpe-76-94-36-134.socal.res.rr.com) (Ping timeout: 246 seconds)
2020-12-20 09:13:40 +0100 <siraben> sshine: I see, thanks!
2020-12-20 09:13:44 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2020-12-20 09:14:59 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-12-20 09:15:13 +0100 <sshine> I gave feedback on Exercism and it ocurred to me I didn't really know how performant the different solutions were. I learned that often high-level solutions in Haskell are actually faster. Haskell is still the only language I know where abstractions often have a negative cost footprint. :-D
2020-12-20 09:15:37 +0100grdvnl(~gdrvnl@cpe-76-94-36-134.socal.res.rr.com)
2020-12-20 09:16:59 +0100 <siraben> sshine: i've been benchmarking all my advent of code solutions this year: https://github.com/siraben/haoc-2020
2020-12-20 09:17:07 +0100 <sshine> ha, cool.
2020-12-20 09:18:07 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 260 seconds)
2020-12-20 09:18:18 +0100howdoi(uid224@gateway/web/irccloud.com/x-flzdypyjqdvdjthv) (Quit: Connection closed for inactivity)
2020-12-20 09:18:22 +0100 <sshine> I don't know if I'd be able to use a Criterion report for anything useful if I didn't either have two functions to compare against each other, or some idea of a performance bottleneck...
2020-12-20 09:18:25 +0100 <siraben> i have some notes on performance in the readme, it was quite eye opening to learn what is fast and what is not
2020-12-20 09:18:36 +0100 <sshine> yes!
2020-12-20 09:18:41 +0100 <siraben> maybe later I'll look into memory usage as well
2020-12-20 09:18:51 +0100 <sshine> yeah, memory use is probably where I learned the most.
2020-12-20 09:19:26 +0100heatsink(~heatsink@2600:1700:bef1:5e10:404:9305:1542:3c1a) (Remote host closed the connection)
2020-12-20 09:19:34 +0100 <siraben> But as a rough guide; foldl' is great, Int over Integer, bang patterns and tail recursion, lists are very slow for indexing/as a poor map, specialized structures (IntMap, IntSet) are fast
2020-12-20 09:19:35 +0100 <sshine> I had a short phase of trying to add !s everywhere. ;-D
2020-12-20 09:19:45 +0100 <siraben> and also, bit-level hacking words :)
2020-12-20 09:19:52 +0100 <siraben> to avoid conditionals
2020-12-20 09:19:56 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
2020-12-20 09:20:06 +0100 <sshine> Data.Bits is pretty nice, yes.
2020-12-20 09:20:23 +0100 <siraben> oh and String is very slow, haha
2020-12-20 09:22:13 +0100 <sshine> when I tried to tweak my Exercism solutions I found that I could often avoid explicit bangs in favor of strict library combinators and simply not use lists. ;-)
2020-12-20 09:22:19 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:2570:8bc6:6048:3a26)
2020-12-20 09:22:36 +0100 <sshine> it seems they get GC'ed very late.
2020-12-20 09:23:27 +0100theorbtwo(~theorb@cpc81822-swin19-2-0-cust3.3-1.cable.virginm.net) (Remote host closed the connection)
2020-12-20 09:23:36 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:2570:8bc6:6048:3a26) (Remote host closed the connection)
2020-12-20 09:23:42 +0100theorbtwo(~theorb@cpc81822-swin19-2-0-cust3.3-1.cable.virginm.net)
2020-12-20 09:24:12 +0100christo(~chris@81.96.113.213)
2020-12-20 09:28:46 +0100superstar64(6ccefa7c@108-206-250-124.lightspeed.miamfl.sbcglobal.net)
2020-12-20 09:29:04 +0100 <superstar64> how do i decided the type application order for my class methods?
2020-12-20 09:30:19 +0100 <sshine> superstar64, what does that mean?
2020-12-20 09:30:47 +0100dibblego(~dibblego@haskell/developer/dibblego) (Ping timeout: 260 seconds)
2020-12-20 09:31:26 +0100 <superstar64> for my typeclass's method, i want to pick the order that type variables are specified with `@`
2020-12-20 09:31:39 +0100asheshambasta(~user@ptr-e1lysaxt4bg7tmaahx1.18120a2.ip6.access.telenet.be)
2020-12-20 09:31:56 +0100urek(~urek@179.177.35.104.dynamic.adsl.gvt.net.br) (Ping timeout: 240 seconds)
2020-12-20 09:32:25 +0100 <superstar64> putting an explicit forall doesn't seem to work with methods
2020-12-20 09:33:22 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:2570:8bc6:6048:3a26)
2020-12-20 09:33:49 +0100 <sshine> superstar64, I thought the order was bound to be the order that the type variables appear in the signature.
2020-12-20 09:34:02 +0100 <superstar64> yea, but i don't want that order
2020-12-20 09:34:21 +0100 <superstar64> and i can't put an explicit forall
2020-12-20 09:35:40 +0100 <suzu_> could you paste some code?
2020-12-20 09:35:51 +0100 <suzu_> not in the channel directly but on pastebin or github/etc and link it
2020-12-20 09:36:08 +0100wonko7(~wonko7@69.75.150.77.rev.sfr.net)
2020-12-20 09:37:52 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Remote host closed the connection)
2020-12-20 09:38:13 +0100 <superstar64> `class CheckType m p κ l s where { checkType :: p -> κ -> m (Type l s κ) }` how do i specify l and s first?
2020-12-20 09:38:29 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:2570:8bc6:6048:3a26) (Ping timeout: 272 seconds)
2020-12-20 09:40:48 +0100 <idnar> superstar64: I don't think you can, but you can do `checkType' :: …; checkType' = checkType`
2020-12-20 09:40:56 +0100 <superstar64> eww
2020-12-20 09:42:05 +0100 <zzz> sshine: well I just spent the last hour lost in mathoveflow reading analogies between analogies and famous mathematicians' quotes
2020-12-20 09:43:05 +0100 <superstar64> well, i guess my code base is going to need more `'` functions i gues
2020-12-20 09:44:11 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:2570:8bc6:6048:3a26)
2020-12-20 09:45:55 +0100shf(~sheaf@2a01:cb19:80cc:7e00:c5b9:16be:dec9:44c5)
2020-12-20 09:46:37 +0100 <ADG1089__> :t Window -> String
2020-12-20 09:46:38 +0100 <lambdabot> error: parse error on input ‘->’
2020-12-20 09:46:50 +0100 <ADG1089__> @h Window -> String
2020-12-20 09:46:50 +0100 <lambdabot> Maybe you meant: hackage haskellers help hitchcock hoogle hoogle+ v @ ? .
2020-12-20 09:47:19 +0100 <koz_> @hoogle Window -> String
2020-12-20 09:47:20 +0100 <lambdabot> Debian.Pretty ppShow :: Pretty (PP a) => a -> String
2020-12-20 09:47:20 +0100 <lambdabot> Prelude show :: Show a => a -> String
2020-12-20 09:47:20 +0100 <lambdabot> Text.Show show :: Show a => a -> String
2020-12-20 09:47:54 +0100dibblego(~dibblego@122-199-1-30.ip4.superloop.com)
2020-12-20 09:47:54 +0100dibblego(~dibblego@122-199-1-30.ip4.superloop.com) (Changing host)
2020-12-20 09:47:54 +0100dibblego(~dibblego@haskell/developer/dibblego)
2020-12-20 09:48:00 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-12-20 09:48:18 +0100argento(~argent0@168.227.97.29) (Quit: leaving)
2020-12-20 09:48:36 +0100 <ADG1089__> :t \windows -> gets $ fmap getName . winnows
2020-12-20 09:48:38 +0100 <lambdabot> error:
2020-12-20 09:48:38 +0100 <lambdabot> Variable not in scope: getName :: a0 -> b
2020-12-20 09:49:01 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:2570:8bc6:6048:3a26) (Ping timeout: 268 seconds)
2020-12-20 09:50:47 +0100polyrain(~polyrain@2001:8003:e501:6901:1500:cd8a:5a55:1c9c) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-12-20 09:51:17 +0100polyrain(~polyrain@2001:8003:e501:6901:1500:cd8a:5a55:1c9c)
2020-12-20 09:51:34 +0100polyrain(~polyrain@2001:8003:e501:6901:1500:cd8a:5a55:1c9c) (Client Quit)
2020-12-20 09:52:14 +0100geowiesnot(~user@87-89-181-157.abo.bbox.fr) (Ping timeout: 260 seconds)
2020-12-20 09:56:18 +0100Tene(~tene@poipu/supporter/slacker/tene) (Ping timeout: 260 seconds)
2020-12-20 09:56:25 +0100ByronJohnson(~bairyn@unaffiliated/bob0) (Ping timeout: 268 seconds)
2020-12-20 09:58:31 +0100SquarismPowerOf2
2020-12-20 10:00:06 +0100zerstroyer[m](zerstroyer@gateway/shell/matrix.org/x-sagppnyewsjacbwk) (Quit: Idle for 30+ days)
2020-12-20 10:00:07 +0100alephu5[m](alephu5mat@gateway/shell/matrix.org/x-pqqyohtvhpdzzjvu) (Quit: Idle for 30+ days)
2020-12-20 10:00:08 +0100drbean(~drbean@TC210-63-209-92.static.apol.com.tw) (Ping timeout: 272 seconds)
2020-12-20 10:02:42 +0100Tene(~tene@mail.digitalkingdom.org)
2020-12-20 10:02:42 +0100Tene(~tene@mail.digitalkingdom.org) (Changing host)
2020-12-20 10:02:42 +0100Tene(~tene@poipu/supporter/slacker/tene)
2020-12-20 10:02:50 +0100ByronJohnson(~bairyn@unaffiliated/bob0)
2020-12-20 10:05:05 +0100 <sshine> zzz :o
2020-12-20 10:08:13 +0100xwvvvvwx-(xwvvvvwx@gateway/vpn/mullvad/xwvvvvwx)
2020-12-20 10:10:29 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net)
2020-12-20 10:10:58 +0100wz1000(~wz1000@static.11.113.47.78.clients.your-server.de) (Ping timeout: 265 seconds)
2020-12-20 10:11:07 +0100xwvvvvwx-xwvvvvwx
2020-12-20 10:15:47 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:2570:8bc6:6048:3a26)
2020-12-20 10:19:23 +0100zv(~zv@unaffiliated/zv)
2020-12-20 10:19:43 +0100philopso1(~caecilius@gateway/tor-sasl/caecilius) (Ping timeout: 240 seconds)
2020-12-20 10:19:55 +0100heatsink(~heatsink@2600:1700:bef1:5e10:404:9305:1542:3c1a)
2020-12-20 10:20:26 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:2570:8bc6:6048:3a26) (Ping timeout: 264 seconds)
2020-12-20 10:22:34 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
2020-12-20 10:24:24 +0100 <aplainzetakind> Is there a sort of "for all n, here's an unsigned n bit type" library?
2020-12-20 10:24:37 +0100heatsink(~heatsink@2600:1700:bef1:5e10:404:9305:1542:3c1a) (Ping timeout: 260 seconds)
2020-12-20 10:26:54 +0100ADG1089__(~aditya@122.163.166.13) (Remote host closed the connection)
2020-12-20 10:31:26 +0100 <superstar64> how do i enable type application in ormolu?
2020-12-20 10:32:12 +0100 <superstar64> `-o TypeApplications` doesn't seem to work
2020-12-20 10:32:54 +0100 <superstar64> wait nvm, i got it, it's `-o -XTypeApplications`
2020-12-20 10:35:19 +0100ADG1089(~aditya@122.163.166.13)
2020-12-20 10:36:05 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:2570:8bc6:6048:3a26)
2020-12-20 10:37:44 +0100shf(~sheaf@2a01:cb19:80cc:7e00:c5b9:16be:dec9:44c5) (Read error: Connection reset by peer)
2020-12-20 10:39:05 +0100ulidtko|k(~ulidtko@193.111.48.79)
2020-12-20 10:40:57 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:2570:8bc6:6048:3a26) (Ping timeout: 260 seconds)
2020-12-20 10:41:00 +0100hackagesimple-cmd 0.2.3 - Simple String-based process commands https://hackage.haskell.org/package/simple-cmd-0.2.3 (JensPetersen)
2020-12-20 10:41:54 +0100ulidtko(~ulidtko@194.54.80.38) (Ping timeout: 265 seconds)
2020-12-20 10:42:58 +0100pyrrhus(~pyrrhus@edu76FE.kent.ac.uk)
2020-12-20 10:45:47 +0100toorevitimirp(~tooreviti@117.182.182.252) (Remote host closed the connection)
2020-12-20 10:46:35 +0100wz1000(~wz1000@static.11.113.47.78.clients.your-server.de)
2020-12-20 10:48:33 +0100cheater(~user@unaffiliated/cheater)
2020-12-20 10:49:16 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-12-20 10:49:37 +0100Tuplanolla(~Tuplanoll@91-159-68-239.elisa-laajakaista.fi)
2020-12-20 10:50:15 +0100hnOsmium0001(uid453710@gateway/web/irccloud.com/x-gbnbzzrwsbzvqykf) (Quit: Connection closed for inactivity)
2020-12-20 10:51:23 +0100pyrrhus(~pyrrhus@edu76FE.kent.ac.uk) (Quit: Leaving)
2020-12-20 10:53:08 +0100Varis(~Tadas@unaffiliated/varis) (Remote host closed the connection)
2020-12-20 10:53:47 +0100zv(~zv@unaffiliated/zv) (Ping timeout: 260 seconds)
2020-12-20 10:54:01 +0100Mikagami(~MOSCOS@122.54.107.175) (Remote host closed the connection)
2020-12-20 10:54:02 +0100cheater(~user@unaffiliated/cheater) (Quit: (BitchX) Elvis has left the building)
2020-12-20 10:54:19 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 246 seconds)
2020-12-20 10:54:28 +0100Mikagami(~MOSCOS@122.54.107.175)
2020-12-20 10:56:25 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:2570:8bc6:6048:3a26)
2020-12-20 10:56:27 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Remote host closed the connection)
2020-12-20 10:56:29 +0100Varis(~Tadas@unaffiliated/varis)
2020-12-20 10:56:40 +0100cheater(~user@unaffiliated/cheater)
2020-12-20 10:59:09 +0100superstar64(6ccefa7c@108-206-250-124.lightspeed.miamfl.sbcglobal.net) (Remote host closed the connection)
2020-12-20 11:01:03 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:2570:8bc6:6048:3a26) (Ping timeout: 260 seconds)
2020-12-20 11:11:28 +0100shf(~sheaf@2a01:cb19:80cc:7e00:c5b9:16be:dec9:44c5)
2020-12-20 11:12:16 +0100olligobber(olligobber@gateway/vpn/privateinternetaccess/olligobber) (Ping timeout: 268 seconds)
2020-12-20 11:16:44 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:2570:8bc6:6048:3a26)
2020-12-20 11:16:55 +0100kritzefitz(~kritzefit@212.86.56.80)
2020-12-20 11:18:19 +0100neiluj(~jco@91-167-203-101.subs.proxad.net)
2020-12-20 11:18:44 +0100neiluj(~jco@91-167-203-101.subs.proxad.net) (Changing host)
2020-12-20 11:18:44 +0100neiluj(~jco@unaffiliated/neiluj)
2020-12-20 11:20:34 +0100hiroaki(~hiroaki@ip4d168e73.dynamic.kabel-deutschland.de)
2020-12-20 11:21:12 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:2570:8bc6:6048:3a26) (Ping timeout: 260 seconds)
2020-12-20 11:21:17 +0100heatsink(~heatsink@2600:1700:bef1:5e10:404:9305:1542:3c1a)
2020-12-20 11:25:52 +0100heatsink(~heatsink@2600:1700:bef1:5e10:404:9305:1542:3c1a) (Ping timeout: 260 seconds)
2020-12-20 11:27:54 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-12-20 11:28:07 +0100knupfer(~Thunderbi@200116b82cf0a300fc9619fffe7d5c02.dip.versatel-1u1.de)
2020-12-20 11:28:08 +0100knupfer(~Thunderbi@200116b82cf0a300fc9619fffe7d5c02.dip.versatel-1u1.de) (Client Quit)
2020-12-20 11:28:21 +0100knupfer(~Thunderbi@mue-88-130-61-068.dsl.tropolys.de)
2020-12-20 11:31:34 +0100Sgeo(~Sgeo@ool-18b98aa4.dyn.optonline.net) (Read error: Connection reset by peer)
2020-12-20 11:32:45 +0100knupfer(~Thunderbi@mue-88-130-61-068.dsl.tropolys.de) (Ping timeout: 240 seconds)
2020-12-20 11:35:39 +0100asheshambasta(~user@ptr-e1lysaxt4bg7tmaahx1.18120a2.ip6.access.telenet.be) (Ping timeout: 272 seconds)
2020-12-20 11:35:50 +0100xcmw(~textual@2603-6011-2200-f103-cdbc-9ec6-8319-9dc9.res6.spectrum.com) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-12-20 11:41:19 +0100 <joel135> aplainzetakind: https://hackage.haskell.org/package/accelerate-bignum-0.3.0.0/docs/Data-Array-Accelerate-Data-BigW…
2020-12-20 11:42:04 +0100Gurkenglas_(~Gurkengla@unaffiliated/gurkenglas)
2020-12-20 11:59:08 +0100jophish(~jophish@li1766-207.members.linode.com) (Ping timeout: 256 seconds)
2020-12-20 12:00:15 +0100Achylles(~Achylles@191.254.130.93)
2020-12-20 12:01:35 +0100hidedagger(~nate@unaffiliated/hidedagger) (Quit: WeeChat 2.9)
2020-12-20 12:02:02 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
2020-12-20 12:03:18 +0100Janni(~jan@134.3.46.18)
2020-12-20 12:04:31 +0100 <Janni> Hello there! This is a great day. After multiple years of abstinence I'm getting back to using Haskell. As the ecosystem has changed quite a bit, however, I'm having trouble getting off the ground.
2020-12-20 12:04:51 +0100jamm(~jamm@unaffiliated/jamm) (Remote host closed the connection)
2020-12-20 12:05:29 +0100 <Janni> So, I'll be asking a few stack-related question here, if that's not off-topic.
2020-12-20 12:06:03 +0100nowhere_man(~pierre@2a01:e0a:3c7:60d0:e88f:4e24:f6a7:f155) (Ping timeout: 272 seconds)
2020-12-20 12:07:45 +0100 <Janni> One of my problem's is the co-existence of my system GHC and the stack GHC installation. If I run for instance ghcide, its telling me that "ghcide compiled against GHC 8.10.2 but currently using 8.4.4".
2020-12-20 12:08:08 +0100 <Janni> I was able to resolve that problem by setting up a script ~/bin/ghc with the content "stack ghc -- $@".
2020-12-20 12:08:34 +0100 <tomsmeding> joel135: that's kind of specific to Accelerate, though, and not for general usage :p
2020-12-20 12:08:58 +0100 <tomsmeding> note that it depends on the accelerate package, which is quite large
2020-12-20 12:09:27 +0100ADG1089(~aditya@122.163.166.13) (Remote host closed the connection)
2020-12-20 12:09:42 +0100 <tomsmeding> Janni: for the ghcide issue it may help to make an explicit hie.yaml file
2020-12-20 12:09:49 +0100ADG1089(~aditya@122.163.166.13)
2020-12-20 12:12:42 +0100avdb(~avdb@213.177.155.250)
2020-12-20 12:12:42 +0100Janni(~jan@134.3.46.18) (Read error: Connection reset by peer)
2020-12-20 12:13:51 +0100Janni(~jan@134.3.46.18)
2020-12-20 12:14:21 +0100 <Janni> (If anyone replied I missed it. My computer crashed.)
2020-12-20 12:15:03 +0100 <tomsmeding> Janni: https://ircbrowse.tomsmeding.com/browse/haskell?id=208660&timestamp=1608462582#t1608462582
2020-12-20 12:15:17 +0100 <Janni> Isn't there a way to have stack install a version of ghc as part of its "global-project" and have it create a binary/symlink in ~/.local/bin?
2020-12-20 12:15:18 +0100dansho(~dansho@ec2-18-183-184-168.ap-northeast-1.compute.amazonaws.com)
2020-12-20 12:15:34 +0100 <Janni> tomsmeding: Thanks.
2020-12-20 12:15:57 +0100 <tomsmeding> I believe that's not the way stack is intended to work; it's intended to download a local ghc per project, and the sharing of ghc's over projects that use the same version is just a "caching" thing
2020-12-20 12:16:14 +0100xlei(znc@unaffiliated/xlei)
2020-12-20 12:17:13 +0100 <Janni> Right. I got the impression that I could "switch" from cabal to stack, maybe that's my problem.
2020-12-20 12:17:50 +0100__monty__(~toonn@unaffiliated/toonn)
2020-12-20 12:18:11 +0100 <tomsmeding> well you can, but stack wants you to make a project for whatever you do
2020-12-20 12:18:17 +0100 <tomsmeding> (cabal really also wants you though)
2020-12-20 12:18:28 +0100 <tomsmeding> and once you're in a project, stack manages your stuff for you
2020-12-20 12:20:06 +0100cfricke(~cfricke@unaffiliated/cfricke) (Ping timeout: 268 seconds)
2020-12-20 12:20:21 +0100 <tomsmeding> by the way, in case you happen to be under that impression: stack is not necessarily a "modern replacement" of cabal, it's just an alternative that some people prefer, some people don't
2020-12-20 12:20:28 +0100 <Janni> OK. Then my current problem is this. When I run "vim src/Main.hs" everything works fine as the haskell-language-server and ghcide etc from the "project's stack" are used.
2020-12-20 12:20:56 +0100 <Janni> However if I do "cd src; vim Main.hs" everything breaks down.
2020-12-20 12:21:25 +0100 <tomsmeding> I'd say that is your vim language client plugin not properly recognising the project's root folder
2020-12-20 12:21:36 +0100 <tomsmeding> what plugin do you use, languageclient-neovim? ALE?
2020-12-20 12:21:55 +0100 <Janni> vim-lsp
2020-12-20 12:22:12 +0100 <Janni> I'm open to switching to anything else.
2020-12-20 12:22:28 +0100 <Janni> Anything that works. ;)
2020-12-20 12:22:40 +0100 <tomsmeding> I've used the two that I mentioned, both have their own distinct issues :p
2020-12-20 12:22:51 +0100boxscape(4ff0ba59@gateway/web/cgi-irc/kiwiirc.com/ip.79.240.186.89)
2020-12-20 12:23:31 +0100 <tomsmeding> with ALE the only issue I have is this one https://github.com/haskell/ghcide/issues/949 , which is at least a known and reported issue
2020-12-20 12:24:12 +0100 <Janni> Alright, I'll try out ALE then. Thanks!
2020-12-20 12:24:38 +0100 <tomsmeding> I'm currently looking whether this is relevant: https://github.com/prabirshrestha/vim-lsp/issues/941
2020-12-20 12:25:36 +0100 <tomsmeding> hm, no
2020-12-20 12:26:04 +0100 <Janni> Cool, so far ALE seems to work out of the box.
2020-12-20 12:26:41 +0100jophish(~jophish@2400:8901::f03c:91ff:fe39:7a9)
2020-12-20 12:26:48 +0100 <tomsmeding> nice!
2020-12-20 12:27:06 +0100Achylles(~Achylles@191.254.130.93) (Remote host closed the connection)
2020-12-20 12:27:12 +0100 <tomsmeding> for the record, for vim-lsp you may want to look at this issue: https://github.com/prabirshrestha/vim-lsp/issues/274
2020-12-20 12:27:14 +0100 <Janni> Except that :ALEHover (and similar commands) don't seem to do anything...
2020-12-20 12:28:31 +0100 <tomsmeding> ALEHover seems to work for me
2020-12-20 12:29:08 +0100unK_(~unknown@2a02:a312:c83d:7800:bb7f:5c00:4f48:cc5c)
2020-12-20 12:29:14 +0100 <tomsmeding> oh! ALE doesn't have ghcide or hls by default I believe, but that's easily fixable
2020-12-20 12:30:08 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-12-20 12:30:15 +0100unK_unK
2020-12-20 12:30:20 +0100unKunK_
2020-12-20 12:30:31 +0100unK_(~unknown@2a02:a312:c83d:7800:bb7f:5c00:4f48:cc5c) ()
2020-12-20 12:30:44 +0100Franciman(~francesco@host-82-49-79-73.retail.telecomitalia.it)
2020-12-20 12:30:44 +0100hcchien(~hcchien@s91904426.blix.com) (Remote host closed the connection)
2020-12-20 12:30:47 +0100 <tomsmeding> Janni: https://paste.tomsmeding.com/DIdhcRGB
2020-12-20 12:32:15 +0100 <tomsmeding> include that in your .vimrc, or wherever you want it that's loaded
2020-12-20 12:32:59 +0100jamm(~jamm@unaffiliated/jamm)
2020-12-20 12:33:03 +0100arybczak(~unknown@2a02:a312:c83d:7800:bb7f:5c00:4f48:cc5c)
2020-12-20 12:33:55 +0100fendor(~fendor@178.115.130.51.wireless.dyn.drei.com)
2020-12-20 12:34:08 +0100 <Janni> Thanks! I tried that out but I'm getting "ghcide compiled against GHC 8.10.2 but currently using 8.4.4".
2020-12-20 12:34:32 +0100 <Janni> Ah wait. I need an hie.yaml
2020-12-20 12:34:55 +0100 <tomsmeding> sorry for the mess, but yes, I find you usually need a hie.yaml :p
2020-12-20 12:35:27 +0100arybczak(~unknown@2a02:a312:c83d:7800:bb7f:5c00:4f48:cc5c) (Client Quit)
2020-12-20 12:35:52 +0100arybczak(~unknown@2a02:a312:c83d:7800:bb7f:5c00:4f48:cc5c)
2020-12-20 12:36:25 +0100 <tomsmeding> vim isn't a great editor to use with LSP servers (though I try) and the architecture of the current LSP server implementations for haskell binds them tightly to the compiler being used to compile your project, which makes setting up somewhat more difficult than for other languages
2020-12-20 12:37:21 +0100 <Janni> Yeah, next thing on my TODO list: implement a good editor.
2020-12-20 12:37:43 +0100seiryn(~seiryn@2a01cb0409c990003ccf6635f6976a70.ipv6.abo.wanadoo.fr)
2020-12-20 12:37:56 +0100 <Janni> afk
2020-12-20 12:38:44 +0100 <__monty__> Is there even a way to avoid that? Except for linking HIE against the most common GHC versions?
2020-12-20 12:38:50 +0100 <tomsmeding> when I retire I will
2020-12-20 12:39:08 +0100 <tomsmeding> __monty__: not using the compilation artifacts from the user?
2020-12-20 12:39:13 +0100ericsagn1(~ericsagne@2405:6580:0:5100:e741:8684:6690:73be) (Ping timeout: 268 seconds)
2020-12-20 12:39:22 +0100 <tomsmeding> then you can use any compiler version you like as long as it accepts your code
2020-12-20 12:39:39 +0100 <__monty__> But the user expects his tooling to check it for *their* compiler.
2020-12-20 12:39:40 +0100 <tomsmeding> some other languages don't even integrate with the actual compiler, they have a separate implementation of the language just for the IDE
2020-12-20 12:39:59 +0100 <tomsmeding> so they do, but if it's close enough it doesn't matter usually
2020-12-20 12:40:03 +0100 <__monty__> That sounds like a way to introduce really hard to spot errors.
2020-12-20 12:40:13 +0100 <tomsmeding> java (tm)
2020-12-20 12:40:27 +0100 <tomsmeding> it does buy ergonomics for the simple cases though
2020-12-20 12:40:36 +0100 <tomsmeding> and thus an easier start for beginning users
2020-12-20 12:41:16 +0100 <tomsmeding> also I guess a part of the problem is that for haskell, people are more likely to actually use different compiler versions
2020-12-20 12:41:19 +0100 <__monty__> Delayed frustration is not a great experience though.
2020-12-20 12:41:27 +0100 <tomsmeding> I believe few people actually have different versions of rustc on their system
2020-12-20 12:41:48 +0100 <__monty__> Stable and nightly doesn't seem too out there.
2020-12-20 12:42:04 +0100 <tomsmeding> fair point
2020-12-20 12:43:03 +0100 <tomsmeding> I guess the LSP server should come via the same place as the compiler you install
2020-12-20 12:43:13 +0100 <tomsmeding> for rust that's rustup, which can then match up the versions
2020-12-20 12:43:39 +0100 <tomsmeding> for haskell we have ghcup, which works too, but then stack comes along, and often people also have a ghc from the system packages floating around
2020-12-20 12:44:19 +0100 <tomsmeding> ignoring the problems some people have with using cabal, if everyone would use a ghc from ghcup and not from anywhere else, and use cabal instead of stack, would we have problems?
2020-12-20 12:44:27 +0100 <tomsmeding> (or alternatively, stack with system-ghc: True)
2020-12-20 12:45:05 +0100 <seiryn> I use ghc from ghcup and cabal from ghcup and i (maybe) have problem
2020-12-20 12:45:36 +0100 <__monty__> tomsmeding: Clearly the right answer is nix : )
2020-12-20 12:45:38 +0100 <tomsmeding> though that doesn't serve the people that specifically want ghcide instead of HLS (like me), because ghcup doesn't give you ghcide; but I want that because HLS crashes for me on a particular project, which is a bug and not a permanent problem I hope :p
2020-12-20 12:45:55 +0100 <tomsmeding> __monty__: I'm scared of nix
2020-12-20 12:46:11 +0100 <tomsmeding> seiryn: a problem with HLS version mismatches?
2020-12-20 12:47:50 +0100 <seiryn> tomsmeding: Nah, i installed Cabal and now ghci say parsec is hidden but it's not
2020-12-20 12:47:51 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2020-12-20 12:48:42 +0100 <tomsmeding> is it not?
2020-12-20 12:48:50 +0100 <__monty__> seiryn: Correct constraints on base?
2020-12-20 12:48:53 +0100 <tomsmeding> for me it is, outside of a project
2020-12-20 12:49:10 +0100 <__monty__> Oh, thought Parsec was part of base?
2020-12-20 12:49:52 +0100 <tomsmeding> it's in the 'parsec' library, which is part of the standard set of libraries that come with ghc, but it's not in 'base'
2020-12-20 12:51:06 +0100ericsagn1(~ericsagne@2405:6580:0:5100:543a:c2f7:6b95:2173)
2020-12-20 12:52:08 +0100 <seiryn> Well, i'm a beginner so maybe i've done an obvious mistake, but basically, the first times i wanted to use parsec i did nothing expect the import, then i wanted to use a package so i installed cabal, and now ghci say parsec is hidden
2020-12-20 12:52:25 +0100 <seiryn> But ghc-pck say parsec is exposed
2020-12-20 12:52:30 +0100 <seiryn> ghc-pkg*
2020-12-20 12:52:43 +0100 <tomsmeding> yes the cabal store overrides some of the visibilities
2020-12-20 12:52:58 +0100 <tomsmeding> cabal wants you to always work in a project, which means with a something.cabal file
2020-12-20 12:53:10 +0100dansho(~dansho@ec2-18-183-184-168.ap-northeast-1.compute.amazonaws.com) (Remote host closed the connection)
2020-12-20 12:53:16 +0100 <tomsmeding> in that file you specify the dependencies, among other things; apparently one of the dependencies you want is parsec
2020-12-20 12:53:22 +0100 <seiryn> Oooh
2020-12-20 12:53:36 +0100dansho(~dansho@ec2-18-183-184-168.ap-northeast-1.compute.amazonaws.com)
2020-12-20 12:53:39 +0100 <seiryn> I didn't know that, thanks
2020-12-20 12:53:57 +0100 <tomsmeding> if you're used to node, it's like requiring a package.json; for rust, it's like requiring a Cargo.toml
2020-12-20 12:54:12 +0100 <tomsmeding> the C/C++ world doesn't have anything like that
2020-12-20 12:55:05 +0100 <tomsmeding> granted it might be annoying if you're starting out (I resisted for a long time), but it's a different problem than the IDE version matchup thing we were talking about :)
2020-12-20 12:55:51 +0100 <seiryn> I'm used to C sooo
2020-12-20 12:56:10 +0100 <seiryn> Oh sorry, i interrupted your conversation
2020-12-20 12:56:13 +0100 <tomsmeding> I came from there too
2020-12-20 12:56:33 +0100 <tomsmeding> don't worry, there are currently 1029 people in this room, interrupting conversations is the norm and not a problem :p
2020-12-20 13:00:59 +0100borne(~fritjof@200116b8644c2000c0a3d285e8e687f4.dip.versatel-1u1.de)
2020-12-20 13:05:04 +0100boxscape(4ff0ba59@gateway/web/cgi-irc/kiwiirc.com/ip.79.240.186.89) (Ping timeout: 272 seconds)
2020-12-20 13:10:39 +0100gehmehgeh(~ircuser1@gateway/tor-sasl/gehmehgeh)
2020-12-20 13:21:06 +0100pavonia(~user@unaffiliated/siracusa) (Quit: Bye!)
2020-12-20 13:21:47 +0100gehmehgeh(~ircuser1@gateway/tor-sasl/gehmehgeh) (Remote host closed the connection)
2020-12-20 13:21:54 +0100avdb(~avdb@213.177.155.250) (Quit: avdb)
2020-12-20 13:22:14 +0100boxscape(4ff0ba59@gateway/web/cgi-irc/kiwiirc.com/ip.79.240.186.89)
2020-12-20 13:22:29 +0100asheshambasta(~user@ptr-e1lysaxt4bg7tmaahx1.18120a2.ip6.access.telenet.be)
2020-12-20 13:22:41 +0100heatsink(~heatsink@2600:1700:bef1:5e10:404:9305:1542:3c1a)
2020-12-20 13:23:10 +0100gehmehgeh(~ircuser1@gateway/tor-sasl/gehmehgeh)
2020-12-20 13:23:41 +0100avdb(~avdb@213.177.155.250)
2020-12-20 13:25:50 +0100drbean(~drbean@TC210-63-209-95.static.apol.com.tw)
2020-12-20 13:27:27 +0100heatsink(~heatsink@2600:1700:bef1:5e10:404:9305:1542:3c1a) (Ping timeout: 260 seconds)
2020-12-20 13:27:42 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:2570:8bc6:6048:3a26)
2020-12-20 13:29:42 +0100ADG1089(~aditya@122.163.166.13) (Remote host closed the connection)
2020-12-20 13:32:27 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:2570:8bc6:6048:3a26) (Ping timeout: 260 seconds)
2020-12-20 13:33:15 +0100fendor(~fendor@178.115.130.51.wireless.dyn.drei.com) (Remote host closed the connection)
2020-12-20 13:33:46 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2020-12-20 13:36:31 +0100mmsari(~Thunderbi@37.130.100.46)
2020-12-20 13:38:35 +0100boxscape(4ff0ba59@gateway/web/cgi-irc/kiwiirc.com/ip.79.240.186.89) (Quit: Connection closed)
2020-12-20 13:46:23 +0100jmchael(~jmchael@81.174.180.109)
2020-12-20 13:48:03 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:2570:8bc6:6048:3a26)
2020-12-20 13:48:53 +0100urek(~urek@2804:7f1:e10a:f71b:24bd:3e22:9689:a955)
2020-12-20 13:49:26 +0100avdb(~avdb@213.177.155.250) (Ping timeout: 265 seconds)
2020-12-20 13:49:54 +0100jpds(~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection)
2020-12-20 13:50:20 +0100hacxman(~hexo@gateway/tor-sasl/hexo)
2020-12-20 13:50:34 +0100m0rphism(~m0rphism@HSI-KBW-085-216-104-059.hsi.kabelbw.de)
2020-12-20 13:50:43 +0100hexo(~hexo@gateway/tor-sasl/hexo) (Ping timeout: 240 seconds)
2020-12-20 13:50:44 +0100hacxmanhexo
2020-12-20 13:52:32 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:2570:8bc6:6048:3a26) (Ping timeout: 260 seconds)
2020-12-20 13:53:58 +0100jpds(~jpds@gateway/tor-sasl/jpds)
2020-12-20 13:59:47 +0100aplainzetakind(~johndoe@captainludd.powered.by.lunarbnc.net) (Quit: Free ZNC ~ Powered by LunarBNC: https://LunarBNC.net)
2020-12-20 14:02:59 +0100rayyyy(~nanoz@gateway/tor-sasl/nanoz)
2020-12-20 14:05:11 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-12-20 14:07:53 +0100urek__(~urek@186.212.191.144)
2020-12-20 14:08:22 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:2570:8bc6:6048:3a26)
2020-12-20 14:09:02 +0100urek(~urek@2804:7f1:e10a:f71b:24bd:3e22:9689:a955) (Ping timeout: 264 seconds)
2020-12-20 14:09:37 +0100Rudd0(~Rudd0@185.189.115.98) (Ping timeout: 246 seconds)
2020-12-20 14:10:05 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
2020-12-20 14:10:52 +0100sord937(~sord937@gateway/tor-sasl/sord937)
2020-12-20 14:11:26 +0100borne(~fritjof@200116b8644c2000c0a3d285e8e687f4.dip.versatel-1u1.de) (Ping timeout: 264 seconds)
2020-12-20 14:12:00 +0100hackagekeylayouts 0.1.0.0 - Tools for macOS .keylayout files https://hackage.haskell.org/package/keylayouts-0.1.0.0 (dailectic)
2020-12-20 14:13:17 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:2570:8bc6:6048:3a26) (Ping timeout: 260 seconds)
2020-12-20 14:14:30 +0100hackagekeylayouts 0.1.0.1 - Tools for macOS .keylayout files https://hackage.haskell.org/package/keylayouts-0.1.0.1 (dailectic)
2020-12-20 14:14:56 +0100boxscape(4ff0ba59@gateway/web/cgi-irc/kiwiirc.com/ip.79.240.186.89)
2020-12-20 14:21:08 +0100mmsari(~Thunderbi@37.130.100.46) (Ping timeout: 256 seconds)
2020-12-20 14:21:59 +0100seiryn(~seiryn@2a01cb0409c990003ccf6635f6976a70.ipv6.abo.wanadoo.fr) (Quit: WeeChat 2.9)
2020-12-20 14:24:04 +0100heatsink(~heatsink@2600:1700:bef1:5e10:404:9305:1542:3c1a)
2020-12-20 14:28:27 +0100heatsink(~heatsink@2600:1700:bef1:5e10:404:9305:1542:3c1a) (Ping timeout: 260 seconds)
2020-12-20 14:32:03 +0100sord937(~sord937@gateway/tor-sasl/sord937) (Ping timeout: 240 seconds)
2020-12-20 14:32:23 +0100mmsari(~Thunderbi@37.130.100.46)
2020-12-20 14:35:09 +0100Welkin(~Welkin@216.243.35.47) (Ping timeout: 268 seconds)
2020-12-20 14:37:33 +0100unpppa(591088f8@89.16.136.248) (Remote host closed the connection)
2020-12-20 14:37:40 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-12-20 14:41:05 +0100Tario(~Tario@201.192.165.173)
2020-12-20 14:43:35 +0100fuzzypixelz(~fuzzypixe@eth-west-pareq2-46-193-4-100.wb.wifirst.net)
2020-12-20 14:43:49 +0100knupfer(~Thunderbi@200116b82cf0a30050c0c0fffe7a23dd.dip.versatel-1u1.de)
2020-12-20 14:43:49 +0100knupfer(~Thunderbi@200116b82cf0a30050c0c0fffe7a23dd.dip.versatel-1u1.de) (Client Quit)
2020-12-20 14:44:08 +0100knupfer(~Thunderbi@mue-88-130-61-068.dsl.tropolys.de)
2020-12-20 14:45:28 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:2570:8bc6:6048:3a26)
2020-12-20 14:48:23 +0100mouseghost(~draco@wikipedia/desperek)
2020-12-20 14:51:29 +0100drbean(~drbean@TC210-63-209-95.static.apol.com.tw) (Ping timeout: 260 seconds)
2020-12-20 14:52:15 +0100_ht(~quassel@82-169-194-8.biz.kpn.net)
2020-12-20 15:00:26 +0100xff0x_(~fox@2001:1a81:533f:8600:c719:1424:71ec:9a95) (Ping timeout: 268 seconds)
2020-12-20 15:01:04 +0100xff0x_(~fox@2001:1a81:533f:8600:4230:b097:b97e:1a3d)
2020-12-20 15:01:45 +0100knupfer(~Thunderbi@mue-88-130-61-068.dsl.tropolys.de) (Ping timeout: 240 seconds)
2020-12-20 15:04:55 +0100aplainzetakind(~johndoe@captainludd.powered.by.lunarbnc.net)
2020-12-20 15:05:37 +0100sord937(~sord937@gateway/tor-sasl/sord937)
2020-12-20 15:06:38 +0100elfets(~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de)
2020-12-20 15:08:38 +0100son0p(~son0p@181.136.122.143)
2020-12-20 15:10:50 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:2570:8bc6:6048:3a26) (Remote host closed the connection)
2020-12-20 15:10:56 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:2570:8bc6:6048:3a26)
2020-12-20 15:11:36 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
2020-12-20 15:12:00 +0100hackagegloss-export 0.1.0.3 - Export Gloss pictures to png, bmp, tga, tiff, gif and juicy-pixels-image https://hackage.haskell.org/package/gloss-export-0.1.0.3 (timoa)
2020-12-20 15:12:36 +0100borne(~fritjof@200116b8644eaa00c0a3d285e8e687f4.dip.versatel-1u1.de)
2020-12-20 15:12:47 +0100ericsagn1(~ericsagne@2405:6580:0:5100:543a:c2f7:6b95:2173) (Ping timeout: 260 seconds)
2020-12-20 15:21:05 +0100neiluj(~jco@unaffiliated/neiluj) (Quit: leaving)
2020-12-20 15:21:44 +0100 <siraben> Is Text.ParserCombinators.ReadP actually paralle?
2020-12-20 15:21:45 +0100 <siraben> parallel*
2020-12-20 15:23:21 +0100knupfer(~Thunderbi@200116b82cf0a300a4f8edfeafadaac2.dip.versatel-1u1.de)
2020-12-20 15:24:15 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:a111:468a:beb5:7acf)
2020-12-20 15:24:18 +0100ericsagn1(~ericsagne@2405:6580:0:5100:5ba9:d29a:794f:12e0)
2020-12-20 15:24:36 +0100 <hpc> it means "parallel" in a different way than something like par/pseq, if that's what you're asking
2020-12-20 15:24:44 +0100heatsink(~heatsink@2600:1700:bef1:5e10:404:9305:1542:3c1a)
2020-12-20 15:25:24 +0100 <ski> > [(x,y) | x <- "ab" | y <- [0,1]]
2020-12-20 15:25:27 +0100 <lambdabot> [('a',0),('b',1)]
2020-12-20 15:27:01 +0100 <siraben> ski: hm what is that double list comprehension?
2020-12-20 15:27:03 +0100borne(~fritjof@200116b8644eaa00c0a3d285e8e687f4.dip.versatel-1u1.de) (Ping timeout: 260 seconds)
2020-12-20 15:27:30 +0100 <siraben> Ah, ParallelListComp language extension
2020-12-20 15:29:26 +0100heatsink(~heatsink@2600:1700:bef1:5e10:404:9305:1542:3c1a) (Ping timeout: 264 seconds)
2020-12-20 15:31:35 +0100MidAutumnHotaru(~MidAutumn@154.91.197.93) (Quit: Quit 啾)
2020-12-20 15:32:12 +0100MidAutumnHotaru(~MidAutumn@154.91.197.93)
2020-12-20 15:32:20 +0100jfalcon(905c1fea@144.92.31.234)
2020-12-20 15:32:34 +0100dopplergange(~dop@195.158.249.47) (Remote host closed the connection)
2020-12-20 15:33:36 +0100kik1(~kik1@195.140.213.38)
2020-12-20 15:34:52 +0100 <siraben> How many language extensions can be implemented in Template Haskell, or is it done by modifying the GHC source?
2020-12-20 15:35:26 +0100 <joel135> > [(x,y) | x <- "abcde", x /= 'b' | y <- [0,1,2,3,4], y /= 3]
2020-12-20 15:35:28 +0100 <lambdabot> [('a',0),('c',1),('d',2),('e',4)]
2020-12-20 15:35:50 +0100boxscape(4ff0ba59@gateway/web/cgi-irc/kiwiirc.com/ip.79.240.186.89) (Quit: Connection closed)
2020-12-20 15:36:05 +0100boxscape(4ff0ba59@gateway/web/cgi-irc/kiwiirc.com/ip.79.240.186.89)
2020-12-20 15:37:07 +0100mputz(~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de)
2020-12-20 15:37:10 +0100 <hpc> template haskell doesn't implement language extensions
2020-12-20 15:37:36 +0100 <hpc> it provides a way to execute haskell code that generates haskell code at compile time
2020-12-20 15:38:06 +0100 <hpc> but within delineated sections
2020-12-20 15:38:50 +0100 <hpc> in theory you could "extend" the language by wrapping all your code in it, but it wouldn't be {-# LANGUAGE YourExtension #-}, it would be something else
2020-12-20 15:40:00 +0100vfaronov(~vfaronov@broadband-95-84-210-78.ip.moscow.rt.ru)
2020-12-20 15:40:24 +0100takuan(~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
2020-12-20 15:41:19 +0100mputz(~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de) (Ping timeout: 246 seconds)
2020-12-20 15:42:25 +0100avdb(~avdb@213.177.155.250)
2020-12-20 15:43:01 +0100the-smug-one(~user@83-92-112-87-cable.dk.customer.tdc.net)
2020-12-20 15:44:42 +0100 <the-smug-one> I'm reading Oleg's stuff on tagless final. Often the idea of a program or term being "closed" respectively "open" is expressed. Does anyone know what that means? Googling hasn't given me much
2020-12-20 15:46:01 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-12-20 15:48:05 +0100wonko7(~wonko7@69.75.150.77.rev.sfr.net) (Ping timeout: 240 seconds)
2020-12-20 15:50:23 +0100polyphem(~p0lyph3m@2a02:810d:640:776c:76d7:55f6:f85b:c889) (Quit: WeeChat 2.9)
2020-12-20 15:51:14 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2020-12-20 15:53:25 +0100shatriff(~vitaliish@176-52-216-242.irishtelecom.com) (Remote host closed the connection)
2020-12-20 15:53:41 +0100shatriff(~vitaliish@176-52-216-242.irishtelecom.com)
2020-12-20 15:55:48 +0100juuandyy(~juuandyy@90.166.144.65)
2020-12-20 15:57:53 +0100wei2912(~wei2912@unaffiliated/wei2912) (Remote host closed the connection)
2020-12-20 15:58:46 +0100 <__monty__> the-smug-one: Is it whether it does not, respectively does have free variables?
2020-12-20 15:59:38 +0100 <__monty__> The other interpretation I could see is like open and closed type families. The former can be added to in other files, like type classes, the latter cannot, like types.
2020-12-20 16:00:28 +0100 <the-smug-one> __monty__: It's probably regarding free variables. So a closed term has no free variables
2020-12-20 16:01:33 +0100 <nshepperd2> in the context of tagless final he's probably talking about whether you can add to it later
2020-12-20 16:02:36 +0100kritzefitz(~kritzefit@212.86.56.80) (Ping timeout: 240 seconds)
2020-12-20 16:03:18 +0100 <the-smug-one> nshepperd2: Probably the free variables interpretation is correct, considering this quote: "After all, the typeexprepresents object terms both well-typed and ill-typed, both open andclosed"
2020-12-20 16:05:00 +0100hackagepandoc-crossref 0.3.9.0 - Pandoc filter for cross-references https://hackage.haskell.org/package/pandoc-crossref-0.3.9.0 (lierdakil)
2020-12-20 16:05:32 +0100Deide(~Deide@217.155.19.23)
2020-12-20 16:05:43 +0100 <joel135> yes in that context it seems largely unambiguous
2020-12-20 16:10:08 +0100sord937(~sord937@gateway/tor-sasl/sord937) (Remote host closed the connection)
2020-12-20 16:10:15 +0100 <Janni> Is it still possible to generate HTML docs for all the installed packages. It used to work with "documentation: True" in .cabal/config but it doesnt't seem to anymore.
2020-12-20 16:10:18 +0100 <Janni> ?
2020-12-20 16:11:04 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:2570:8bc6:6048:3a26) (Remote host closed the connection)
2020-12-20 16:11:04 +0100juuandyy(~juuandyy@90.166.144.65) (Ping timeout: 246 seconds)
2020-12-20 16:11:19 +0100geekosaur(ae68c070@cpe-174-104-192-112.neo.res.rr.com)
2020-12-20 16:11:25 +0100sord937(~sord937@gateway/tor-sasl/sord937)
2020-12-20 16:12:16 +0100chang(~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-12-20 16:14:31 +0100juuandyy(~juuandyy@90.166.144.65)
2020-12-20 16:14:35 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:2570:8bc6:6048:3a26)
2020-12-20 16:18:11 +0100Ariakenom(~Ariakenom@2001:9b1:efb:fc00:7113:ddfe:c797:f6e7)
2020-12-20 16:18:47 +0100ddellacosta(dd@gateway/vpn/mullvad/ddellacosta)
2020-12-20 16:20:55 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-12-20 16:21:30 +0100hackagetable-layout 0.9.0.2 - Format tabular data as grid or table. https://hackage.haskell.org/package/table-layout-0.9.0.2 (muesli4)
2020-12-20 16:23:43 +0100Feuermagier(~Feuermagi@213.178.26.41) (Remote host closed the connection)
2020-12-20 16:25:25 +0100heatsink(~heatsink@2600:1700:bef1:5e10:404:9305:1542:3c1a)
2020-12-20 16:27:07 +0100rayyyy(~nanoz@gateway/tor-sasl/nanoz) (Quit: Leaving)
2020-12-20 16:29:47 +0100heatsink(~heatsink@2600:1700:bef1:5e10:404:9305:1542:3c1a) (Ping timeout: 260 seconds)
2020-12-20 16:30:29 +0100hackagekeylayouts 0.1.0.2 - Tools for macOS .keylayout files https://hackage.haskell.org/package/keylayouts-0.1.0.2 (dailectic)
2020-12-20 16:33:05 +0100kish`(~oracle@unaffiliated/oracle)
2020-12-20 16:34:01 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:2570:8bc6:6048:3a26) (Remote host closed the connection)
2020-12-20 16:35:17 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:2570:8bc6:6048:3a26)
2020-12-20 16:43:26 +0100ddellacosta(dd@gateway/vpn/mullvad/ddellacosta) (Ping timeout: 256 seconds)
2020-12-20 16:43:39 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:2570:8bc6:6048:3a26) (Remote host closed the connection)
2020-12-20 16:50:40 +0100kish`(~oracle@unaffiliated/oracle) (Quit: Leaving)
2020-12-20 16:58:41 +0100avdb(~avdb@213.177.155.250) (Quit: avdb)
2020-12-20 16:58:50 +0100 <tzlil> what optimizations does GHC do? i wrote a function (http://0x0.st/iCNO.txt
2020-12-20 16:58:59 +0100 <tzlil> but this seems like it would be slow
2020-12-20 16:59:17 +0100 <tzlil> or would crash if the array is too long
2020-12-20 16:59:34 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:2570:8bc6:6048:3a26)
2020-12-20 16:59:36 +0100Kronic(~Kronic___@84.203.96.46)
2020-12-20 16:59:44 +0100 <tzlil> but i dont think it does
2020-12-20 17:00:34 +0100 <geekosaur> it does lots of optimizations
2020-12-20 17:00:34 +0100Rudd0(~Rudd0@185.189.115.103)
2020-12-20 17:01:30 +0100 <tzlil> like what?
2020-12-20 17:02:43 +0100 <geekosaur> unboxxing, streaming, worker/wrapper, let floating, strictness analysis, among many others
2020-12-20 17:02:57 +0100 <geekosaur> in this case I would expect it to compile down to a loop
2020-12-20 17:03:18 +0100 <geekosaur> *unboxing
2020-12-20 17:06:30 +0100 <merijn> tzlil: You don't have an array there
2020-12-20 17:06:45 +0100 <whataday> which function can do 'f Nothing Just 1 = Just 1' ?
2020-12-20 17:06:55 +0100 <merijn> whataday: You want <|>
2020-12-20 17:06:56 +0100 <xerox_> > Nothing <|> Just 1
2020-12-20 17:06:59 +0100 <lambdabot> Just 1
2020-12-20 17:07:01 +0100 <merijn> :t (<|>)
2020-12-20 17:07:02 +0100 <lambdabot> Alternative f => f a -> f a -> f a
2020-12-20 17:07:14 +0100 <merijn> whataday: or "asum"
2020-12-20 17:07:16 +0100 <merijn> :t asum
2020-12-20 17:07:17 +0100 <lambdabot> (Foldable t, Alternative f) => t (f a) -> f a
2020-12-20 17:07:28 +0100 <merijn> whataday: Which will give you the "left most non-Nothing"
2020-12-20 17:07:38 +0100alexelcu(~alexelcu@142.93.180.198) (Quit: ZNC 1.8.2 - https://znc.in)
2020-12-20 17:08:28 +0100alexelcu(~alexelcu@142.93.180.198)
2020-12-20 17:08:39 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:2570:8bc6:6048:3a26) (Remote host closed the connection)
2020-12-20 17:08:44 +0100 <whataday> ok
2020-12-20 17:09:47 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:2570:8bc6:6048:3a26)
2020-12-20 17:11:38 +0100danso(~dan@69-165-210-185.cable.teksavvy.com)
2020-12-20 17:12:39 +0100 <whataday> parse (spaces <|> (string "abc")) "" " ww1984" couldn't match type [Char] with ()
2020-12-20 17:12:48 +0100 <whataday> what's wrong?
2020-12-20 17:13:01 +0100 <ezzieyguywuf> what is "custom-setup" in a cabal file?
2020-12-20 17:13:13 +0100 <whataday> shouldn't it be Right ()?
2020-12-20 17:13:36 +0100 <merijn> ezzieyguywuf: Something to be avoided :p
2020-12-20 17:13:43 +0100 <whataday> spaces would consume the first space in " ww1984"
2020-12-20 17:13:55 +0100juuandyy(~juuandyy@90.166.144.65) (Quit: Konversation terminated!)
2020-12-20 17:14:03 +0100 <ezzieyguywuf> merijn: lol, idris uses it
2020-12-20 17:14:09 +0100juuandyy(~juuandyy@90.166.144.65)
2020-12-20 17:14:13 +0100 <ezzieyguywuf> trying to figure out what it is and how to deal with it in gentoo's package
2020-12-20 17:14:32 +0100 <merijn> ezzieyguywuf: Basically, Cabal has a interface for building/configuring packages, which has 3 variants: "Simple" uses only Cabal code, Configure which is Simple + autoconf, and Custom, which incluces arbitrary custom code
2020-12-20 17:14:49 +0100 <merijn> ezzieyguywuf: It basically means that Setup.hs has custom code doing...something
2020-12-20 17:15:12 +0100 <ezzieyguywuf> ah hah
2020-12-20 17:15:14 +0100 <ezzieyguywuf> yikes
2020-12-20 17:15:18 +0100 <ezzieyguywuf> ok this helps, tank you merijn !
2020-12-20 17:15:19 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2020-12-20 17:15:21 +0100 <merijn> ezzieyguywuf: custom-setup just defines the dependencies/etc. of the custom Setup.hs
2020-12-20 17:17:19 +0100urodna(~urodna@unaffiliated/urodna)
2020-12-20 17:23:24 +0100chang(~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com)
2020-12-20 17:23:37 +0100juuandyy(~juuandyy@90.166.144.65) (Ping timeout: 264 seconds)
2020-12-20 17:26:11 +0100heatsink(~heatsink@2600:1700:bef1:5e10:404:9305:1542:3c1a)
2020-12-20 17:30:59 +0100son0p(~son0p@181.136.122.143) (Quit: Lost terminal)
2020-12-20 17:31:02 +0100heatsink(~heatsink@2600:1700:bef1:5e10:404:9305:1542:3c1a) (Ping timeout: 260 seconds)
2020-12-20 17:34:23 +0100hekkaidekapus}(~tchouri@gateway/tor-sasl/hekkaidekapus)
2020-12-20 17:34:34 +0100machinedgod(~machinedg@135-23-192-217.cpe.pppoe.ca)
2020-12-20 17:35:32 +0100 <nf> whataday: look at the type of (<|>), then look at the types of space and string "abc"
2020-12-20 17:36:42 +0100 <nf> er, spaces
2020-12-20 17:36:43 +0100hekkaidekapus{(~tchouri@gateway/tor-sasl/hekkaidekapus) (Ping timeout: 240 seconds)
2020-12-20 17:38:14 +0100avdb(~avdb@213.177.155.250)
2020-12-20 17:38:49 +0100kritzefitz(~kritzefit@212.86.56.80)
2020-12-20 17:39:45 +0100juuandyy(~juuandyy@90.166.144.65)
2020-12-20 17:41:04 +0100cosimone(~cosimone@93-47-228-249.ip115.fastwebnet.it)
2020-12-20 17:42:21 +0100asheshambasta(~user@ptr-e1lysaxt4bg7tmaahx1.18120a2.ip6.access.telenet.be) (Ping timeout: 272 seconds)
2020-12-20 17:44:18 +0100avdb(~avdb@213.177.155.250) (Quit: avdb)
2020-12-20 17:44:51 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:a111:468a:beb5:7acf) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-12-20 17:46:48 +0100ericsagn1(~ericsagne@2405:6580:0:5100:5ba9:d29a:794f:12e0) (Ping timeout: 258 seconds)
2020-12-20 17:50:58 +0100chang(~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-12-20 17:53:51 +0100Welkin(~Welkin@216.243.35.47)
2020-12-20 17:58:44 +0100Welkin(~Welkin@216.243.35.47) (Ping timeout: 256 seconds)
2020-12-20 17:59:11 +0100ericsagn1(~ericsagne@2405:6580:0:5100:fc57:9d4e:59df:9fdd)
2020-12-20 17:59:27 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:a111:468a:beb5:7acf)
2020-12-20 18:00:25 +0100dansho(~dansho@ec2-18-183-184-168.ap-northeast-1.compute.amazonaws.com) (Quit: Leaving)
2020-12-20 18:01:55 +0100chang(~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com)
2020-12-20 18:02:28 +0100fuzzypixelz(~fuzzypixe@eth-west-pareq2-46-193-4-100.wb.wifirst.net) (Quit: fuzzypixelz)
2020-12-20 18:04:17 +0100kam1(~kam1@24.231.108.143) (Ping timeout: 260 seconds)
2020-12-20 18:07:20 +0100knupfer(~Thunderbi@200116b82cf0a300a4f8edfeafadaac2.dip.versatel-1u1.de) (Quit: knupfer)
2020-12-20 18:07:28 +0100knupfer(~Thunderbi@200116b82cf0a300755132b825621d33.dip.versatel-1u1.de)
2020-12-20 18:08:57 +0100kam1(~kam1@24.231.108.143)
2020-12-20 18:14:31 +0100chang(~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-12-20 18:15:21 +0100troydm(~troydm@unaffiliated/troydm) (Quit: What is Hope? That all of your wishes and all of your dreams come true? To turn back time because things were not supposed to happen like that (C) Rau Le Creuset)
2020-12-20 18:15:56 +0100juuandyy(~juuandyy@90.166.144.65) (Ping timeout: 240 seconds)
2020-12-20 18:16:51 +0100cr3(~cr3@192-222-143-195.qc.cable.ebox.net)
2020-12-20 18:17:46 +0100christo(~chris@81.96.113.213) (Remote host closed the connection)
2020-12-20 18:20:04 +0100Tops2(~Tobias@dyndsl-095-033-023-074.ewe-ip-backbone.de)
2020-12-20 18:25:40 +0100troydm(~troydm@unaffiliated/troydm)
2020-12-20 18:26:49 +0100heatsink(~heatsink@2600:1700:bef1:5e10:404:9305:1542:3c1a)
2020-12-20 18:27:35 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:a111:468a:beb5:7acf) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-12-20 18:30:48 +0100chang(~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com)
2020-12-20 18:31:42 +0100heatsink(~heatsink@2600:1700:bef1:5e10:404:9305:1542:3c1a) (Ping timeout: 260 seconds)
2020-12-20 18:34:51 +0100 <Kronic> So... I wrote a program to do some potentially very big, slow calculations and it has been running for ages now -- is there anyway for me to know if it has just outright locked up, or if it is simply slowly chugging along?
2020-12-20 18:35:22 +0100kish`(~oracle@unaffiliated/oracle)
2020-12-20 18:35:58 +0100 <sm[m]> Kronic: a quick thing, run top or whatever and see if it's using cpu
2020-12-20 18:36:16 +0100 <sm[m]> what kind of machine are you ?
2020-12-20 18:36:21 +0100 <sm[m]> are you on
2020-12-20 18:37:10 +0100al3x27(~plovs@85.254.75.80)
2020-12-20 18:40:39 +0100 <tomsmeding> whataday: 'spaces' is a parser for (), 'string' is a parser for String = [Char]
2020-12-20 18:40:59 +0100 <tomsmeding> oh you already got a response, sorry :p
2020-12-20 18:41:51 +0100heatsink(~heatsink@2600:1700:bef1:5e10:404:9305:1542:3c1a)
2020-12-20 18:42:04 +0100 <Kronic> I'm on a bit of a monster, it's at the top of htop alright
2020-12-20 18:48:00 +0100 <pjb> Kronic: On the other hand, what you would want to know is whether it's lost in an infinite loop, or if it's really progressing on the calculation. For this, you could write some log at critical points in your computations (eg. if you are processing a big lists, write a log each 1000 or 10000 elements processed).
2020-12-20 18:48:13 +0100 <sm[m]> right, you could add some progress output, eg with Debug.Trace, and restart
2020-12-20 18:48:17 +0100 <pjb> It's always good to get news from one's little program, cf. Tron.
2020-12-20 18:48:21 +0100 <Kronic> It's progressing the calculation I'm pretty sure, it's just a really slow one
2020-12-20 18:48:44 +0100 <sm[m]> you probably want some kind of estimate of how long it will take
2020-12-20 18:49:07 +0100 <sm[m]> in case it's longer than the lifetime of the universe :)
2020-12-20 18:49:11 +0100 <Kronic> it's just an Advent of Code thing, I need to write something that isn't so slow I think
2020-12-20 18:49:47 +0100 <boxscape> which day?
2020-12-20 18:50:05 +0100 <Kronic> day 9 part 2
2020-12-20 18:50:37 +0100knupfer(~Thunderbi@200116b82cf0a300755132b825621d33.dip.versatel-1u1.de) (Ping timeout: 260 seconds)
2020-12-20 18:51:06 +0100 <pjb> In the worst cases (it takes days or weeks), let your program give you news thru IRC!
2020-12-20 18:51:14 +0100 <pjb> or by email.
2020-12-20 18:51:55 +0100 <pjb> In Tron, they didn't have email. They needed a direct, interactive communication channel between a program and its programmer…
2020-12-20 18:51:57 +0100Sheilong(uid293653@gateway/web/irccloud.com/x-bsavlyquljvibkoo)
2020-12-20 18:52:16 +0100 <pjb> Exercise for the student: rewrite Tron taking into account email.
2020-12-20 18:52:18 +0100 <Kronic> Lol, well here's the slow part: https://dpaste.org/XBD9#L4
2020-12-20 18:52:25 +0100 <sm[m]> yeah it's 2020, why can't things be more like Tron
2020-12-20 18:53:41 +0100 <sm[m]> https://hackage.haskell.org/package/base-4.14.1.0/docs/Data-List.html#v:subsequences doesn't say, but I would guess that is O(n^2) ?
2020-12-20 18:54:38 +0100gproto23(~gproto23@unaffiliated/gproto23)
2020-12-20 18:54:44 +0100 <Kronic> I mean, I figured the lazy nature would save me somewhat
2020-12-20 18:54:51 +0100fendor(~fendor@77.119.130.63.wireless.dyn.drei.com)
2020-12-20 18:55:30 +0100knupfer(~Thunderbi@200116b82cf0a300d8b066fffe45caa9.dip.versatel-1u1.de)
2020-12-20 18:55:30 +0100knupfer(~Thunderbi@200116b82cf0a300d8b066fffe45caa9.dip.versatel-1u1.de) (Client Quit)
2020-12-20 18:55:43 +0100knupfer(~Thunderbi@mue-88-130-61-068.dsl.tropolys.de)
2020-12-20 18:55:49 +0100 <tomsmeding> sm[m]: subsequences produces 2^n results, so O(2^n)
2020-12-20 18:56:08 +0100 <sm[m]> thanks toms meding
2020-12-20 18:56:17 +0100jonatanb(jonatanb@gateway/vpn/protonvpn/jonatanb)
2020-12-20 18:56:33 +0100 <tomsmeding> so, 'filter (`isInfixOf` xs) (subsequences xs)' takes the 2^n subsequences and selects the n^2 contiguous ones?
2020-12-20 18:56:47 +0100 <tomsmeding> so, like, concatMap inits (tails xs) ?
2020-12-20 18:57:10 +0100gproto23(~gproto23@unaffiliated/gproto23) (Client Quit)
2020-12-20 18:57:33 +0100 <tomsmeding> more correctly, concatMap (tail . inits) (tails xs)
2020-12-20 18:57:41 +0100 <tomsmeding> um, [] : concatMap (tail . inits) (tails xs)
2020-12-20 18:58:35 +0100 <tomsmeding> Kronic: laziness doesn't save you here, 'subsequences' is still going to generate them all, even if the full list is not instantiated in memory at once
2020-12-20 18:58:58 +0100 <Kronic> Ah I see... is there anyway to make it not do that?
2020-12-20 18:59:30 +0100 <tomsmeding> ... not generate bloody exponentially many items? :p
2020-12-20 18:59:39 +0100 <Kronic> Yea I figured, alright thanks anyway
2020-12-20 19:00:01 +0100 <tomsmeding> e.g. substitute '[] : concatMap (tail . inits) (tails xs)' for your 'filter (`isInfixOf` xs) (subsequences xs)'
2020-12-20 19:00:11 +0100 <tomsmeding> the ordering might be different though, not sure if that matters for you
2020-12-20 19:01:17 +0100heatsink(~heatsink@2600:1700:bef1:5e10:404:9305:1542:3c1a) (Remote host closed the connection)
2020-12-20 19:01:33 +0100boxscape(4ff0ba59@gateway/web/cgi-irc/kiwiirc.com/ip.79.240.186.89) (Ping timeout: 268 seconds)
2020-12-20 19:01:44 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
2020-12-20 19:01:52 +0100 <tomsmeding> FWIW, my solution to day 9 part 2 is not even O(n^2), it's O(n log n) ;)
2020-12-20 19:02:02 +0100 <koz_> tomsmeding: I guess some sorting was involved?
2020-12-20 19:02:18 +0100 <tomsmeding> nope, unless you count putting stuff in a Map, sortinf
2020-12-20 19:02:20 +0100 <tomsmeding> *sorting
2020-12-20 19:02:20 +0100 <Kronic> I find it to be incredibly hard to understand how fast things are in Haskell, so, I'll just see what other way I can come up with
2020-12-20 19:02:24 +0100 <koz_> That does count.
2020-12-20 19:02:31 +0100 <koz_> Since a Map is a red-black tree.
2020-12-20 19:02:41 +0100 <tomsmeding> Kronic: this is complexity analysis, and orthogonal to haskell or c++ or whatever :)
2020-12-20 19:02:41 +0100 <koz_> Whose bounds actually come from the comparison sort Big-Omega.
2020-12-20 19:03:09 +0100 <tomsmeding> koz_: okay fair, if you make "sorting" generic like that, then yes most log-containing complexities are because of sorting
2020-12-20 19:03:16 +0100kam1(~kam1@24.231.108.143) (Ping timeout: 246 seconds)
2020-12-20 19:03:20 +0100chang(~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-12-20 19:03:28 +0100 <tomsmeding> though still "most", not all; I've seen some wild stuff
2020-12-20 19:03:28 +0100emmanuel_erc(~user@2604:2000:1382:ce03::9af) (Ping timeout: 260 seconds)
2020-12-20 19:03:36 +0100 <koz_> Yeah, when you see n log (n), it's either an explicit sort or a sorted structure in pretty much all cases.
2020-12-20 19:03:37 +0100kritzefitz(~kritzefit@212.86.56.80) (Remote host closed the connection)
2020-12-20 19:03:51 +0100 <koz_> Unless you're like, doing some kind of FFT stuff maybe?
2020-12-20 19:03:54 +0100philopsos(~caecilius@gateway/tor-sasl/caecilius)
2020-12-20 19:03:58 +0100 <sm[m]> Kronic: to build intuition, at least stick in a trace "." in loops, it can be very informative
2020-12-20 19:04:00 +0100 <koz_> (and that's only theoretically n log (n) actually)
2020-12-20 19:04:10 +0100heatsink(~heatsink@2600:1700:bef1:5e10:7482:9511:22c:1523)
2020-12-20 19:04:25 +0100sm[m]wishes for audio tracing
2020-12-20 19:04:41 +0100 <tomsmeding> koz_: https://link.springer.com/article/10.1007/s00453-005-1199-1
2020-12-20 19:04:53 +0100 <tomsmeding> (abstract is sufficient for my point)
2020-12-20 19:05:02 +0100takuan(~takuan@178-116-218-225.access.telenet.be)
2020-12-20 19:05:13 +0100howdoi(uid224@gateway/web/irccloud.com/x-jjzeflqmmqjznsli)
2020-12-20 19:05:36 +0100 <koz_> n^3 * sqrt(log(log(n)) / log(n) ... is not n log (n). :P
2020-12-20 19:06:08 +0100 <Kronic> I mean, I've been a software engineer for about 5 years now, I know what complexity analysis is. My point was that I find it very hard to work out the complexity in Haskell, not that I don't understand the concept at all
2020-12-20 19:06:38 +0100 <koz_> Kronic: What specifically in Haskell throws you in this regard?
2020-12-20 19:06:39 +0100 <tomsmeding> koz_: very good point, does n log n log log n for schönhage-strassen count?
2020-12-20 19:06:47 +0100 <tomsmeding> okay that's fft, I give up
2020-12-20 19:06:52 +0100 <koz_> Lol.
2020-12-20 19:07:06 +0100sgibber2018(~arch-gibb@208.85.237.137) (Ping timeout: 268 seconds)
2020-12-20 19:07:18 +0100 <koz_> I believe theoretically we could do FFT in n log(n), just that we haven't figured out how yet. :P
2020-12-20 19:07:24 +0100 <Kronic> I think it's a combination of many things
2020-12-20 19:07:42 +0100 <koz_> But I'm far from an expert on this, since my brain dribbles out of my ears whenever I'm not dealing with discrete anything.
2020-12-20 19:08:40 +0100rBiosas(~biosas@ip-62-24-80-122.net.upcbroadband.cz) (Ping timeout: 256 seconds)
2020-12-20 19:08:52 +0100 <tomsmeding> Kronic: I think in haskell, to judge the complexity of something, basically it's the same as what the naive imperative translation of the haskell program would be
2020-12-20 19:09:00 +0100 <tomsmeding> until you start partially evaluating things
2020-12-20 19:09:09 +0100 <koz_> I think of it in terms of how much data you have to process usually.
2020-12-20 19:09:20 +0100 <tomsmeding> the space usage might not be the same due to laziness, both ways, but the time _complexity_ won't be very different
2020-12-20 19:09:21 +0100 <koz_> Bird and Gibbons (I think) new book says to count reduction steps.
2020-12-20 19:09:46 +0100 <tomsmeding> at least, if you use normal combinators like map, filter, or plain recursion, that works fine for me
2020-12-20 19:09:56 +0100 <tomsmeding> if you partially evaluate something, then count only the part that you really evaluate
2020-12-20 19:10:11 +0100 <koz_> (it was Bird and Gibbons!)
2020-12-20 19:10:22 +0100 <tomsmeding> in your case, here, you evaluate everything, so you have an exponential loop, then a quadratic loop, etc
2020-12-20 19:10:46 +0100 <tomsmeding> the fact that you don't actually store those 2^n elements all at once due to laziness isn't relevant for the time complexity
2020-12-20 19:10:47 +0100 <Kronic> I think I don't see how I evaluated everything
2020-12-20 19:11:02 +0100 <koz_> The exponential in your case comes from the fact that a list of n items have 2^n subsequences.
2020-12-20 19:11:12 +0100 <tomsmeding> which of those 2^n items do you not evaluate?
2020-12-20 19:11:13 +0100 <koz_> That's pure combinatorics - you don't even need complexity.
2020-12-20 19:11:46 +0100 <tomsmeding> koz_: counting reduction steps makes sense, but that's perhaps not a good way to do it intuitively
2020-12-20 19:11:58 +0100 <koz_> More precisely: how can you guarantee, to total certainty, in all cases, that you don't need to evaluate everything in the worst case.
2020-12-20 19:12:03 +0100 <tomsmeding> with which I mean: it's correct, sure, but it's hard to do offhand :p
2020-12-20 19:12:05 +0100 <koz_> tomsmeding: They state it's a crude measure.
2020-12-20 19:12:09 +0100elfets(~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de) (Read error: Connection reset by peer)
2020-12-20 19:12:10 +0100 <koz_> But agreed.
2020-12-20 19:12:22 +0100 <koz_> I do recommend the book though, it's excellent.
2020-12-20 19:12:35 +0100 <koz_> One of the first treatments of algorithms and data structures which isn't uber-imperative.
2020-12-20 19:12:41 +0100tomsmedingseldomly reads non-fiction books
2020-12-20 19:13:53 +0100jamm(~jamm@unaffiliated/jamm) (Remote host closed the connection)
2020-12-20 19:14:54 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Remote host closed the connection)
2020-12-20 19:15:13 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com)
2020-12-20 19:15:14 +0100 <tomsmeding> oh! koz_: https://www.youtube.com/watch?v=FKGRc867j10
2020-12-20 19:15:22 +0100 <Kronic> I used find, so I only wanted one match
2020-12-20 19:15:38 +0100 <tomsmeding> I haven't actually watched that talk yet, but I mean to; I believe they do something vastly different than an fft
2020-12-20 19:15:47 +0100 <koz_> Kronic: And what if the thing you want is at the very end?
2020-12-20 19:16:05 +0100 <koz_> Any sort of linear search is worst-case linear, because it might have to check everything (for instance, if it fails).
2020-12-20 19:16:16 +0100 <koz_> tomsmeding: That's quite intriguing.
2020-12-20 19:16:35 +0100 <tomsmeding> even if it isn't at the very end, on average it's going to be in the middle, and evaluating half of a list is the same complexity as evaluating the whole list, if all elements are similarly expensive
2020-12-20 19:16:36 +0100 <koz_> Because multiplication-via-FFT is potentially n log(n) if the FFT-in-n-log-n thing actually holds.
2020-12-20 19:16:51 +0100 <koz_> tomsmeding: 'On average it's going to be in the middle' is a hell of a claim in general.
2020-12-20 19:17:06 +0100 <tomsmeding> which is why I think they aren't doing an fft, because if so, the title would have been "FFT in n log n" :p
2020-12-20 19:17:21 +0100 <tomsmeding> koz_: okay fair, that's a bold claim :p
2020-12-20 19:17:22 +0100 <koz_> tomsmeding: Indeed - I just think that this is an interesting data point in that regard.
2020-12-20 19:17:37 +0100 <tomsmeding> in this case my claim holds though :p
2020-12-20 19:17:50 +0100 <koz_> I'll definitely look at that - thank you!
2020-12-20 19:18:17 +0100 <Kronic> So, I reversed the list and it died immediately
2020-12-20 19:18:31 +0100 <Kronic> Good to know it's just a stupid solution and like I said I should write something different
2020-12-20 19:18:34 +0100 <koz_> Kronic: OOMed?
2020-12-20 19:18:56 +0100 <Kronic> it just said the word "killed"
2020-12-20 19:18:58 +0100 <tomsmeding> reversing the list is going to load it into memory as a whole before even starting to consume it, so yes that'll be OOM :p
2020-12-20 19:19:05 +0100 <koz_> Yeah...
2020-12-20 19:19:11 +0100phaul(~phaul@ruby/staff/phaul) (Remote host closed the connection)
2020-12-20 19:19:25 +0100 <tomsmeding> I generally notice it when stuff goes OOM because my system grinds to a halt
2020-12-20 19:19:29 +0100 <Kronic> why does it say killed and not out of memory?
2020-12-20 19:19:41 +0100phaul(~phaul@ruby/staff/phaul)
2020-12-20 19:19:52 +0100 <tomsmeding> because the linux out-of-memory killer (OOM killer) kills a program that uses more memory than the OOM killer thinks it should
2020-12-20 19:20:05 +0100 <koz_> And your OOM killer appears quite aggressive.
2020-12-20 19:20:07 +0100 <tomsmeding> and what the shell prints (and you see) is how the program exited, which is via a kill
2020-12-20 19:20:33 +0100 <tomsmeding> I agree that the user experience of linux (perhaps bsd or mac in your case?) could be better here, but oh well :p
2020-12-20 19:20:44 +0100 <Kronic> linux
2020-12-20 19:21:00 +0100 <Kronic> I was just asking, in Java usually it'll figure this out early and tell you it's an oom
2020-12-20 19:21:09 +0100 <koz_> Because Java runs in a VM.
2020-12-20 19:21:20 +0100 <koz_> It reserves a bunch of memory, and if you burn through it, it'll blow up.
2020-12-20 19:21:27 +0100 <koz_> Haskell compiles to native code.
2020-12-20 19:21:30 +0100 <koz_> There ain't no VM there.
2020-12-20 19:21:42 +0100 <sm[m]> there's a RTS though...
2020-12-20 19:21:46 +0100 <tomsmeding> in particular, the java VM will decide it's out of memory based on its -Xmx setting; here linux is the one that decides the game is over
2020-12-20 19:21:54 +0100 <koz_> What tomsmeding said.
2020-12-20 19:21:56 +0100 <sm[m]> can't you tell it to limit the total memory in use ?
2020-12-20 19:22:16 +0100 <koz_> sm[m]: You can tell the process, sure.
2020-12-20 19:22:25 +0100 <koz_> (the one that spins up when you run your executable)
2020-12-20 19:22:29 +0100 <koz_> But it doesn't happen by default.
2020-12-20 19:22:31 +0100Janni(~jan@134.3.46.18) (Ping timeout: 268 seconds)
2020-12-20 19:22:36 +0100 <sm[m]> I meant the GHC RTS.. but if not, then yes, ulimit would do
2020-12-20 19:22:51 +0100 <koz_> I dunno if the RTS can be told to limit memory use actually.
2020-12-20 19:23:06 +0100 <koz_> Would be curious to find out.
2020-12-20 19:23:10 +0100 <tomsmeding> I have no idea, but apparently +RTS -M4G or something
2020-12-20 19:23:17 +0100 <Kronic> I just used Java as an example, I'm sure I've seen other languages that directly tell me what the problem is in some way. Idk, I just find a lot of this stuff a little alien, sorry for all of the questions
2020-12-20 19:23:46 +0100 <koz_> Kronic: Have you worked in unmanaged languages before? So like, C, C++, etc?
2020-12-20 19:23:54 +0100 <tomsmeding> or rust
2020-12-20 19:23:57 +0100 <koz_> tomsmeding: Nice to know.
2020-12-20 19:24:06 +0100 <sm[m]> somehow I do find it much more common to allocate way too much space in haskell than in other languages. Maybe because I mix and match data structures and operations on them at a greater rate ?
2020-12-20 19:24:08 +0100 <Kronic> C++ a little here and there when I needed to
2020-12-20 19:24:12 +0100tomsmedingjust looked at +RTS --help from a random haskell executable
2020-12-20 19:24:39 +0100 <koz_> Kronic: Basically, this is the kind of behaviour you'd see from C++ if you tried to make an exponentially-sized thing.
2020-12-20 19:24:46 +0100 <koz_> And it noms all your memory.
2020-12-20 19:24:59 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Excess Flood)
2020-12-20 19:25:13 +0100bitmagie(~Thunderbi@200116b806446f0011aa198d8ec58657.dip.versatel-1u1.de)
2020-12-20 19:25:25 +0100 <koz_> sm[m]: You could probably make it tighter if you really wanted to.
2020-12-20 19:25:33 +0100 <Kronic> I'm pretty sure you can still catch an exception for it in C++ or something to that order
2020-12-20 19:25:38 +0100 <sm[m]> +1 for +RTS -M, that's the way to get a better error Kronic
2020-12-20 19:25:45 +0100 <tomsmeding> Kronic: in practice, on linux, no
2020-12-20 19:25:52 +0100 <tomsmeding> because linux over-allocates
2020-12-20 19:26:03 +0100 <koz_> Yep, that's right.
2020-12-20 19:26:12 +0100Yuu-chan(5f2e7d87@95.46.125.135)
2020-12-20 19:26:14 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com)
2020-12-20 19:26:16 +0100 <tomsmeding> on windows you might be able to actually get std::bad_alloc, but I believe on newer windows versions it over-allocates similarly to linux
2020-12-20 19:26:29 +0100 <koz_> When you work in unmanaged languages, you have to accept that situations like this one are _very_ platform-dependent.
2020-12-20 19:26:59 +0100 <Kronic> That's fair enough, I'm still annoyed about it though
2020-12-20 19:27:02 +0100 <Yuu-chan> Is there a lens to `ix` multiple keys in a map?
2020-12-20 19:27:07 +0100 <koz_> Kronic: Not a lot you can do about it.
2020-12-20 19:27:13 +0100 <tomsmeding> ha, overcommittment is the term I was looking for, not over-allocation
2020-12-20 19:27:17 +0100 <koz_> ('you' here meaning 'anyone really')
2020-12-20 19:27:26 +0100 <koz_> tomsmeding: The Linux kernel is Rick Astley.
2020-12-20 19:27:36 +0100 <koz_> ("A full commitment's what I'm thinking of...")
2020-12-20 19:27:51 +0100 <koz_> Although the fact it'll never let you down is debatable. :P
2020-12-20 19:28:00 +0100hackagealgebraic-graphs-io 0.1.1.0 - I/O utilities for algebraic-graphs https://hackage.haskell.org/package/algebraic-graphs-io-0.1.1.0 (ocramz)
2020-12-20 19:28:23 +0100 <tomsmeding> someone saying "I'll never let you down" is going to ring the doubt bells anyway
2020-12-20 19:28:35 +0100 <koz_> tomsmeding: Lol.
2020-12-20 19:28:47 +0100 <sm[m]> it's like "Don't be evil"
2020-12-20 19:28:57 +0100 <koz_> And we know that by overcommitment, the Linux kernel already tells lies.
2020-12-20 19:29:01 +0100 <koz_> (and possibly hurts you)
2020-12-20 19:29:40 +0100 <koz_> (ok, I'll stop dragging this tired joke)
2020-12-20 19:29:43 +0100 <tomsmeding> koz_: you should do better, more than 3 people are going to get these jokes
2020-12-20 19:29:53 +0100christo(~chris@81.96.113.213)
2020-12-20 19:30:01 +0100 <koz_> tomsmeding: I'm sorry, I'll fulfil my quota of obscurica some other way today.
2020-12-20 19:30:44 +0100bitmagie(~Thunderbi@200116b806446f0011aa198d8ec58657.dip.versatel-1u1.de) (Quit: bitmagie)
2020-12-20 19:32:14 +0100ddellacosta(dd@gateway/vpn/mullvad/ddellacosta)
2020-12-20 19:32:29 +0100hackageghc-lib-parser 8.10.3.20201220 - The GHC API, decoupled from GHC versions https://hackage.haskell.org/package/ghc-lib-parser-8.10.3.20201220 (shayne_fletcher)
2020-12-20 19:33:29 +0100hackagealgebraic-graphs-io 0.1.2.0 - I/O utilities for algebraic-graphs https://hackage.haskell.org/package/algebraic-graphs-io-0.1.2.0 (ocramz)
2020-12-20 19:33:29 +0100hackageghc-lib 8.10.3.20201220 - The GHC API, decoupled from GHC versions https://hackage.haskell.org/package/ghc-lib-8.10.3.20201220 (shayne_fletcher)
2020-12-20 19:34:38 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-12-20 19:34:53 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:a104:aab:2310:b4f0)
2020-12-20 19:35:06 +0100 <koz_> Yuu-chan: Lens as in from 'lens'? Or 'optics'?
2020-12-20 19:36:48 +0100 <dolio> Whatever it would be, it wouldn't be a named concept, I think.
2020-12-20 19:37:01 +0100boxscape(4ff0ba59@gateway/web/cgi-irc/kiwiirc.com/ip.79.240.186.89)
2020-12-20 19:37:13 +0100 <koz_> Yeah, wouldn't you just have like, a list of indexes and fmap?
2020-12-20 19:38:55 +0100kam1(~kam1@24.231.108.143)
2020-12-20 19:39:40 +0100 <boxscape> why can the result type of a function not be unlifted?
2020-12-20 19:39:49 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds)
2020-12-20 19:39:55 +0100 <dolio> It can.
2020-12-20 19:40:05 +0100 <boxscape> oh I must be misremembering
2020-12-20 19:40:20 +0100livvy(~livvy@gateway/tor-sasl/livvy)
2020-12-20 19:40:51 +0100 <boxscape> hmm
2020-12-20 19:41:08 +0100 <boxscape> but the kind of (->) is TYPE q -> TYPE r -> *
2020-12-20 19:41:35 +0100 <boxscape> oh wait
2020-12-20 19:41:46 +0100 <koz_> % :kind (->)
2020-12-20 19:41:47 +0100 <yahb> koz_: * -> * -> *
2020-12-20 19:41:49 +0100 <boxscape> I just forgot how kind signatures work, carry on
2020-12-20 19:41:53 +0100 <koz_> Wait what.
2020-12-20 19:42:00 +0100Welkin(~Welkin@216.243.35.47)
2020-12-20 19:42:09 +0100 <boxscape> % :set -fprint-explicit-runtime-reps
2020-12-20 19:42:09 +0100 <yahb> boxscape:
2020-12-20 19:42:15 +0100 <boxscape> % :k (->)
2020-12-20 19:42:16 +0100 <yahb> boxscape: TYPE q -> TYPE r -> *
2020-12-20 19:42:39 +0100 <koz_> OK yeah, that's better.
2020-12-20 19:42:58 +0100 <koz_> Technically, isn't * shorthand for TYPE SomethingOrOther?
2020-12-20 19:43:12 +0100 <boxscape> TYPE LiftedRep
2020-12-20 19:43:23 +0100 <koz_> Yeah that one.
2020-12-20 19:43:47 +0100 <koz_> So properly it's actually 'TYPE q -> TYPE r -> TYPE LiftedRep'.
2020-12-20 19:43:56 +0100 <koz_> Again, all we ever do is lift in Haskell.
2020-12-20 19:44:03 +0100 <koz_> Now even our function arrows lift!
2020-12-20 19:45:07 +0100wonko7(~wonko7@2a01:e35:2ffb:7040:4535:f480:7dff:b3b5)
2020-12-20 19:46:36 +0100Welkin(~Welkin@216.243.35.47) (Ping timeout: 240 seconds)
2020-12-20 19:46:54 +0100 <Yuu-chan> koz_: Lens from `lens`. I managed to get multiple values with `foldMap ix`, but setting doesn't work properly.
2020-12-20 19:52:00 +0100hackageghc-lib-parser-ex 8.10.0.17 - Algorithms on GHC parse trees https://hackage.haskell.org/package/ghc-lib-parser-ex-8.10.0.17 (shayne_fletcher)
2020-12-20 19:52:21 +0100 <shapr> Anyone using haskell-language-server in NixOS and can tell me the magic incantation?
2020-12-20 19:53:57 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-12-20 19:54:04 +0100jonatanb(jonatanb@gateway/vpn/protonvpn/jonatanb) (Read error: Connection reset by peer)
2020-12-20 19:54:38 +0100jonatanb(jonatanb@gateway/vpn/protonvpn/jonatanb)
2020-12-20 19:55:07 +0100the-smug-one(~user@83-92-112-87-cable.dk.customer.tdc.net) (Ping timeout: 260 seconds)
2020-12-20 19:55:55 +0100 <koz_> Also, tomsmeding - the algorithm you linked seems to rely on FFTs, just in a different form.
2020-12-20 19:56:08 +0100Jeanne-Kamikaze(~Jeanne-Ka@66.115.189.189)
2020-12-20 19:56:13 +0100 <koz_> (well, DFTs I should say, but ehh)
2020-12-20 19:56:41 +0100 <tomsmeding> ah! interesting they managed to work away that log log n factor then
2020-12-20 19:56:52 +0100phaul(~phaul@ruby/staff/phaul) (Ping timeout: 260 seconds)
2020-12-20 19:57:04 +0100 <tomsmeding> perhaps I'll watch it over christmas
2020-12-20 19:57:30 +0100 <koz_> Well, the work-away was done in 2006 by some German dude.
2020-12-20 19:57:30 +0100hackagealgebraic-graphs-io 0.1.3.0 - I/O utilities for algebraic-graphs https://hackage.haskell.org/package/algebraic-graphs-io-0.1.3.0 (ocramz)
2020-12-20 19:57:31 +0100machinedgod(~machinedg@135-23-192-217.cpe.pppoe.ca) (Ping timeout: 246 seconds)
2020-12-20 19:57:41 +0100 <koz_> Who bashed it down to k ^ (log*(n))
2020-12-20 19:57:58 +0100mmsari(~Thunderbi@37.130.100.46) (Remote host closed the connection)
2020-12-20 19:58:05 +0100 <koz_> Then this guy and some collaborators pinned the k to 8, then brought it down to 4, and then killed it completely.
2020-12-20 19:58:22 +0100mmsari(~Thunderbi@37.130.100.46)
2020-12-20 19:58:28 +0100phaul(~phaul@ruby/staff/phaul)
2020-12-20 19:59:02 +0100 <shapr> what algorithm?
2020-12-20 19:59:18 +0100 <koz_> shapr: Shonhage-Strassen.
2020-12-20 19:59:31 +0100 <koz_> Oh, you mean, the one where the k is dead?
2020-12-20 19:59:35 +0100 <shapr> sure
2020-12-20 19:59:36 +0100 <koz_> tomsmeding had a link earlier.
2020-12-20 20:00:00 +0100 <tomsmeding> I see, cool!
2020-12-20 20:00:12 +0100 <shapr> wikipedia says Fuerer's algorithm is the successor
2020-12-20 20:00:14 +0100 <koz_> https://www.youtube.com/watch?v=FKGRc867j10
2020-12-20 20:00:43 +0100 <koz_> Fuerer was the guy who got n log(n) k^(log*(n)) without giving a value for k, other that the fact it was a constant.
2020-12-20 20:01:07 +0100 <koz_> The guy in the vid I linked, and some collaborators, published a bunch of stuff in the late 2010s pinning k to 8, then slowly bringing it down to 4.
2020-12-20 20:01:14 +0100juuandyy(~juuandyy@90.166.144.65)
2020-12-20 20:01:27 +0100 <koz_> The talk I linked is about their (at the time not peer reviewed) paper showing that you could eliminate that part completely to get O(n log(n)).
2020-12-20 20:01:35 +0100 <koz_> (lower bound wasn't discussed AFAICT)
2020-12-20 20:02:49 +0100 <Kronic> I ended up writing just the standard 2 pointer solution https://dpaste.org/bWAL
2020-12-20 20:03:05 +0100 <Kronic> It could probably be better, but it worked, thanks for the help earlier all
2020-12-20 20:03:05 +0100xelxebar(~xelxebar@gateway/tor-sasl/xelxebar) (Remote host closed the connection)
2020-12-20 20:03:11 +0100 <koz_> I was kinda amused to see iterated log again - that function played a key role in my Master's thesis!
2020-12-20 20:03:28 +0100berberman(~berberman@unaffiliated/berberman)
2020-12-20 20:03:40 +0100xelxebar(~xelxebar@gateway/tor-sasl/xelxebar)
2020-12-20 20:03:50 +0100berberman_(~berberman@unaffiliated/berberman) (Ping timeout: 268 seconds)
2020-12-20 20:03:52 +0100 <[exa]> koz_: wow, what precise topic?
2020-12-20 20:03:58 +0100 <koz_> [exa]: Dynamic partial sorting.
2020-12-20 20:04:10 +0100 <koz_> To _completely_ close the loop tomsmeding inadvertently started me on. :P
2020-12-20 20:05:03 +0100 <[exa]> o wow
2020-12-20 20:05:34 +0100phaul(~phaul@ruby/staff/phaul) (Ping timeout: 246 seconds)
2020-12-20 20:05:35 +0100heatsink(~heatsink@2600:1700:bef1:5e10:7482:9511:22c:1523) (Remote host closed the connection)
2020-12-20 20:05:45 +0100stef204(~stef204@unaffiliated/stef-204/x-384198)
2020-12-20 20:06:37 +0100 <tomsmeding> I started you on what?
2020-12-20 20:07:14 +0100 <koz_> tomsmeding: The n log(n) thing?
2020-12-20 20:07:21 +0100 <tomsmeding> oh right that, yes
2020-12-20 20:07:51 +0100 <tomsmeding> I was somehow reading your message as saying that I inadvertently influenced your thesis topic, which sounded outrageously unlikely
2020-12-20 20:09:11 +0100 <monochrom> This whole channel influenced my thesis topic alright.
2020-12-20 20:09:26 +0100 <[exa]> #metoo
2020-12-20 20:09:36 +0100elliott__(~elliott@pool-108-51-101-42.washdc.fios.verizon.net)
2020-12-20 20:09:46 +0100 <koz_> monochrom: Is your topic 'Pedagogy, humour, functional programming: #haskell as a cultural expression of learning Haskell."?
2020-12-20 20:09:56 +0100 <tomsmeding> koz_++
2020-12-20 20:09:56 +0100 <monochrom> Everyone here said "very hard to figure out time complexity under lazy evaluation" so I decided my thesis would be how easy it is.
2020-12-20 20:10:06 +0100 <__monty__> Hmm, are library modules always looked for in the hs-source-dirs of an executable? Does that mean I have to include the source directory of the library in every executable stanza? How does that work with unrelated projects that need to depend on a library in a local project?
2020-12-20 20:10:06 +0100 <[exa]> koz_: oh please can I read that essay?
2020-12-20 20:10:17 +0100 <koz_> [exa]: Ask monochrom for that, not me.
2020-12-20 20:10:26 +0100 <koz_> If it were _me_, it'd be more like
2020-12-20 20:10:34 +0100 <[exa]> can it please have nice pictures? :D
2020-12-20 20:10:42 +0100 <tomsmeding> Kronic: some unsolicited feedback on that version: the 'p2 + 1 /= length xs' can be changed to 'p1 + p2 < length xs' I think
2020-12-20 20:10:52 +0100 <koz_> 'Pedagogy, humour, functional programming: Cultural learnings of #haskell to make benefit glorious nation of pedagogues."
2020-12-20 20:11:07 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 260 seconds)
2020-12-20 20:11:08 +0100 <koz_> (I am not sorry at all)
2020-12-20 20:11:36 +0100 <koz_> (and the acknowledgements section would end with 'And finally, thank you Sasha Baron Cohen: you know why.'.
2020-12-20 20:11:45 +0100 <tomsmeding> Kronic: also, your code is n^3 if I'm not mistaken; if you felt like it there is a little more to gain :)
2020-12-20 20:11:56 +0100kam1(~kam1@24.231.108.143) (Ping timeout: 240 seconds)
2020-12-20 20:12:00 +0100jonatanb(jonatanb@gateway/vpn/protonvpn/jonatanb) ()
2020-12-20 20:12:20 +0100 <koz_> (that joke could have been taken a bit further - only a first draft)
2020-12-20 20:12:29 +0100 <tomsmeding> (why n^3? well, n^2 times you're inspecting a sublist, and you're inspecting that sublist in O(n))
2020-12-20 20:12:44 +0100phaul(~phaul@ruby/staff/phaul)
2020-12-20 20:13:25 +0100Yuu-chan(5f2e7d87@95.46.125.135) (Ping timeout: 245 seconds)
2020-12-20 20:13:50 +0100mmsari(~Thunderbi@37.130.100.46) (Ping timeout: 256 seconds)
2020-12-20 20:14:32 +0100livvy(~livvy@gateway/tor-sasl/livvy) (Remote host closed the connection)
2020-12-20 20:15:04 +0100 <Kronic> It finished in a a second or two so I'm not worried about that, but thank you for the earlier comment
2020-12-20 20:15:57 +0100inkbottle(~inkbottle@aaubervilliers-654-1-95-58.w86-212.abo.wanadoo.fr) (Quit: Konversation terminated!)
2020-12-20 20:16:05 +0100ADG1089_(~adg1089@171.76.183.207)
2020-12-20 20:17:56 +0100renzhi(~renzhi@modemcable070.17-177-173.mc.videotron.ca)
2020-12-20 20:18:59 +0100zebrag(~inkbottle@aaubervilliers-654-1-95-58.w86-212.abo.wanadoo.fr)
2020-12-20 20:21:19 +0100kam1(~kam1@24.231.108.143)
2020-12-20 20:21:45 +0100electricityZZZZ(~electrici@108-216-157-17.lightspeed.sntcca.sbcglobal.net)
2020-12-20 20:22:07 +0100 <monochrom> __monty__: hs-source-dirs is for those listed in main-is, other-modules, exposed-modules. It is not for those listed in build-depends.
2020-12-20 20:23:52 +0100 <merijn> __monty__: Your question is flawed
2020-12-20 20:24:02 +0100ericsagn1(~ericsagne@2405:6580:0:5100:fc57:9d4e:59df:9fdd) (Ping timeout: 264 seconds)
2020-12-20 20:24:17 +0100 <geekosaur> the question sounded like it assumed an old cabal
2020-12-20 20:24:23 +0100 <merijn> __monty__: Library modules aren't looked up by source location at all
2020-12-20 20:24:48 +0100ADG1089_(~adg1089@171.76.183.207) (Ping timeout: 265 seconds)
2020-12-20 20:24:57 +0100 <merijn> geekosaur: tbh, I'm betting on the classic mistake of "having library and exe modules in the same directory"
2020-12-20 20:25:30 +0100phaul(~phaul@ruby/staff/phaul) (Ping timeout: 256 seconds)
2020-12-20 20:26:19 +0100 <geekosaur> but then why ask about finding those modules via hs-source-dirs? sounds like wanting to make that mistake instead of using cabal properly, possibly with multiple libraries
2020-12-20 20:27:41 +0100phaul(~phaul@ruby/staff/phaul)
2020-12-20 20:28:29 +0100Merfont(~Kaiepi@47.54.252.148) (Remote host closed the connection)
2020-12-20 20:29:16 +0100Kaiepi(~Kaiepi@47.54.252.148)
2020-12-20 20:30:15 +0100 <monochrom> It would take forever to articulate and discuss the flaw. Also, although I would love to have everyone does everyone properly, most people never had a chance to learn the proper way, ever.
2020-12-20 20:30:16 +0100heatsink(~heatsink@2600:1700:bef1:5e10:7482:9511:22c:1523)
2020-12-20 20:30:33 +0100machinedgod(~machinedg@24.105.81.50)
2020-12-20 20:30:56 +0100 <__monty__> I was misled by this example: https://cabal.readthedocs.io/en/3.4/cabal-package.html#example-a-package-containing-a-library-and-…
2020-12-20 20:31:01 +0100 <monochrom> After thinking it through, I decided it's most efficient to just state one simple and accurate rule for what hs-source-dirs is for.
2020-12-20 20:31:14 +0100 <__monty__> It gets the library modules via other-modules, rathen than build-depends.
2020-12-20 20:32:16 +0100 <monochrom> Taking advantage of the fact that even people who haven't learned the proper way, they already have correct intuition for what belongs to build-depends, what belongs to other-modules, etc. (Or at least, that one is very easy to pick up.)
2020-12-20 20:33:54 +0100 <monochrom> Yeah that example needs fixing.
2020-12-20 20:34:03 +0100juuandyy(~juuandyy@90.166.144.65) (Ping timeout: 268 seconds)
2020-12-20 20:34:23 +0100 <monochrom> Err no nevermind, it is just another design decision.
2020-12-20 20:34:25 +0100 <__monty__> I think that example would cause the same error, right? Because it'd look for A and B, respectively A and C in prog1, respectively prog2?
2020-12-20 20:34:30 +0100 <merijn> __monty__: That example isn't using the library as library and, tbh, it's a weird ass example
2020-12-20 20:34:45 +0100 <monochrom> No, it's one of two legit ways.
2020-12-20 20:34:51 +0100__monty__jots down a note to fix the example
2020-12-20 20:35:03 +0100 <merijn> __monty__: There are 3 modules named A in that example
2020-12-20 20:35:08 +0100 <geekosaur> that was what I meant by old cabal, tbh
2020-12-20 20:35:10 +0100 <merijn> __monty__: 3 different ones, that is
2020-12-20 20:35:20 +0100 <geekosaur> I didn't know they still had an example dating from the bad old days
2020-12-20 20:35:43 +0100ericsagn1(~ericsagne@2405:6580:0:5100:4c81:d0f9:caa9:4ec)
2020-12-20 20:36:39 +0100 <merijn> __monty__: If your executables intends to use a library in the same package as library, it shouldn't list modules from that library at all in the executable section
2020-12-20 20:37:02 +0100 <monochrom> Hrm, on third though, merijn is right. ./A.hs has nothing to do with prog1/A.hs, one would think.
2020-12-20 20:37:39 +0100 <__monty__> merijn: Yep, I figured that out. A bell rang in my head saying "Why shouldn't this be in build-depends 💭"
2020-12-20 20:37:40 +0100 <merijn> It may have meant something different in the past, but as it is, there is 0 module reuse in that example wrt current Cabal
2020-12-20 20:38:18 +0100 <__monty__> Yep, still think those names either need changing or comments to make all of this clearer.
2020-12-20 20:39:04 +0100Melanie(~Melanie@192-0-134-138.cpe.teksavvy.com)
2020-12-20 20:39:04 +0100 <monochrom> This example does a legit thing but is doing it confusingly.
2020-12-20 20:39:21 +0100 <merijn> monochrom: Arguably also something dumb
2020-12-20 20:40:29 +0100hackagelumberjack 1.0.0.0 - Trek through your code forest and make logs https://hackage.haskell.org/package/lumberjack-1.0.0.0 (KevinQuick)
2020-12-20 20:41:00 +0100 <__monty__> Yes, but imo examples shouldn't be brainteasers : )
2020-12-20 20:41:02 +0100cosimone(~cosimone@93-47-228-249.ip115.fastwebnet.it) (Ping timeout: 256 seconds)
2020-12-20 20:41:09 +0100 <monochrom> IKR
2020-12-20 20:41:20 +0100 <__monty__> Hmm, reexporting qualified isn't a thing, is it?
2020-12-20 20:41:32 +0100 <geekosaur> no, it's not
2020-12-20 20:42:46 +0100 <merijn> Sadly
2020-12-20 20:43:26 +0100Sgeo(~Sgeo@ool-18b98aa4.dyn.optonline.net)
2020-12-20 20:45:00 +0100hackagefei-base 1.0.0 - FFI to MXNet https://hackage.haskell.org/package/fei-base-1.0.0 (JiasenWu)
2020-12-20 20:45:59 +0100cosimone(~cosimone@2001:b07:ae5:db26:1fb3:ef3f:ece2:c6f8)
2020-12-20 20:46:51 +0100cosimone(~cosimone@2001:b07:ae5:db26:1fb3:ef3f:ece2:c6f8) (Remote host closed the connection)
2020-12-20 20:47:46 +0100cosimone(~cosimone@93-47-228-249.ip115.fastwebnet.it)
2020-12-20 20:47:46 +0100cosimone(~cosimone@93-47-228-249.ip115.fastwebnet.it) (Read error: Connection reset by peer)
2020-12-20 20:48:19 +0100cosimone(~cosimone@2001:b07:ae5:db26:1fb3:ef3f:ece2:c6f8)
2020-12-20 20:49:33 +0100 <__monty__> There goes my brilliant idea of grouping all these pesky imports in a helper module.
2020-12-20 20:51:37 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2020-12-20 20:55:02 +0100Mikagami(~MOSCOS@122.54.107.175) (Remote host closed the connection)
2020-12-20 20:55:25 +0100Mikagami(~MOSCOS@122.54.107.175)
2020-12-20 20:55:27 +0100hnOsmium0001(uid453710@gateway/web/irccloud.com/x-htmytuyleznwkrop)
2020-12-20 20:55:38 +0100kam1(~kam1@24.231.108.143) (Ping timeout: 272 seconds)
2020-12-20 20:55:38 +0100cr3(~cr3@192-222-143-195.qc.cable.ebox.net) (Ping timeout: 272 seconds)
2020-12-20 20:56:46 +0100kam1(~kam1@24.231.108.143)
2020-12-20 20:59:48 +0100sord937(~sord937@gateway/tor-sasl/sord937) (Quit: sord937)
2020-12-20 21:02:19 +0100ADG1089_(~adg1089@171.76.183.207)
2020-12-20 21:03:04 +0100ADG1089_(~adg1089@171.76.183.207) (Read error: Connection reset by peer)
2020-12-20 21:03:22 +0100juuandyy(~juuandyy@90.166.144.65)
2020-12-20 21:04:26 +0100Tario(~Tario@201.192.165.173) (Read error: Connection reset by peer)
2020-12-20 21:05:41 +0100cr3(~cr3@192-222-143-195.qc.cable.ebox.net)
2020-12-20 21:06:51 +0100Welkin(~Welkin@216.243.35.47)
2020-12-20 21:10:20 +0100bliminse(~bliminse@host109-158-129-129.range109-158.btcentralplus.com)
2020-12-20 21:12:22 +0100 <shapr> When my attoparsec parsers are failing, I wish I could magically produce legal values that the parser would accept
2020-12-20 21:12:23 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 260 seconds)
2020-12-20 21:14:18 +0100howdoi(uid224@gateway/web/irccloud.com/x-jjzeflqmmqjznsli) (Quit: Connection closed for inactivity)
2020-12-20 21:14:25 +0100Varis(~Tadas@unaffiliated/varis) (Ping timeout: 240 seconds)
2020-12-20 21:14:41 +0100mputz(~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de)
2020-12-20 21:15:25 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:2570:8bc6:6048:3a26) (Remote host closed the connection)
2020-12-20 21:15:58 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:2570:8bc6:6048:3a26)
2020-12-20 21:20:26 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:2570:8bc6:6048:3a26) (Ping timeout: 264 seconds)
2020-12-20 21:20:50 +0100kritzefitz(~kritzefit@212.86.56.80)
2020-12-20 21:21:06 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:2570:8bc6:6048:3a26)
2020-12-20 21:22:07 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:2570:8bc6:6048:3a26) (Remote host closed the connection)
2020-12-20 21:23:27 +0100fendor(~fendor@77.119.130.63.wireless.dyn.drei.com) (Remote host closed the connection)
2020-12-20 21:24:00 +0100heatsink(~heatsink@2600:1700:bef1:5e10:7482:9511:22c:1523) (Remote host closed the connection)
2020-12-20 21:24:46 +0100kupi(uid212005@gateway/web/irccloud.com/x-rilypanikbjfexcy)
2020-12-20 21:25:30 +0100hackagefei-nn 1.0.0 - Train a neural network with MXNet in Haskell. https://hackage.haskell.org/package/fei-nn-1.0.0 (JiasenWu)
2020-12-20 21:26:16 +0100 <ezzieyguywuf> is there a tool that automatically creates dependency lower/upper bounds for your project based on what's currently available?
2020-12-20 21:26:33 +0100 <ezzieyguywuf> I've seen enough 'pretty' .cabal files to think some folks are using this to creating a starting point...
2020-12-20 21:27:07 +0100 <merijn> ezzieyguywuf: "cabal init" inserts them by default and then there's cabal-fmt
2020-12-20 21:27:26 +0100 <merijn> ezzieyguywuf: Also, what do you mean by "currently available"?
2020-12-20 21:27:37 +0100 <kupi> in quickcheck "not (null xs) ==> not (null ys) ==> ..." is the same as "not (null xs) && not (null ys)"?
2020-12-20 21:27:40 +0100 <dolio> What is it expected to do? Just assume that your stuff will work with any possible version that exists?
2020-12-20 21:28:01 +0100mmsari(~Thunderbi@46.1.240.163)
2020-12-20 21:28:14 +0100 <merijn> ezzieyguywuf: The only *sensible* way to do things is to start all your dependencies with ^>= current latest version
2020-12-20 21:28:20 +0100 <ezzieyguywuf> merijn: hrm, i.e. if I have `somePackage >= 0.1 && < 0.2' that I created last year, and since then `somePackage` has updated to v1.5, it would just bump tho upper-bound
2020-12-20 21:28:22 +0100 <merijn> So if the latest version of foo is 1.2.1
2020-12-20 21:28:38 +0100 <merijn> You start with "foo ^>= 1.2.1" (i.e. everything PVP compatible with 1.2.1
2020-12-20 21:28:39 +0100 <ezzieyguywuf> in the background (b/c I don't pay attention to cabal output), I've been using newer versions as they release without knowing it, without issue
2020-12-20 21:28:47 +0100 <merijn> And then you relax as new versions of foo are released
2020-12-20 21:29:07 +0100 <merijn> ezzieyguywuf: Are your packages on Hackage or just local?
2020-12-20 21:29:12 +0100 <dolio> I think the real answer is that updating these bounds is an insignificant amount of work for most people, despite all the complaining that gets done.
2020-12-20 21:29:14 +0100 <ezzieyguywuf> merijn: just local for now.
2020-12-20 21:29:40 +0100 <merijn> ezzieyguywuf: Then I'd just use ^>= with whatever version you are using *now* and then only update/relax them when needed, tbh
2020-12-20 21:29:52 +0100 <ezzieyguywuf> dolio: I agree, insignificant amount of work, but keeping up with it seems error-prone
2020-12-20 21:30:00 +0100 <ezzieyguywuf> merijn: thanks for your thoughts!
2020-12-20 21:30:05 +0100 <ezzieyguywuf> I think I want to check out cabal-fmt too
2020-12-20 21:30:12 +0100 <ezzieyguywuf> is that bundled with cabal or separate?
2020-12-20 21:30:32 +0100 <merijn> For hackage released packages packdeps provides an RSS feed when your dependencies release a newer version
2020-12-20 21:30:35 +0100 <ski> kupi : should be, if you mean ` ==> ...' at the end of the latter
2020-12-20 21:30:38 +0100 <merijn> ezzieyguywuf: It's a separate tool
2020-12-20 21:30:47 +0100 <ezzieyguywuf> gotcha, I'll check it out thank you
2020-12-20 21:31:00 +0100 <kupi> ski: thanks, I meant that
2020-12-20 21:31:27 +0100 <ski> kupi : may be better to generate non-empty lists, rather than filter, though
2020-12-20 21:31:52 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:2570:8bc6:6048:3a26)
2020-12-20 21:32:08 +0100 <kupi> ski: what guide do you recommend? i got that code from "real world haskell"
2020-12-20 21:33:00 +0100juuandyy(~juuandyy@90.166.144.65) (Quit: Konversation terminated!)
2020-12-20 21:35:16 +0100fendor(~fendor@77.119.130.63.wireless.dyn.drei.com)
2020-12-20 21:35:29 +0100hackagefei-cocoapi 1.0.0 - Cocodataset with cocoapi https://hackage.haskell.org/package/fei-cocoapi-1.0.0 (JiasenWu)
2020-12-20 21:36:41 +0100 <ski> @check \(NonEmpty xs) -> length xs > 0
2020-12-20 21:36:44 +0100 <lambdabot> +++ OK, passed 100 tests.
2020-12-20 21:36:47 +0100grumbleSeasonsBeatings
2020-12-20 21:36:57 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:2570:8bc6:6048:3a26) (Ping timeout: 268 seconds)
2020-12-20 21:37:22 +0100 <ski> kupi : instead of `propFoo xs ys = not (null xs) && not (null ys) ==> ..xs..ys..', try `propFoo (NonEmpty xs) (NonEmpty ys) = ..xs..ys..'
2020-12-20 21:41:36 +0100jesssandy-claws
2020-12-20 21:42:42 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:2570:8bc6:6048:3a26)
2020-12-20 21:42:43 +0100gxt(~gxt@gateway/tor-sasl/gxt) (Ping timeout: 240 seconds)
2020-12-20 21:43:17 +0100xcmw(~textual@2603-6011-2200-f103-cdbc-9ec6-8319-9dc9.res6.spectrum.com)
2020-12-20 21:44:00 +0100hackagefei-datasets 1.0.0 - Some datasets https://hackage.haskell.org/package/fei-datasets-1.0.0 (JiasenWu)
2020-12-20 21:44:34 +0100Tario(~Tario@201.192.165.173)
2020-12-20 21:46:46 +0100Jesin(~Jesin@pool-72-66-101-18.washdc.fios.verizon.net) (Quit: Leaving)
2020-12-20 21:46:49 +0100texasmyn_(~texasmyns@185.232.22.12)
2020-12-20 21:47:27 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:2570:8bc6:6048:3a26) (Ping timeout: 272 seconds)
2020-12-20 21:48:03 +0100mounty(~mounty@210.1.196.133) (Ping timeout: 268 seconds)
2020-12-20 21:49:25 +0100texasmynsted(~texasmyns@184.75.212.155) (Ping timeout: 240 seconds)
2020-12-20 21:50:27 +0100heatsink(~heatsink@2600:1700:bef1:5e10:7482:9511:22c:1523)
2020-12-20 21:51:21 +0100Varis(~Tadas@unaffiliated/varis)
2020-12-20 21:51:29 +0100hackagefei-modelzoo 1.0.0 - A collection of standard models https://hackage.haskell.org/package/fei-modelzoo-1.0.0 (JiasenWu)
2020-12-20 21:51:32 +0100Franciman(~francesco@host-82-49-79-73.retail.telecomitalia.it) (Quit: Leaving)
2020-12-20 21:55:53 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:a104:aab:2310:b4f0) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-12-20 21:56:00 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2020-12-20 21:57:35 +0100kritzefitz(~kritzefit@212.86.56.80) (Remote host closed the connection)
2020-12-20 21:58:32 +0100nowhere_man(~pierre@2a01:e0a:3c7:60d0:e88f:4e24:f6a7:f155)
2020-12-20 21:59:13 +0100nhs(~nhs@c-67-180-177-103.hsd1.ca.comcast.net) (Quit: Lost terminal)
2020-12-20 22:00:07 +0100danvet(~Daniel@2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa) (Ping timeout: 272 seconds)
2020-12-20 22:00:43 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 256 seconds)
2020-12-20 22:02:11 +0100texasmyn_texasmynsted
2020-12-20 22:02:18 +0100heatsink(~heatsink@2600:1700:bef1:5e10:7482:9511:22c:1523) (Remote host closed the connection)
2020-12-20 22:02:42 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:2570:8bc6:6048:3a26)
2020-12-20 22:07:32 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:2570:8bc6:6048:3a26) (Ping timeout: 260 seconds)
2020-12-20 22:09:34 +0100kam1(~kam1@24.231.108.143) (Ping timeout: 260 seconds)
2020-12-20 22:09:45 +0100Jesin(~Jesin@pool-72-66-101-18.washdc.fios.verizon.net)
2020-12-20 22:11:26 +0100vicfred(~vicfred@unaffiliated/vicfred)
2020-12-20 22:11:32 +0100_ht(~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection)
2020-12-20 22:12:34 +0100patrickp(~patrickp@windows98.dev) ("Shuting down...")
2020-12-20 22:14:00 +0100hackagefei-examples 1.0.0 - fei examples https://hackage.haskell.org/package/fei-examples-1.0.0 (JiasenWu)
2020-12-20 22:16:50 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2020-12-20 22:17:16 +0100sillyotter(~sillyotte@2603-6011-ba0f-f7c5-d829-28ce-3e6e-7c4d.res6.spectrum.com)
2020-12-20 22:18:03 +0100sillyotter(~sillyotte@2603-6011-ba0f-f7c5-d829-28ce-3e6e-7c4d.res6.spectrum.com) (Client Quit)
2020-12-20 22:22:30 +0100hackageintricacy 0.8.0.1 - A game of competitive puzzle-design https://hackage.haskell.org/package/intricacy-0.8.0.1 (mbays)
2020-12-20 22:22:56 +0100 <hpc> ^ is a pretty cool package
2020-12-20 22:23:09 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:2570:8bc6:6048:3a26)
2020-12-20 22:24:28 +0100Lord_of_Life(~Lord@unaffiliated/lord-of-life/x-0885362) (Excess Flood)
2020-12-20 22:24:49 +0100xff0x_(~fox@2001:1a81:533f:8600:4230:b097:b97e:1a3d) (Ping timeout: 272 seconds)
2020-12-20 22:25:15 +0100xff0x_(~fox@2001:1a81:533f:8600:e255:a04c:45e:d69f)
2020-12-20 22:25:22 +0100Lord_of_Life(~Lord@unaffiliated/lord-of-life/x-0885362)
2020-12-20 22:26:22 +0100 <Uniaika> kewl
2020-12-20 22:26:36 +0100xcmw(~textual@2603-6011-2200-f103-cdbc-9ec6-8319-9dc9.res6.spectrum.com) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-12-20 22:27:00 +0100 <lyxia> sounds amazing
2020-12-20 22:27:57 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:2570:8bc6:6048:3a26) (Ping timeout: 260 seconds)
2020-12-20 22:31:47 +0100geekosaur(ae68c070@cpe-174-104-192-112.neo.res.rr.com) (Remote host closed the connection)
2020-12-20 22:34:56 +0100dwt(~dwt@c-98-200-58-177.hsd1.tx.comcast.net) (Ping timeout: 256 seconds)
2020-12-20 22:36:43 +0100elfets(~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de)
2020-12-20 22:38:52 +0100PowerOf2Squarism
2020-12-20 22:39:05 +0100aenesidemus(~aenesidem@c-73-53-247-25.hsd1.fl.comcast.net)
2020-12-20 22:39:49 +0100sfvm(~sfvm@37.228.215.77)
2020-12-20 22:42:13 +0100dave_uy(~david@108.61.193.26) (Quit: Ping timeout (120 seconds))
2020-12-20 22:42:45 +0100dave_uy(~david@108.61.193.26)
2020-12-20 22:42:47 +0100Tario(~Tario@201.192.165.173) (Read error: Connection reset by peer)
2020-12-20 22:42:59 +0100Tario(~Tario@201.192.165.173)
2020-12-20 22:43:14 +0100christo(~chris@81.96.113.213) (Remote host closed the connection)
2020-12-20 22:44:00 +0100christo(~chris@81.96.113.213)
2020-12-20 22:44:58 +0100ddellacosta(dd@gateway/vpn/mullvad/ddellacosta) (Quit: WeeChat 2.8)
2020-12-20 22:47:00 +0100kik1(~kik1@195.140.213.38) (Remote host closed the connection)
2020-12-20 22:47:49 +0100GuerrillaMonkey(~Jeanne-Ka@104.129.24.243)
2020-12-20 22:48:49 +0100christo(~chris@81.96.113.213) (Ping timeout: 264 seconds)
2020-12-20 22:49:40 +0100bliminse(~bliminse@host109-158-129-129.range109-158.btcentralplus.com) (Ping timeout: 256 seconds)
2020-12-20 22:49:45 +0100stef204(~stef204@unaffiliated/stef-204/x-384198) (Quit: WeeChat 2.9)
2020-12-20 22:50:24 +0100Jeanne-Kamikaze(~Jeanne-Ka@66.115.189.189) (Ping timeout: 260 seconds)
2020-12-20 22:52:28 +0100ddellacosta(dd@gateway/vpn/mullvad/ddellacosta)
2020-12-20 22:59:43 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2020-12-20 23:00:03 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-12-20 23:02:47 +0100takuan(~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
2020-12-20 23:04:29 +0100tabemann_(~tabemann@2600:1700:7990:24e0:62a5:b954:91f8:80f6)
2020-12-20 23:04:52 +0100mounty(~mounty@2001:8000:2f59:0:353e:aa93:586e:e169)
2020-12-20 23:09:19 +0100Varis(~Tadas@unaffiliated/varis) (Remote host closed the connection)
2020-12-20 23:14:48 +0100heatsink(~heatsink@2600:1700:bef1:5e10:7482:9511:22c:1523)
2020-12-20 23:15:05 +0100pavonia(~user@unaffiliated/siracusa)
2020-12-20 23:17:37 +0100natechan(~natechan@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Quit: WeeChat 2.9)
2020-12-20 23:29:26 +0100Varis(~Tadas@unaffiliated/varis)
2020-12-20 23:29:45 +0100christo(~chris@81.96.113.213)
2020-12-20 23:31:02 +0100fengh(~haskeller@ip72-205-40-121.dc.dc.cox.net)
2020-12-20 23:31:44 +0100boxscape(4ff0ba59@gateway/web/cgi-irc/kiwiirc.com/ip.79.240.186.89) (Quit: Connection closed)
2020-12-20 23:34:03 +0100dashbourn(~dashbourn@cpc1-sprt3-2-0-cust195.17-2.cable.virginm.net)
2020-12-20 23:36:17 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net)
2020-12-20 23:39:02 +0100stass(~stas@2a00:13c0:63:7195::beef)
2020-12-20 23:39:20 +0100olligobber(~olligobbe@unaffiliated/olligobber)
2020-12-20 23:39:37 +0100Guest_99(51aa27b6@81.170.39.182)
2020-12-20 23:40:16 +0100knupfer(~Thunderbi@mue-88-130-61-068.dsl.tropolys.de) (Ping timeout: 240 seconds)
2020-12-20 23:40:27 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:2570:8bc6:6048:3a26)
2020-12-20 23:40:32 +0100stass(~stas@2a00:13c0:63:7195::beef) (Client Quit)
2020-12-20 23:40:36 +0100Guest_99(51aa27b6@81.170.39.182) (Remote host closed the connection)
2020-12-20 23:41:24 +0100stass(~stas@2a00:13c0:63:7195::beef)
2020-12-20 23:42:10 +0100fendor(~fendor@77.119.130.63.wireless.dyn.drei.com) (Remote host closed the connection)
2020-12-20 23:44:01 +0100Tops2(~Tobias@dyndsl-095-033-023-074.ewe-ip-backbone.de) (Read error: Connection reset by peer)
2020-12-20 23:45:43 +0100 <__monty__> Did I imagine you can "stack" guard syntax? `| condition1 | sndCondition1 = foo\n<indentation>| sndCondition2 = bar\n| condition2 = baz`?
2020-12-20 23:46:12 +0100 <dminuoso> __monty__: use commas
2020-12-20 23:47:01 +0100 <__monty__> dminuoso: But then I have to repeat condition1.
2020-12-20 23:47:23 +0100mouseghost(~draco@wikipedia/desperek) (Quit: mew wew)
2020-12-20 23:47:51 +0100 <lyxia> right you can't do that
2020-12-20 23:49:14 +0100 <__monty__> Not even with an extension? Can someone please turn my dreams into an extension? Thank you kindly.
2020-12-20 23:50:51 +0100dashbourn(~dashbourn@cpc1-sprt3-2-0-cust195.17-2.cable.virginm.net) ()
2020-12-20 23:51:56 +0100 <dminuoso> __monty__: The closest trick you can do is use a helper let binding.
2020-12-20 23:51:58 +0100 <dminuoso> f | c1 = let g | s1 = ...; | s2 = ...; in g
2020-12-20 23:52:04 +0100 <dminuoso> Or equivalently with case-of
2020-12-20 23:52:27 +0100 <dminuoso> e.g. f | x1 = case () of _ | s1 = ...; | s2 = ...;
2020-12-20 23:53:13 +0100 <dminuoso> Or, with MultiWayIf I suppose
2020-12-20 23:53:23 +0100 <__monty__> Ok, thanks.
2020-12-20 23:54:46 +0100boxscape(4ff0ba59@gateway/web/cgi-irc/kiwiirc.com/ip.79.240.186.89)
2020-12-20 23:55:07 +0100vfaronov(~vfaronov@broadband-95-84-210-78.ip.moscow.rt.ru) (Quit: vfaronov)
2020-12-20 23:58:35 +0100GuerrillaMonkey(~Jeanne-Ka@104.129.24.243) (Quit: Leaving)