Home freenode/#haskell: Logs Calendar

Logs on 2020-12-20 (freenode/#haskell)

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

All times are in UTC on 2020-12-20.