2020/11/24

2020-11-24 00:02:28 +0100hiroaki(~hiroaki@ip4d168e73.dynamic.kabel-deutschland.de) (Ping timeout: 256 seconds)
2020-11-24 00:03:27 +0100darjeeling_(~darjeelin@122.245.219.209) (Ping timeout: 265 seconds)
2020-11-24 00:04:28 +0100Lycurgus(~niemand@98.4.114.74) (Quit: Exeunt)
2020-11-24 00:04:44 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2020-11-24 00:05:11 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2020-11-24 00:06:23 +0100gehmehgeh(~ircuser1@gateway/tor-sasl/gehmehgeh) (Ping timeout: 240 seconds)
2020-11-24 00:08:00 +0100hackagezeolite-lang 0.9.0.0 - Zeolite is a statically-typed, general-purpose programming language. https://hackage.haskell.org/package/zeolite-lang-0.9.0.0 (ta0kira)
2020-11-24 00:08:08 +0100Kaeipi(~Kaiepi@nwcsnbsc03w-47-55-225-82.dhcp-dynamic.fibreop.nb.bellaliant.net) (Ping timeout: 256 seconds)
2020-11-24 00:10:05 +0100mputz(~Thunderbi@dslb-084-058-211-084.084.058.pools.vodafone-ip.de) (Ping timeout: 240 seconds)
2020-11-24 00:10:17 +0100jneira(02896ac0@gateway/web/cgi-irc/kiwiirc.com/ip.2.137.106.192) (Ping timeout: 260 seconds)
2020-11-24 00:10:18 +0100gehmehgeh(~ircuser1@gateway/tor-sasl/gehmehgeh)
2020-11-24 00:11:10 +0100Kaiepi(~Kaiepi@nwcsnbsc03w-47-55-225-82.dhcp-dynamic.fibreop.nb.bellaliant.net)
2020-11-24 00:12:10 +0100frdg(~nick@pool-71-184-143-249.bstnma.fios.verizon.net)
2020-11-24 00:12:13 +0100frdg(~nick@pool-71-184-143-249.bstnma.fios.verizon.net) ()
2020-11-24 00:15:18 +0100_linker_(~linker@2a02:a31a:a041:9a80:1550:ab25:bf6f:9a3a) (Remote host closed the connection)
2020-11-24 00:15:37 +0100pavonia(~user@unaffiliated/siracusa)
2020-11-24 00:17:16 +0100mirrorbird(~psutcliff@89.45.7.132) (Quit: Leaving)
2020-11-24 00:17:17 +0100Tario(~Tario@201.192.165.173) (Read error: Connection reset by peer)
2020-11-24 00:17:48 +0100darjeeling_(~darjeelin@122.245.219.209)
2020-11-24 00:19:23 +0100Tario(~Tario@201.192.165.173)
2020-11-24 00:19:31 +0100hackagebitvec 1.1.0.0 - Space-efficient bit vectors https://hackage.haskell.org/package/bitvec-1.1.0.0 (Bodigrim)
2020-11-24 00:19:38 +0100son0p(~son0p@181.136.122.143) (Quit: Lost terminal)
2020-11-24 00:21:39 +0100e2(e2@sponsored.by.bnc4you.xyz)
2020-11-24 00:22:50 +0100terrorjack(~terrorjac@static.23.111.201.195.clients.your-server.de) (Ping timeout: 264 seconds)
2020-11-24 00:29:32 +0100Tuplanolla(~Tuplanoll@91-159-68-239.elisa-laajakaista.fi) (Quit: Leaving.)
2020-11-24 00:29:36 +0100conal(~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
2020-11-24 00:31:41 +0100rednaZ2(rednaZ2@freebnc.bnc4you.xyz)
2020-11-24 00:33:13 +0100justan0theruser(~justanoth@unaffiliated/justanotheruser) (Ping timeout: 264 seconds)
2020-11-24 00:33:27 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-11-24 00:33:27 +0100chkno(~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net) (Read error: Connection reset by peer)
2020-11-24 00:33:49 +0100cads(~cads@ip-64-72-99-232.lasvegas.net)
2020-11-24 00:34:08 +0100chkno(~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net)
2020-11-24 00:36:38 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2020-11-24 00:36:38 +0100chkno(~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net) (Read error: Connection reset by peer)
2020-11-24 00:37:26 +0100 <sondr3> I'm having some trouble with a parser I'm writing, I want it to parse a multiline string until it either reaches EOF or a specific text. I have been able to get one or the other but not a parser that does both
2020-11-24 00:38:10 +0100 <sondr3> I got some help earlier and have `T.pack <$> someTill anySingle (lookAhead (string b) <|> string ("\n" <> b))`, but this fails if the string ends with EOF
2020-11-24 00:38:24 +0100 <sondr3> And I've been looking at my code for too long now :P
2020-11-24 00:38:27 +0100 <sondr3> ;;;;;
2020-11-24 00:38:54 +0100 <sondr3> bah, sorry, getting used to Colemak and Moonlander at the same time
2020-11-24 00:39:08 +0100chkno(~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net)
2020-11-24 00:40:16 +0100 <monochrom> I would not use most parser combinator libraries for "anything at all except until this specific string" (unless that specific string is one single character)
2020-11-24 00:40:48 +0100Kaeipi(~Kaiepi@nwcsnbsc03w-47-55-225-82.dhcp-dynamic.fibreop.nb.bellaliant.net)
2020-11-24 00:40:55 +0100Kaiepi(~Kaiepi@nwcsnbsc03w-47-55-225-82.dhcp-dynamic.fibreop.nb.bellaliant.net) (Read error: Connection reset by peer)
2020-11-24 00:42:13 +0100hekkaidekapus_(~tchouri@gateway/tor-sasl/hekkaidekapus)
2020-11-24 00:43:09 +0100 <monochrom> A minority of parser combinator libraries feature non-determinism for ambiguous grammars, at the expense of speed. Those would be a good fit.
2020-11-24 00:43:43 +0100hekkaidekapus(~tchouri@gateway/tor-sasl/hekkaidekapus) (Ping timeout: 240 seconds)
2020-11-24 00:46:50 +0100wonko7(~wonko7@2a01:e35:2ffb:7040:55f1:c3a3:cdbe:bf52) (Ping timeout: 264 seconds)
2020-11-24 00:47:44 +0100vicfred_(~vicfred@unaffiliated/vicfred) (Quit: Leaving)
2020-11-24 00:48:01 +0100 <sondr3> monochrom: do you happen to know hw
2020-11-24 00:48:03 +0100justan0theruser(~justanoth@unaffiliated/justanotheruser)
2020-11-24 00:48:10 +0100cosimone(~cosimone@5.170.241.60) (Quit: cosimone)
2020-11-24 00:48:21 +0100 <sondr3> *how I'd get the rest of the input from megaparsec?
2020-11-24 00:48:59 +0100vicfred(~vicfred@unaffiliated/vicfred)
2020-11-24 00:49:50 +0100 <sondr3> looks like I might be able to use getInput and friends
2020-11-24 00:50:00 +0100vicfred(~vicfred@unaffiliated/vicfred) (Max SendQ exceeded)
2020-11-24 00:50:31 +0100vicfred(~vicfred@unaffiliated/vicfred)
2020-11-24 00:50:40 +0100Chi1thangoo(~Chi1thang@87.112.60.168)
2020-11-24 00:50:53 +0100elfets(~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de) (Read error: Connection reset by peer)
2020-11-24 00:53:44 +0100gehmehgeh(~ircuser1@gateway/tor-sasl/gehmehgeh) (Quit: Leaving)
2020-11-24 00:54:18 +0100rednaZ2(rednaZ2@freebnc.bnc4you.xyz) (Quit: ZNC from ##bnc4you)
2020-11-24 00:56:27 +0100redmp(~redmp@mobile-166-137-178-102.mycingular.net) (Quit: leaving)
2020-11-24 00:57:19 +0100 <sm[m]> hey friends.. what's the function f [a] that is equivalent to a <|> a <|> a <|> ... ?
2020-11-24 00:58:20 +0100 <hpc> foldr1 (<|>)?
2020-11-24 00:58:21 +0100 <hpc> ;)
2020-11-24 00:58:44 +0100resolve(~resolve@178.162.212.214) (Remote host closed the connection)
2020-11-24 00:59:34 +0100terrorjack(~terrorjac@static.23.111.201.195.clients.your-server.de)
2020-11-24 00:59:38 +0100cosimone(~cosimone@5.170.241.60)
2020-11-24 01:00:34 +0100conal(~conal@64.71.133.70)
2020-11-24 01:01:00 +0100zargoertzel(~zar@fw1.ciirc.cvut.cz)
2020-11-24 01:01:28 +0100christo(~chris@81.96.113.213) (Remote host closed the connection)
2020-11-24 01:02:36 +0100 <sm[m]> hpc: seems to work, thanks! :)
2020-11-24 01:03:27 +0100TMA(tma@twin.jikos.cz) (Ping timeout: 260 seconds)
2020-11-24 01:03:35 +0100 <dibblego> asum1 ?
2020-11-24 01:03:38 +0100dqd(id@wikipedia/dqd) (Ping timeout: 260 seconds)
2020-11-24 01:03:43 +0100conal(~conal@64.71.133.70) (Client Quit)
2020-11-24 01:03:49 +0100dqd(id@wikipedia/dqd)
2020-11-24 01:03:52 +0100zariuq(~zar@fw1.ciirc.cvut.cz) (Ping timeout: 265 seconds)
2020-11-24 01:03:55 +0100 <hpc> you probably want to figure out what to do if the list is empty
2020-11-24 01:03:57 +0100 <dibblego> https://hackage.haskell.org/package/semigroupoids-5.3.4/docs/Data-Semigroup-Foldable.html#v:asum1
2020-11-24 01:04:00 +0100Jajik5(xchlup2@gateway/shell/fi.muni.cz/x-vdbyvqtkyzprkqtm)
2020-11-24 01:04:01 +0100xsarnik07(xsarnik@gateway/shell/fi.muni.cz/x-oexkuqwsplkbdfos)
2020-11-24 01:04:13 +0100Jajik(xchlup2@gateway/shell/fi.muni.cz/x-jfxvsfpdsqpqvolb) (Ping timeout: 260 seconds)
2020-11-24 01:04:13 +0100xsarnik0(xsarnik@gateway/shell/fi.muni.cz/x-hqlptmwsqmanredt) (Ping timeout: 260 seconds)
2020-11-24 01:04:13 +0100ziman(~ziman@c25-5.condornet.sk) (Ping timeout: 260 seconds)
2020-11-24 01:04:14 +0100Jajik5Jajik
2020-11-24 01:04:14 +0100xsarnik07xsarnik0
2020-11-24 01:04:18 +0100xsarnik0(xsarnik@gateway/shell/fi.muni.cz/x-oexkuqwsplkbdfos) (Remote host closed the connection)
2020-11-24 01:04:18 +0100Jajik(xchlup2@gateway/shell/fi.muni.cz/x-vdbyvqtkyzprkqtm) (Remote host closed the connection)
2020-11-24 01:04:57 +0100TMA(tma@twin.jikos.cz)
2020-11-24 01:05:21 +0100Sarma(~Amras@unaffiliated/amras0000) (Ping timeout: 272 seconds)
2020-11-24 01:05:24 +0100ziman(~ziman@c25-5.condornet.sk)
2020-11-24 01:05:33 +0100 <hpc> oh wait, empty is in Alternative...
2020-11-24 01:05:45 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
2020-11-24 01:05:54 +0100hpchas used up all his smart for the day
2020-11-24 01:06:43 +0100christo(~chris@81.96.113.213)
2020-11-24 01:07:18 +0100frdg(47b88ff9@pool-71-184-143-249.bstnma.fios.verizon.net)
2020-11-24 01:08:00 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds)
2020-11-24 01:09:01 +0100justan0theruserjustanotheruser
2020-11-24 01:10:28 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 256 seconds)
2020-11-24 01:10:41 +0100frdg(47b88ff9@pool-71-184-143-249.bstnma.fios.verizon.net) (Remote host closed the connection)
2020-11-24 01:10:56 +0100christo(~chris@81.96.113.213) (Ping timeout: 240 seconds)
2020-11-24 01:13:52 +0100niko(~niko@freenode/staff/ubuntu.member.niko) (Ping timeout: 615 seconds)
2020-11-24 01:14:00 +0100 <sm[m]> I'm writing a shortest-path function, doing a breadth-first search of a directed graph. Man, I always struggle to put together these recursive searchy functions
2020-11-24 01:14:43 +0100 <sm[m]> (replacing fgl's sp which isn't doing what I want)
2020-11-24 01:15:15 +0100oisdk(~oisdk@2001:bb6:3329:d100:188f:f126:4321:8fc1)
2020-11-24 01:15:57 +0100 <c_wraith> is the graph cyclic?
2020-11-24 01:16:16 +0100Kaeipi(~Kaiepi@nwcsnbsc03w-47-55-225-82.dhcp-dynamic.fibreop.nb.bellaliant.net) (Read error: No route to host)
2020-11-24 01:16:25 +0100Kaeipi(~Kaiepi@nwcsnbsc03w-47-55-225-82.dhcp-dynamic.fibreop.nb.bellaliant.net)
2020-11-24 01:17:27 +0100pfurla(~pfurla@ool-182ed2e2.dyn.optonline.net) (Read error: Connection reset by peer)
2020-11-24 01:18:27 +0100pfurla(~pfurla@ool-182ed2e2.dyn.optonline.net)
2020-11-24 01:18:34 +0100christo(~chris@81.96.113.213)
2020-11-24 01:19:14 +0100jaqque1(~jaqque@s91904426.blix.com)
2020-11-24 01:20:57 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed)
2020-11-24 01:21:23 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2020-11-24 01:23:46 +0100 <sm[m]> c_wraith: eh.. yes
2020-11-24 01:25:44 +0100 <sm[m]> and thanks dibblego - that's the one I was looking for
2020-11-24 01:26:02 +0100 <sm[m]> https://hackage.haskell.org/package/base-4.14.0.0/docs/Data-Foldable.html#v:asum
2020-11-24 01:26:22 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 272 seconds)
2020-11-24 01:33:50 +0100Kaeipi(~Kaiepi@nwcsnbsc03w-47-55-225-82.dhcp-dynamic.fibreop.nb.bellaliant.net) (Remote host closed the connection)
2020-11-24 01:33:51 +0100mpereira(~mpereira@2a02:810d:f40:d96:1ca0:7a83:5454:b1ba) (Ping timeout: 272 seconds)
2020-11-24 01:34:02 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-11-24 01:34:11 +0100Jonkimi727406120(~Jonkimi@113.87.161.66)
2020-11-24 01:34:24 +0100Kaeipi(~Kaiepi@nwcsnbsc03w-47-55-225-82.dhcp-dynamic.fibreop.nb.bellaliant.net)
2020-11-24 01:36:52 +0100ian-mi(~ian_milli@2601:600:9c80:322d:fffc:f6e1:b33f:3002) (Ping timeout: 260 seconds)
2020-11-24 01:37:26 +0100cosimone(~cosimone@5.170.241.60) (Quit: cosimone)
2020-11-24 01:38:22 +0100ian-mi(~ian_milli@c-67-160-8-14.hsd1.wa.comcast.net)
2020-11-24 01:39:18 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2020-11-24 01:39:36 +0100Jeanne-Kamikaze(~Jeanne-Ka@iakosalt-94.nationalnet.com)
2020-11-24 01:39:50 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
2020-11-24 01:40:06 +0100xsarnik0(xsarnik@gateway/shell/fi.muni.cz/x-kphrwksnugmxbetf)
2020-11-24 01:40:22 +0100thc202(~thc202@unaffiliated/thc202) (Ping timeout: 260 seconds)
2020-11-24 01:41:38 +0100Varis(~Tadas@unaffiliated/varis) (Remote host closed the connection)
2020-11-24 01:42:42 +0100cr3(~cr3@192-222-143-195.qc.cable.ebox.net) (Ping timeout: 256 seconds)
2020-11-24 01:46:12 +0100Varis(~Tadas@unaffiliated/varis)
2020-11-24 01:46:23 +0100gxt(~gxt@gateway/tor-sasl/gxt) (Ping timeout: 240 seconds)
2020-11-24 01:46:42 +0100theorbtwo(~theorb@cpc81822-swin19-2-0-cust3.3-1.cable.virginm.net)
2020-11-24 01:47:29 +0100Deide(~Deide@217.155.19.23) (Quit: Seeee yaaaa)
2020-11-24 01:49:04 +0100gxt(~gxt@gateway/tor-sasl/gxt)
2020-11-24 01:52:22 +0100niko(~niko@freenode/staff/ubuntu.member.niko)
2020-11-24 01:52:31 +0100xsarnik0(xsarnik@gateway/shell/fi.muni.cz/x-kphrwksnugmxbetf) (Quit: The Lounge - https://thelounge.chat)
2020-11-24 01:55:53 +0100xsarnik0(xsarnik@gateway/shell/fi.muni.cz/x-bsiqubgdpcunmdtm)
2020-11-24 01:55:56 +0100Jajik(xchlup2@gateway/shell/fi.muni.cz/x-voulfkcwxssepppf)
2020-11-24 02:01:44 +0100da39a3ee5e6b4b0d(~da39a3ee5@171.5.161.165)
2020-11-24 02:01:47 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2020-11-24 02:03:15 +0100mpereira(~mpereira@2a02:810d:f40:d96:f587:a442:5e3:1e55)
2020-11-24 02:04:17 +0100Achylles(~Achylles@177.45.205.205) (Remote host closed the connection)
2020-11-24 02:06:49 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 264 seconds)
2020-11-24 02:07:50 +0100mpereira(~mpereira@2a02:810d:f40:d96:f587:a442:5e3:1e55) (Ping timeout: 264 seconds)
2020-11-24 02:08:55 +0100hekkaidekapus_hekkaidekapus
2020-11-24 02:09:10 +0100 <hekkaidekapus> sondr3: Still around?
2020-11-24 02:09:17 +0100 <sondr3> hekkaidekapus: yep
2020-11-24 02:10:23 +0100 <hekkaidekapus> Check out this: <https://paste.tomsmeding.com/o2idJSR9>
2020-11-24 02:11:07 +0100 <hekkaidekapus> The idea is to break down your big parser into small parsers.
2020-11-24 02:12:04 +0100 <sondr3> oh vey, this looks exactly like what I was asking him about earlier, must've completely missed it
2020-11-24 02:12:10 +0100 <hekkaidekapus> And try to be specific about what you want to parse, instead of a overly general `anySingle`.
2020-11-24 02:12:36 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-11-24 02:13:07 +0100 <hekkaidekapus> I left `anySingle` in the example but that should really be replaced by something more fitting to your input.
2020-11-24 02:14:26 +0100 <hekkaidekapus> By the way, the import declarations should give you enough indications of places where to go and read haddocks.
2020-11-24 02:14:35 +0100 <sondr3> I've been learning that a lot the last few days, haha, I'm just not very experienced with FP and monadic parsing
2020-11-24 02:15:13 +0100 <sondr3> Thanks a bunch for your example, I'll look at it in detail tomorrow when I'm more alive
2020-11-24 02:15:22 +0100 <hekkaidekapus> np
2020-11-24 02:15:39 +0100lambda-11235(~lambda-11@2600:1700:7c70:4600:6511:46eb:c421:ce43) (Ping timeout: 272 seconds)
2020-11-24 02:15:43 +0100superstar64(6ccefa7c@108-206-250-124.lightspeed.miamfl.sbcglobal.net) ()
2020-11-24 02:16:57 +0100 <sondr3> Looks a lot better than the monstrosity I've cooked together now x)
2020-11-24 02:20:23 +0100gxt(~gxt@gateway/tor-sasl/gxt) (Ping timeout: 240 seconds)
2020-11-24 02:24:10 +0100gxt(~gxt@gateway/tor-sasl/gxt)
2020-11-24 02:25:19 +0100cr3(~cr3@192-222-143-195.qc.cable.ebox.net)
2020-11-24 02:26:42 +0100sand_dull(~theuser@c-73-149-95-105.hsd1.ct.comcast.net)
2020-11-24 02:29:56 +0100darjeeling_(~darjeelin@122.245.219.209) (Ping timeout: 240 seconds)
2020-11-24 02:35:00 +0100Codaraxis_(~Codaraxis@ip68-5-90-227.oc.oc.cox.net)
2020-11-24 02:35:45 +0100Fractalis(~Fractalis@2601:987:280:8d40:eda9:f9e1:2072:cea7) (Quit: Have a good one all, im out!)
2020-11-24 02:36:36 +0100Lord_of_Life(~Lord@unaffiliated/lord-of-life/x-0885362) (Ping timeout: 240 seconds)
2020-11-24 02:36:56 +0100dftxbs3e(~dftxbs3e@unaffiliated/dftxbs3e)
2020-11-24 02:37:50 +0100Lord_of_Life(~Lord@46.217.222.157)
2020-11-24 02:39:01 +0100Codaraxis(~Codaraxis@91.193.4.61) (Ping timeout: 256 seconds)
2020-11-24 02:45:39 +0100LKoen(~LKoen@169.244.88.92.rev.sfr.net) (Quit: “It’s only logical. First you learn to talk, then you learn to think. Too bad it’s not the other way round.”)
2020-11-24 02:46:36 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
2020-11-24 02:50:03 +0100Sgeo(~Sgeo@ool-18b982ad.dyn.optonline.net) (Read error: Connection reset by peer)
2020-11-24 02:52:09 +0100Sgeo(~Sgeo@ool-18b982ad.dyn.optonline.net)
2020-11-24 02:57:56 +0100sondr3(~sondr3@cm-84.211.56.132.getinternet.no) (Quit: Leaving)
2020-11-24 02:57:57 +0100oisdk(~oisdk@2001:bb6:3329:d100:188f:f126:4321:8fc1) (Quit: oisdk)
2020-11-24 02:58:25 +0100m0rphism(~m0rphism@HSI-KBW-095-208-098-207.hsi5.kabel-badenwuerttemberg.de) (Ping timeout: 240 seconds)
2020-11-24 03:01:41 +0100wei2912(~wei2912@unaffiliated/wei2912)
2020-11-24 03:01:58 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2020-11-24 03:02:30 +0100jedws(~jedws@101.184.150.93)
2020-11-24 03:06:55 +0100gxt_(~gxt@gateway/tor-sasl/gxt)
2020-11-24 03:07:50 +0100electricityZZZZ(~electrici@108-216-157-17.lightspeed.sntcca.sbcglobal.net)
2020-11-24 03:08:16 +0100pie_(~pie_bnc]@unaffiliated/pie-/x-0787662) (Ping timeout: 240 seconds)
2020-11-24 03:08:16 +0100vancz(~vancz@unaffiliated/vancz) (Ping timeout: 240 seconds)
2020-11-24 03:09:43 +0100gxt(~gxt@gateway/tor-sasl/gxt) (Ping timeout: 240 seconds)
2020-11-24 03:10:08 +0100 <cads> Is it correct to think about monoids and applicatives as just linear categories internal to category Hask itself?
2020-11-24 03:11:04 +0100 <cads> Amd can we think of haskell type classes as kind of taking a total space that is hask, and fibering it down to these internal categories?
2020-11-24 03:12:26 +0100pie_(~pie_bnc]@unaffiliated/pie-/x-0787662)
2020-11-24 03:12:26 +0100vancz(~vancz@unaffiliated/vancz)
2020-11-24 03:12:33 +0100gentauro(~gentauro@unaffiliated/gentauro) (Ping timeout: 260 seconds)
2020-11-24 03:12:33 +0100tasuki(~tasuki@198.211.120.27) (Ping timeout: 260 seconds)
2020-11-24 03:13:03 +0100jonatanb(jonatanb@gateway/vpn/protonvpn/jonatanb)
2020-11-24 03:13:08 +0100lambdabot(~lambdabot@haskell/bot/lambdabot) (Ping timeout: 260 seconds)
2020-11-24 03:13:08 +0100RusAlex(~Chel@unaffiliated/rusalex) (Ping timeout: 260 seconds)
2020-11-24 03:14:23 +0100gentauro(~gentauro@unaffiliated/gentauro)
2020-11-24 03:14:29 +0100st8less(~st8less@2603:a060:11fd:0:b95c:25ed:47d7:d69f) (Remote host closed the connection)
2020-11-24 03:14:32 +0100tasuki(~tasuki@198.211.120.27)
2020-11-24 03:14:33 +0100lambdabot(~lambdabot@silicon.int-e.eu)
2020-11-24 03:14:33 +0100lambdabot(~lambdabot@silicon.int-e.eu) (Changing host)
2020-11-24 03:14:33 +0100lambdabot(~lambdabot@haskell/bot/lambdabot)
2020-11-24 03:14:46 +0100st8less(~st8less@2603:a060:11fd:0:bcc7:6823:7a5:d42)
2020-11-24 03:15:34 +0100RusAlex(~Chel@unaffiliated/rusalex)
2020-11-24 03:15:39 +0100 <cads> I guess the second question is really two question. i) is it a correct/effective process to take haskell and fiber it into type classes? ii) and can these fibers be related to categories and theories internal to hask
2020-11-24 03:15:57 +0100 <cads> to take hask and fiber it*
2020-11-24 03:17:43 +0100jonatanb(jonatanb@gateway/vpn/protonvpn/jonatanb) (Ping timeout: 272 seconds)
2020-11-24 03:21:20 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-11-24 03:23:00 +0100hackageaspell-pipe 0.6 - Pipe-based interface to the Aspell program https://hackage.haskell.org/package/aspell-pipe-0.6 (JonathanDaugherty)
2020-11-24 03:26:18 +0100toorevitimirp(~tooreviti@117.182.183.18)
2020-11-24 03:26:33 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
2020-11-24 03:27:04 +0100mpereira(~mpereira@2a02:810d:f40:d96:f587:a442:5e3:1e55)
2020-11-24 03:30:47 +0100conal(~conal@64.71.133.70)
2020-11-24 03:30:47 +0100conal(~conal@64.71.133.70) (Client Quit)
2020-11-24 03:30:52 +0100jonatanb(jonatanb@gateway/vpn/protonvpn/jonatanb)
2020-11-24 03:31:01 +0100borne(~fritjof@200116b864880200394a967dc8ef4e61.dip.versatel-1u1.de) (Ping timeout: 272 seconds)
2020-11-24 03:31:39 +0100mpereira(~mpereira@2a02:810d:f40:d96:f587:a442:5e3:1e55) (Ping timeout: 272 seconds)
2020-11-24 03:34:50 +0100xff0x(~fox@2001:1a81:5237:b800:aac7:5690:7e90:eba4) (Ping timeout: 264 seconds)
2020-11-24 03:35:34 +0100jonatanb(jonatanb@gateway/vpn/protonvpn/jonatanb) (Ping timeout: 272 seconds)
2020-11-24 03:36:19 +0100xff0x(~fox@2001:1a81:526f:8600:829e:8d:48d6:9a13)
2020-11-24 03:36:26 +0100conal(~conal@64.71.133.70)
2020-11-24 03:38:02 +0100conal(~conal@64.71.133.70) (Client Quit)
2020-11-24 03:41:27 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed)
2020-11-24 03:41:46 +0100cr3(~cr3@192-222-143-195.qc.cable.ebox.net) (Quit: leaving)
2020-11-24 03:41:52 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2020-11-24 03:44:36 +0100cads(~cads@ip-64-72-99-232.lasvegas.net) (Ping timeout: 240 seconds)
2020-11-24 03:45:48 +0100Stanley00(~stanley00@unaffiliated/stanley00)
2020-11-24 03:46:48 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 256 seconds)
2020-11-24 03:51:54 +0100acarrico(~acarrico@dhcp-68-142-39-249.greenmountainaccess.net) (Ping timeout: 256 seconds)
2020-11-24 03:52:22 +0100vollenweider_(~vollenwei@4e69b241.skybroadband.com) (Ping timeout: 246 seconds)
2020-11-24 03:53:32 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-11-24 03:54:37 +0100gxt_gxt
2020-11-24 03:58:02 +0100drbean(~drbean@TC210-63-209-58.static.apol.com.tw)
2020-11-24 04:11:58 +0100sand_dull(~theuser@c-73-149-95-105.hsd1.ct.comcast.net) (Quit: Reconnecting)
2020-11-24 04:12:11 +0100sand_dull(~theuser@c-73-149-95-105.hsd1.ct.comcast.net)
2020-11-24 04:14:24 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2020-11-24 04:15:45 +0100jonatanb(jonatanb@gateway/vpn/protonvpn/jonatanb)
2020-11-24 04:18:35 +0100urodna(~urodna@unaffiliated/urodna) (Quit: urodna)
2020-11-24 04:18:56 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 240 seconds)
2020-11-24 04:19:56 +0100jonatanb(jonatanb@gateway/vpn/protonvpn/jonatanb) (Ping timeout: 240 seconds)
2020-11-24 04:20:05 +0100conal(~conal@64.71.133.70)
2020-11-24 04:20:53 +0100Saukk(~Saukk@2001:998:f9:2914:1c59:9bb5:b94c:4)
2020-11-24 04:23:45 +0100phaul(~phaul@ruby/staff/phaul) (Ping timeout: 240 seconds)
2020-11-24 04:24:46 +0100phaul(~phaul@ruby/staff/phaul)
2020-11-24 04:25:54 +0100guest1124(~user@49.5.6.87)
2020-11-24 04:26:09 +0100falafel_(~falafel@2601:547:1303:b30:7811:313f:d0f3:f9f4)
2020-11-24 04:26:25 +0100da39a3ee5e6b4b0d(~da39a3ee5@171.5.161.165) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-11-24 04:27:36 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
2020-11-24 04:30:26 +0100Sheilong(uid293653@gateway/web/irccloud.com/x-lkssxccumhdupnut) ()
2020-11-24 04:37:16 +0100Codaraxis__(Codaraxis@gateway/vpn/mullvad/codaraxis)
2020-11-24 04:39:08 +0100cads(~cads@ip-64-72-99-232.lasvegas.net)
2020-11-24 04:40:08 +0100machinedgod(~machinedg@135-23-192-217.cpe.pppoe.ca) (Ping timeout: 256 seconds)
2020-11-24 04:41:23 +0100Codaraxis_(~Codaraxis@ip68-5-90-227.oc.oc.cox.net) (Ping timeout: 260 seconds)
2020-11-24 04:41:59 +0100lagothrix(~lagothrix@unaffiliated/lagothrix) (Killed (orwell.freenode.net (Nickname regained by services)))
2020-11-24 04:42:05 +0100lagothrix(~lagothrix@unaffiliated/lagothrix)
2020-11-24 04:42:34 +0100falafel_(~falafel@2601:547:1303:b30:7811:313f:d0f3:f9f4) (Remote host closed the connection)
2020-11-24 04:43:40 +0100falafel_(~falafel@2601:547:1303:b30:7811:313f:d0f3:f9f4)
2020-11-24 04:46:12 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2020-11-24 04:46:36 +0100theDon(~td@94.134.91.120) (Ping timeout: 240 seconds)
2020-11-24 04:47:53 +0100dolio(~dolio@haskell/developer/dolio) (Quit: ZNC 1.8.2 - https://znc.in)
2020-11-24 04:48:43 +0100theDon(~td@muedsl-82-207-238-223.citykom.de)
2020-11-24 04:50:57 +0100hidedagger(~nate@unaffiliated/hidedagger)
2020-11-24 04:51:08 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 260 seconds)
2020-11-24 04:51:19 +0100 <MarcelineVQ> good job, you who is reading this, great work today
2020-11-24 04:52:04 +0100dolio(~dolio@haskell/developer/dolio)
2020-11-24 04:54:42 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-11-24 04:56:15 +0100 <Axman6> @hoogle (a -> a -> a) -> Maybe a -> Maybe a -> Maybe a
2020-11-24 04:56:16 +0100 <lambdabot> Linear.Vector liftU2 :: Additive f => (a -> a -> a) -> f a -> f a -> f a
2020-11-24 04:56:16 +0100 <lambdabot> Data.Geometry liftU2 :: Additive f => (a -> a -> a) -> f a -> f a -> f a
2020-11-24 04:56:16 +0100 <lambdabot> Data.Geometry.Vector liftU2 :: Additive f => (a -> a -> a) -> f a -> f a -> f a
2020-11-24 04:56:21 +0100hidedagger(~nate@unaffiliated/hidedagger) (Quit: WeeChat 2.9)
2020-11-24 04:56:27 +0100lambda-11235(~lambda-11@2600:1700:7c70:4600:34e8:32b9:5cc3:48e6)
2020-11-24 04:57:00 +0100 <MarcelineVQ> liftA2
2020-11-24 04:57:46 +0100hexfive(~hexfive@50-47-142-195.evrt.wa.frontiernet.net) (Quit: i must go. my people need me.)
2020-11-24 04:57:49 +0100 <MarcelineVQ> taller cousin of liftA1, aka fmap
2020-11-24 04:59:32 +0100hexfive(~hexfive@50-47-142-195.evrt.wa.frontiernet.net)
2020-11-24 04:59:53 +0100 <Axman6> except I'm after the alternative version
2020-11-24 05:00:03 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
2020-11-24 05:00:08 +0100 <Axman6> apply the function if both exist, give me the one if one exists
2020-11-24 05:00:38 +0100falafel_(~falafel@2601:547:1303:b30:7811:313f:d0f3:f9f4) (Ping timeout: 264 seconds)
2020-11-24 05:01:17 +0100 <MarcelineVQ> \f x y ->litftA2 f x y <|> x <|> y :>
2020-11-24 05:01:25 +0100 <Axman6> yeah
2020-11-24 05:02:06 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2020-11-24 05:07:03 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 260 seconds)
2020-11-24 05:07:23 +0100plutoniix(~q@ppp-27-55-84-220.revip3.asianet.co.th)
2020-11-24 05:08:59 +0100vg(~vg@139.59.59.230)
2020-11-24 05:09:14 +0100vgTooDifficult
2020-11-24 05:10:56 +0100Tario(~Tario@201.192.165.173) (Ping timeout: 240 seconds)
2020-11-24 05:11:37 +0100Iceland_jack(~user@31.124.48.169) (Ping timeout: 264 seconds)
2020-11-24 05:15:49 +0100conal(~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
2020-11-24 05:17:53 +0100 <jackhill> win 43
2020-11-24 05:19:30 +0100kaiwkx(~user@116.236.159.130)
2020-11-24 05:20:18 +0100ddellacosta(dd@gateway/vpn/mullvad/ddellacosta) (Ping timeout: 260 seconds)
2020-11-24 05:23:37 +0100s00pcan(~chris@107.181.165.217) (Ping timeout: 264 seconds)
2020-11-24 05:24:14 +0100conal(~conal@64.71.133.70)
2020-11-24 05:25:01 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2020-11-24 05:25:09 +0100s00pcan(~chris@075-133-056-178.res.spectrum.com)
2020-11-24 05:27:11 +0100vicfred(~vicfred@unaffiliated/vicfred) (Quit: Leaving)
2020-11-24 05:27:26 +0100conal(~conal@64.71.133.70) (Client Quit)
2020-11-24 05:28:03 +0100mpereira(~mpereira@2a02:810d:f40:d96:f587:a442:5e3:1e55)
2020-11-24 05:29:04 +0100plutoniix(~q@ppp-27-55-84-220.revip3.asianet.co.th) (Read error: Connection reset by peer)
2020-11-24 05:29:10 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-11-24 05:35:27 +0100mpereira(~mpereira@2a02:810d:f40:d96:f587:a442:5e3:1e55) (Ping timeout: 260 seconds)
2020-11-24 05:37:19 +0100guest112`(~user@49.5.6.87)
2020-11-24 05:37:39 +0100Sgeo_(~Sgeo@ool-18b982ad.dyn.optonline.net)
2020-11-24 05:38:15 +0100GuerrillaMonkey(~Jeanne-Ka@iakosalt-94.nationalnet.com)
2020-11-24 05:38:53 +0100Jeanne-Kamikaze(~Jeanne-Ka@iakosalt-94.nationalnet.com) (Remote host closed the connection)
2020-11-24 05:38:53 +0100guest1124(~user@49.5.6.87) (Read error: Connection reset by peer)
2020-11-24 05:38:53 +0100zargoertzel(~zar@fw1.ciirc.cvut.cz) (Read error: Connection reset by peer)
2020-11-24 05:38:53 +0100zargoertzel(~zar@fw1.ciirc.cvut.cz)
2020-11-24 05:40:36 +0100Sgeo(~Sgeo@ool-18b982ad.dyn.optonline.net) (Ping timeout: 240 seconds)
2020-11-24 05:40:36 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 240 seconds)
2020-11-24 05:41:46 +0100plutoniix(~q@ppp-124-121-237-69.revip2.asianet.co.th)
2020-11-24 05:42:35 +0100texasmynsted(~texasmyns@212.102.45.103) (Remote host closed the connection)
2020-11-24 05:44:27 +0100TooDifficult(~vg@139.59.59.230) (Quit: TooDifficult)
2020-11-24 05:44:43 +0100TooDifficult(~vg@139.59.59.230)
2020-11-24 05:44:48 +0100phaul(~phaul@ruby/staff/phaul) (Ping timeout: 260 seconds)
2020-11-24 05:44:56 +0100TooDifficult(~vg@139.59.59.230) (Client Quit)
2020-11-24 05:45:12 +0100TooDifficult(~vg@139.59.59.230)
2020-11-24 05:49:02 +0100jlamothe(~jlamothe@198.251.55.207) (Ping timeout: 265 seconds)
2020-11-24 05:49:19 +0100Guest10117(~vollenwei@4e69b241.skybroadband.com)
2020-11-24 05:50:42 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2020-11-24 05:55:25 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 272 seconds)
2020-11-24 05:55:36 +0100conal(~conal@64.71.133.70)
2020-11-24 05:55:41 +0100conal(~conal@64.71.133.70) (Client Quit)
2020-11-24 05:59:34 +0100benjamingr__(uid23465@gateway/web/irccloud.com/x-fmpqsizgoykkkpyq) (Quit: Connection closed for inactivity)
2020-11-24 06:01:09 +0100dftxbs3e_(~dftxbs3e@unaffiliated/dftxbs3e)
2020-11-24 06:03:28 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
2020-11-24 06:03:56 +0100dftxbs3e(~dftxbs3e@unaffiliated/dftxbs3e) (Ping timeout: 256 seconds)
2020-11-24 06:04:28 +0100Codaraxis_(Codaraxis@gateway/vpn/mullvad/codaraxis)
2020-11-24 06:06:52 +0100texasmynsted(~texasmyns@212.102.45.103)
2020-11-24 06:07:16 +0100phaul(~phaul@ruby/staff/phaul)
2020-11-24 06:08:05 +0100pie_(~pie_bnc]@unaffiliated/pie-/x-0787662) (Ping timeout: 272 seconds)
2020-11-24 06:08:05 +0100vancz(~vancz@unaffiliated/vancz) (Ping timeout: 272 seconds)
2020-11-24 06:08:12 +0100Codaraxis__(Codaraxis@gateway/vpn/mullvad/codaraxis) (Ping timeout: 272 seconds)
2020-11-24 06:09:01 +0100dftxbs3e_(~dftxbs3e@unaffiliated/dftxbs3e) (Quit: Leaving)
2020-11-24 06:09:12 +0100dftxbs3e(~dftxbs3e@unaffiliated/dftxbs3e)
2020-11-24 06:10:30 +0100hackageformatn 0.0.1 - Number text formatting. https://hackage.haskell.org/package/formatn-0.0.1 (tonyday567)
2020-11-24 06:10:43 +0100xintron3(~xintron@unaffiliated/xintron)
2020-11-24 06:12:23 +0100xintron(~xintron@unaffiliated/xintron) (Ping timeout: 260 seconds)
2020-11-24 06:12:23 +0100xintron3xintron
2020-11-24 06:14:52 +0100pie_(~pie_bnc]@unaffiliated/pie-/x-0787662)
2020-11-24 06:14:52 +0100vancz(~vancz@unaffiliated/vancz)
2020-11-24 06:16:19 +0100jonatanb(jonatanb@gateway/vpn/protonvpn/jonatanb)
2020-11-24 06:17:15 +0100texasmynsted(~texasmyns@212.102.45.103) (Remote host closed the connection)
2020-11-24 06:19:29 +0100elliott__(~elliott@pool-108-51-141-12.washdc.fios.verizon.net) (Ping timeout: 265 seconds)
2020-11-24 06:20:07 +0100supercoven(~Supercove@dsl-hkibng31-54fae6-106.dhcp.inet.fi)
2020-11-24 06:20:08 +0100supercoven(~Supercove@dsl-hkibng31-54fae6-106.dhcp.inet.fi) (Max SendQ exceeded)
2020-11-24 06:20:23 +0100supercoven(~Supercove@dsl-hkibng31-54fae6-106.dhcp.inet.fi)
2020-11-24 06:20:25 +0100jonatanb(jonatanb@gateway/vpn/protonvpn/jonatanb) (Ping timeout: 240 seconds)
2020-11-24 06:23:00 +0100hackagereadme-lhs 0.8.0 - Literate programming support. https://hackage.haskell.org/package/readme-lhs-0.8.0 (tonyday567)
2020-11-24 06:25:34 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
2020-11-24 06:30:07 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 260 seconds)
2020-11-24 06:30:32 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-11-24 06:32:20 +0100Sarma(~Amras@unaffiliated/amras0000)
2020-11-24 06:32:31 +0100plutoniix(~q@ppp-124-121-237-69.revip2.asianet.co.th) (Remote host closed the connection)
2020-11-24 06:33:38 +0100Saukk(~Saukk@2001:998:f9:2914:1c59:9bb5:b94c:4) (Remote host closed the connection)
2020-11-24 06:33:56 +0100Jonkimi727406120(~Jonkimi@113.87.161.66) (Ping timeout: 240 seconds)
2020-11-24 06:35:01 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
2020-11-24 06:35:25 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
2020-11-24 06:38:04 +0100dansho(~dansho@ip68-108-167-185.lv.lv.cox.net)
2020-11-24 06:41:33 +0100cads(~cads@ip-64-72-99-232.lasvegas.net) (Ping timeout: 256 seconds)
2020-11-24 06:42:01 +0100hackagebox 0.6.1 - boxes https://hackage.haskell.org/package/box-0.6.1 (tonyday567)
2020-11-24 06:43:48 +0100alp(~alp@2a01:e0a:58b:4920:dab:f84b:5532:a13c)
2020-11-24 06:43:50 +0100reallymemorable(~quassel@2601:180:8300:8fd0:6c3d:6186:76f:e94b) (Ping timeout: 264 seconds)
2020-11-24 06:46:28 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2020-11-24 06:47:41 +0100yube(~yube@95.76.1.139)
2020-11-24 06:48:00 +0100yube(~yube@95.76.1.139) (Client Quit)
2020-11-24 06:49:01 +0100Codaraxis_(Codaraxis@gateway/vpn/mullvad/codaraxis) (Read error: Connection reset by peer)
2020-11-24 06:49:44 +0100Codaraxis(~Codaraxis@91.193.4.10)
2020-11-24 06:50:27 +0100TooDifficult(~vg@139.59.59.230) (Quit: TooDifficult)
2020-11-24 06:50:29 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
2020-11-24 06:50:43 +0100TooDifficult(~vg@139.59.59.230)
2020-11-24 06:51:03 +0100TooDifficult(~vg@139.59.59.230) (Client Quit)
2020-11-24 06:51:22 +0100TooDifficult(~vg@139.59.59.230)
2020-11-24 06:55:23 +0100sand_dull(~theuser@c-73-149-95-105.hsd1.ct.comcast.net) (Ping timeout: 260 seconds)
2020-11-24 06:55:42 +0100Jonkimi727406120(~Jonkimi@113.87.161.66)
2020-11-24 06:58:22 +0100n0042(d055ed89@208.85.237.137)
2020-11-24 06:59:41 +0100dansho(~dansho@ip68-108-167-185.lv.lv.cox.net) (Quit: Leaving)
2020-11-24 06:59:49 +0100n0042(d055ed89@208.85.237.137) (Remote host closed the connection)
2020-11-24 07:00:07 +0100dansho(~dansho@ec2-52-194-192-222.ap-northeast-1.compute.amazonaws.com)
2020-11-24 07:11:00 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-11-24 07:11:43 +0100TooDifficult(~vg@139.59.59.230) (Quit: TooDifficult)
2020-11-24 07:11:58 +0100maksio(~user@185.246.204.46)
2020-11-24 07:11:58 +0100TooDifficult(~vg@139.59.59.230)
2020-11-24 07:12:13 +0100TooDifficult(~vg@139.59.59.230) (Client Quit)
2020-11-24 07:12:27 +0100vicfred(~vicfred@unaffiliated/vicfred)
2020-11-24 07:12:30 +0100TooDifficult(~vg@139.59.59.230)
2020-11-24 07:14:30 +0100hackagebox-csv 0.0.3 - See readme.md https://hackage.haskell.org/package/box-csv-0.0.3 (tonyday567)
2020-11-24 07:15:12 +0100maksio(~user@185.246.204.46) (Client Quit)
2020-11-24 07:15:40 +0100michalz(~user@185.246.204.59)
2020-11-24 07:16:48 +0100takuan(~takuan@178-116-218-225.access.telenet.be)
2020-11-24 07:17:01 +0100hackagebox-socket 0.1.1 - See readme.md https://hackage.haskell.org/package/box-socket-0.1.1 (tonyday567)
2020-11-24 07:17:43 +0100TooDifficult(~vg@139.59.59.230) (Quit: TooDifficult)
2020-11-24 07:17:57 +0100TooDifficult(~vg@139.59.59.230)
2020-11-24 07:18:14 +0100TooDifficult(~vg@139.59.59.230) (Client Quit)
2020-11-24 07:18:31 +0100TooDifficult(~vg@139.59.59.230)
2020-11-24 07:20:33 +0100michalz(~user@185.246.204.59) ()
2020-11-24 07:21:02 +0100jaqque1(~jaqque@s91904426.blix.com) (Remote host closed the connection)
2020-11-24 07:23:43 +0100TooDifficult(~vg@139.59.59.230) (Quit: TooDifficult)
2020-11-24 07:24:01 +0100TooDifficult(~vg@139.59.59.230)
2020-11-24 07:24:20 +0100TooDifficult(~vg@139.59.59.230) (Client Quit)
2020-11-24 07:24:58 +0100vg(~vg@139.59.59.230)
2020-11-24 07:25:22 +0100vg(~vg@139.59.59.230) (Client Quit)
2020-11-24 07:25:36 +0100vg(~vg@139.59.59.230)
2020-11-24 07:25:52 +0100vg(~vg@139.59.59.230) (Client Quit)
2020-11-24 07:32:17 +0100mpereira(~mpereira@2a02:810d:f40:d96:f587:a442:5e3:1e55)
2020-11-24 07:36:52 +0100Gurkenglas(~Gurkengla@unaffiliated/gurkenglas) (Ping timeout: 272 seconds)
2020-11-24 07:37:23 +0100mpereira(~mpereira@2a02:810d:f40:d96:f587:a442:5e3:1e55) (Ping timeout: 272 seconds)
2020-11-24 07:41:11 +0100alp(~alp@2a01:e0a:58b:4920:dab:f84b:5532:a13c) (Ping timeout: 272 seconds)
2020-11-24 07:43:37 +0100vicfred(~vicfred@unaffiliated/vicfred) (Quit: Leaving)
2020-11-24 07:44:19 +0100jonatanb(jonatanb@gateway/vpn/protonvpn/jonatanb)
2020-11-24 07:45:26 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2020-11-24 07:48:25 +0100jonatanb(jonatanb@gateway/vpn/protonvpn/jonatanb) (Ping timeout: 240 seconds)
2020-11-24 07:48:57 +0100christo(~chris@81.96.113.213) (Remote host closed the connection)
2020-11-24 07:49:41 +0100christo(~chris@81.96.113.213)
2020-11-24 07:54:18 +0100christo(~chris@81.96.113.213) (Ping timeout: 260 seconds)
2020-11-24 07:55:30 +0100SanchayanMaity(~Sanchayan@171.76.82.54)
2020-11-24 07:56:28 +0100GuerrillaMonkey(~Jeanne-Ka@iakosalt-94.nationalnet.com) (Remote host closed the connection)
2020-11-24 08:01:25 +0100Cthalupa(~cthulhu@47.186.47.75) (Ping timeout: 264 seconds)
2020-11-24 08:01:59 +0100Lord_of_Life(~Lord@46.217.222.157) (Changing host)
2020-11-24 08:01:59 +0100Lord_of_Life(~Lord@unaffiliated/lord-of-life/x-0885362)
2020-11-24 08:02:38 +0100Cthalupa(~cthulhu@47.186.47.75)
2020-11-24 08:03:28 +0100jespada(~jespada@90.254.245.49) (Ping timeout: 260 seconds)
2020-11-24 08:05:52 +0100jespada(~jespada@90.254.245.49)
2020-11-24 08:07:13 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2020-11-24 08:07:38 +0100kaiwkx(~user@116.236.159.130) (Read error: Connection reset by peer)
2020-11-24 08:07:54 +0100Kaeipi(~Kaiepi@nwcsnbsc03w-47-55-225-82.dhcp-dynamic.fibreop.nb.bellaliant.net) (Remote host closed the connection)
2020-11-24 08:10:25 +0100Rudd0(~Rudd0@185.189.115.103) (Ping timeout: 240 seconds)
2020-11-24 08:11:56 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 240 seconds)
2020-11-24 08:13:05 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-11-24 08:17:10 +0100Kaiepi(~Kaiepi@nwcsnbsc03w-47-55-225-82.dhcp-dynamic.fibreop.nb.bellaliant.net)
2020-11-24 08:17:35 +0100gzj(~gzj@unaffiliated/gzj)
2020-11-24 08:17:56 +0100andos(~dan@69-165-210-185.cable.teksavvy.com) (Ping timeout: 260 seconds)
2020-11-24 08:18:14 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2020-11-24 08:18:26 +0100sord937(~sord937@gateway/tor-sasl/sord937)
2020-11-24 08:20:32 +0100gzj(~gzj@unaffiliated/gzj) (Quit: Leaving)
2020-11-24 08:21:31 +0100revprez_stg(~revprez_s@pool-108-49-213-40.bstnma.fios.verizon.net) (Ping timeout: 246 seconds)
2020-11-24 08:22:33 +0100revprez_stg(~revprez_s@pool-108-49-213-40.bstnma.fios.verizon.net)
2020-11-24 08:23:23 +0100ChaiTRex(~ChaiTRex@gateway/tor-sasl/chaitrex) (Ping timeout: 240 seconds)
2020-11-24 08:23:44 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2020-11-24 08:25:44 +0100ChaiTRex(~ChaiTRex@gateway/tor-sasl/chaitrex)
2020-11-24 08:25:53 +0100geowiesnot(~user@87-89-181-157.abo.bbox.fr)
2020-11-24 08:28:16 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 240 seconds)
2020-11-24 08:29:45 +0100Kaiepi(~Kaiepi@nwcsnbsc03w-47-55-225-82.dhcp-dynamic.fibreop.nb.bellaliant.net) (Remote host closed the connection)
2020-11-24 08:30:15 +0100Kaiepi(~Kaiepi@nwcsnbsc03w-47-55-225-82.dhcp-dynamic.fibreop.nb.bellaliant.net)
2020-11-24 08:31:01 +0100Tario(~Tario@201.192.165.173)
2020-11-24 08:33:59 +0100danvet(~Daniel@2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa)
2020-11-24 08:36:16 +0100coot(~coot@37.30.49.253.nat.umts.dynamic.t-mobile.pl)
2020-11-24 08:38:51 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 256 seconds)
2020-11-24 08:38:59 +0100dhouthoo(~dhouthoo@ptr-eitgbj2w0uu6delkbrh.18120a2.ip6.access.telenet.be)
2020-11-24 08:49:42 +0100chkno(~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 272 seconds)
2020-11-24 08:50:03 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-11-24 08:52:13 +0100 <dminuoso> % f (1|2) = 1
2020-11-24 08:52:13 +0100 <yahb> dminuoso: ; <interactive>:54:6: error: parse error on input `2'
2020-11-24 08:52:13 +0100Varis(~Tadas@unaffiliated/varis) (Read error: Connection reset by peer)
2020-11-24 08:52:22 +0100 <dminuoso> Is this type of choice pattern enabled by some extension?
2020-11-24 08:52:25 +0100Tario(~Tario@201.192.165.173) (Ping timeout: 240 seconds)
2020-11-24 08:52:34 +0100 <dminuoso> https://hackage.haskell.org/package/haskell-src-exts-1.23.1/docs/Language-Haskell-Exts-Syntax.html… suggests its existence
2020-11-24 08:53:07 +0100da39a3ee5e6b4b0d(~da39a3ee5@mx-ll-171.5.161-165.dynamic.3bb.co.th)
2020-11-24 08:54:24 +0100 <dminuoso> Oh.
2020-11-24 08:54:28 +0100 <dminuoso> % :set -XRegularPatterns
2020-11-24 08:54:29 +0100 <yahb> dminuoso: Some flags have not been recognized: -XRegularPatterns
2020-11-24 08:55:34 +0100Franciman(~francesco@host-82-54-193-143.retail.telecomitalia.it)
2020-11-24 08:55:37 +0100 <dminuoso> Mmm what is this
2020-11-24 08:56:50 +0100 <dminuoso> Strange, so cabal seems to know about it but GHC does not
2020-11-24 08:57:30 +0100chkno(~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net)
2020-11-24 08:58:23 +0100Suntop1(~Suntop@193.56.252.12)
2020-11-24 09:00:51 +0100cfricke(~cfricke@unaffiliated/cfricke)
2020-11-24 09:00:59 +0100Ariakenom(~Ariakenom@h-98-128-229-104.NA.cust.bahnhof.se)
2020-11-24 09:02:13 +0100cads(~cads@ip-64-72-99-232.lasvegas.net)
2020-11-24 09:02:16 +0100Varis(~Tadas@unaffiliated/varis)
2020-11-24 09:03:32 +0100kish`(~oracle@unaffiliated/oracle)
2020-11-24 09:03:55 +0100sh9(~sh9@softbank060116136158.bbtec.net)
2020-11-24 09:04:10 +0100 <merijn> Maybe some obscure old compiler :p
2020-11-24 09:04:48 +0100alp(~alp@2a01:e0a:58b:4920:ecb1:790b:d951:73b0)
2020-11-24 09:04:52 +0100 <merijn> dminuoso: https://mail.haskell.org/pipermail/haskell/2004-February/013720.html
2020-11-24 09:05:18 +0100 <xerox_> what is the policy for personal projects on gitlab.haskell.org?
2020-11-24 09:05:44 +0100 <dminuoso> xerox_: Id venture this is best asked in #ghc or the GHC mailing list as the responsible people for that gitlab are there
2020-11-24 09:05:56 +0100 <xerox_> aye aye
2020-11-24 09:06:48 +0100 <dminuoso> merijn: Heh yeah seems that way. I also found a publication, but nothing so far in the GHC code..
2020-11-24 09:06:59 +0100 <dminuoso> At any rate, I have somethingy you're gonna *love*
2020-11-24 09:07:16 +0100 <xerox_> *presents puppy*
2020-11-24 09:07:23 +0100 <dminuoso> merijn: https://github.com/DaveGamble/cJSON/blob/master/cJSON.h#L162
2020-11-24 09:07:30 +0100 <dminuoso> You should be able to appreciate that one
2020-11-24 09:07:31 +0100wonko7(~wonko7@2a01:e35:2ffb:7040:55f1:c3a3:cdbe:bf52)
2020-11-24 09:07:43 +0100pie_(~pie_bnc]@unaffiliated/pie-/x-0787662) (Ping timeout: 246 seconds)
2020-11-24 09:07:43 +0100vancz(~vancz@unaffiliated/vancz) (Ping timeout: 246 seconds)
2020-11-24 09:08:37 +0100benjamingr__(uid23465@gateway/web/irccloud.com/x-ymoheyyesupwsnta)
2020-11-24 09:10:56 +0100chkno(~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 256 seconds)
2020-11-24 09:11:33 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2020-11-24 09:12:38 +0100vancz(~vancz@unaffiliated/vancz)
2020-11-24 09:12:40 +0100LeD(5fa448e7@95.164.72.231)
2020-11-24 09:12:43 +0100pie_(~pie_bnc]@unaffiliated/pie-/x-0787662)
2020-11-24 09:14:48 +0100geowiesnot(~user@87-89-181-157.abo.bbox.fr) (Ping timeout: 260 seconds)
2020-11-24 09:16:05 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 240 seconds)
2020-11-24 09:18:12 +0100 <merijn> dminuoso: I think I just linked that to my brother :p
2020-11-24 09:19:03 +0100 <dminuoso> merijn: Did you also see the related issue?
2020-11-24 09:19:09 +0100 <dminuoso> Or try and git blame that?
2020-11-24 09:19:30 +0100 <merijn> No, because I already have enough things to be depressed about
2020-11-24 09:19:46 +0100 <dminuoso> https://github.com/DaveGamble/cJSON/issues/255 https://github.com/DaveGamble/cJSON/commit/65541b900c740e1d527cd4f1935eec3740d4d95a
2020-11-24 09:19:50 +0100 <dminuoso> It'll make you happy!
2020-11-24 09:20:19 +0100 <dminuoso> It's not even just poor reasons. It's a plain "I cant say why"
2020-11-24 09:21:41 +0100 <dminuoso> "because of inaccuracies when reserving memory" memory allocates are usually fuzzy!
2020-11-24 09:21:56 +0100 <dminuoso> Maybe malloc should take a float :>
2020-11-24 09:22:04 +0100chele(~chele@91.65.110.162)
2020-11-24 09:22:52 +0100n0042(d055ed89@208.85.237.137)
2020-11-24 09:24:22 +0100caecilius(~caecilius@pool-108-46-151-95.nycmny.fios.verizon.net)
2020-11-24 09:24:44 +0100 <n0042> Hello fellow Haskellians, Haskellites, Haskellers, and users of Haskell in general. I am interested in reading some articles on writing highly optimized Haskell, if anyone has any they are fond of.
2020-11-24 09:26:16 +0100chkno(~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net)
2020-11-24 09:26:19 +0100 <dminuoso> https://downloads.haskell.org/ghc/latest/docs/html/users_guide/sooner.html
2020-11-24 09:26:23 +0100 <n0042> I am currently taking a class that is designed for people using imperative languages (in particular C++ and Java), but they offer the option of using Haskell, and I'm having trouble getting it to meet the time and space requirements. I know it's possible, or they wouldn't offer the option. I'd like to read up on tips and tricks to write Haskell in
2020-11-24 09:26:23 +0100 <n0042> a very time/space-conscious way
2020-11-24 09:26:32 +0100 <dminuoso> https://downloads.haskell.org/ghc/latest/docs/html/users_guide/profiling.html#profiling
2020-11-24 09:26:53 +0100 <n0042> Thank you friend. I'll start there.
2020-11-24 09:27:14 +0100 <merijn> dminuoso: You forgot the all important "+RTS -sstderr"
2020-11-24 09:27:34 +0100 <merijn> n0042: Compile with -rtsopts and run with "+RTS -sstderr" to get GC diagnostics
2020-11-24 09:27:57 +0100plutoniix(~q@ppp-124-121-237-69.revip2.asianet.co.th)
2020-11-24 09:28:14 +0100Boomerang(~Boomerang@xd520f68c.cust.hiper.dk)
2020-11-24 09:28:31 +0100ubert(~Thunderbi@p200300ecdf1e539ce6b318fffe838f33.dip0.t-ipconnect.de)
2020-11-24 09:28:32 +0100chkno(~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net) (Read error: Connection reset by peer)
2020-11-24 09:29:22 +0100 <dminuoso> n0042: Writing efficient Haskell is usually a mixture of ensuring inlining/specialization/fusion occurs, identifying sharing opportunities, chosing the right data structures ([] vs Vector), etc
2020-11-24 09:29:39 +0100 <dminuoso> And controlling strictness
2020-11-24 09:29:54 +0100aloiscochard[m](aloiscocha@gateway/shell/matrix.org/x-lbvqcwwuqmskblks)
2020-11-24 09:30:24 +0100 <dminuoso> But the above articles are a good starting point
2020-11-24 09:30:24 +0100 <n0042> The way the class works means I know which flags will be used to compile the code I turn in (ghc -O), but beyond that it's all down to how I choose to write it. Those are the kinds of tips I need, for sure.
2020-11-24 09:30:36 +0100 <n0042> I'll read those articles and look into more Data structure types. Thank you.
2020-11-24 09:30:41 +0100mpereira(~mpereira@2a02:810d:f40:d96:f587:a442:5e3:1e55)
2020-11-24 09:30:46 +0100 <dminuoso> The class will compile your code with `ghc -O`?
2020-11-24 09:30:51 +0100 <n0042> yessir
2020-11-24 09:31:13 +0100 <aloiscochard[m]> hey there, I'm wondering if there is vim/emacs users that are still using codex? of if everyone moved to the LSP stuff?
2020-11-24 09:31:25 +0100 <dminuoso> aloiscochard[m]: Most IDE efforts have moved to LSP stuff.
2020-11-24 09:31:50 +0100Yumasi(~guillaume@2a01cb09b06b29ea1c5ab82b3b485150.ipv6.abo.wanadoo.fr)
2020-11-24 09:31:50 +0100 <dminuoso> n0042: should be fine then.
2020-11-24 09:32:15 +0100acagastya(~acagastya@wikinews/acagastya)
2020-11-24 09:32:39 +0100Sgeo_(~Sgeo@ool-18b982ad.dyn.optonline.net) (Read error: Connection reset by peer)
2020-11-24 09:32:43 +0100 <dminuoso> n0042: Out of curiosity, is this some high performance task, or are you just struggling with basic performance compared to off-the-mill Java/C++?
2020-11-24 09:33:41 +0100 <acagastya> Hi, I was trying out how to write the finobacci function in haskell, <https://0x0.st/iRe7.hs> but I am getting stack overflow for `fib 2`. I don't understand why.
2020-11-24 09:34:12 +0100 <merijn> acagastya: You're infinite looping
2020-11-24 09:34:16 +0100 <dminuoso> acagastya: Spaces dont affect associativity
2020-11-24 09:34:19 +0100 <merijn> acagastya: fib n calls "fib n"
2020-11-24 09:34:20 +0100 <dminuoso> Use parens
2020-11-24 09:34:36 +0100 <merijn> acagastya: You're not calling "fib (n-1)"
2020-11-24 09:35:41 +0100 <n0042> dminuoso: It's a Data Structures and Algorithms class, and the goal for most of the assignments is to force you to use the right data structure in a really time/space-conscious way. I'm having a little trouble translating the solutions I'd have chosen in C into idiomatic and performant Haskell
2020-11-24 09:35:54 +0100 <acagastya> All right. So, what I wrote was actually evaluating `-3 + 2 * fib n`, right?
2020-11-24 09:35:55 +0100eyenx(~eyenxeyen@unaffiliated/eye/x-1653358) (Quit: Bridge terminating on SIGTERM)
2020-11-24 09:35:57 +0100jonathanx(~jonathan@dyn-8-sc.cdg.chalmers.se)
2020-11-24 09:36:12 +0100 <dminuoso> n0042: I see, so that can be a bit more tricky.
2020-11-24 09:36:16 +0100 <acagastya> (Thanks, merijn, dminuoso.)
2020-11-24 09:36:16 +0100chkno(~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net)
2020-11-24 09:36:21 +0100eyenx(~eyenxeyen@unaffiliated/eye/x-1653358)
2020-11-24 09:36:51 +0100 <dminuoso> n0042: Algorithms are usually implemented differently in a pure functional setting, so naive approaches tend to perform poorly.
2020-11-24 09:36:51 +0100chkno(~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net) (Read error: Connection reset by peer)
2020-11-24 09:37:08 +0100 <dminuoso> n0042: What kind of algorithms are these?
2020-11-24 09:37:28 +0100 <merijn> acagastya: well, no more like "how do I compute 'fib 5'? well, first I compute 'fib 5'. How do I compute 'fib 5'? repeat" :p
2020-11-24 09:38:33 +0100 <n0042> Well an example of one I am having trouble getting under the time requirement is a network packet simulation. All input and output has to be done during runtime (no command line arguments). It inputs the number of packets, the size of the "buffer", and the arrival time and time-to-process for each packet, and you have to calculate the time at
2020-11-24 09:38:34 +0100 <n0042> which each packet will begin processing
2020-11-24 09:38:34 +0100 <acagastya> I don't know why I was under the impression `fib n-1` will first compute `n-1` and then call `fib`.
2020-11-24 09:39:01 +0100 <n0042> My solution is just a smidge too slow, even with the extra time they allot for using Haskell instead of C. It's close though. I just need to learn more about optimizing Haskell code.
2020-11-24 09:39:12 +0100 <merijn> acagastya: Simple rule to remember is that function application *always* binds tighter than operators
2020-11-24 09:39:29 +0100 <xerox_> acagastya: fib $ n-1 does
2020-11-24 09:39:31 +0100 <merijn> n0042: Are you doing something naive like using a list like an array?
2020-11-24 09:39:37 +0100 <dminuoso> n0042: Out of curiosity, can you share your code? Perhaps we could give you some rough hints and pointers.
2020-11-24 09:39:57 +0100 <dminuoso> Want to stress that I dont intend to spoonfeed, but perhaps nudging you in the right direction is easier then
2020-11-24 09:40:15 +0100 <merijn> dminuoso: Like seeing if there's any lists/String anywhere ;)
2020-11-24 09:40:19 +0100 <dminuoso> ;)
2020-11-24 09:40:27 +0100Boomerang(~Boomerang@xd520f68c.cust.hiper.dk) (Remote host closed the connection)
2020-11-24 09:40:29 +0100lambda-11235(~lambda-11@2600:1700:7c70:4600:34e8:32b9:5cc3:48e6) (Quit: Bye)
2020-11-24 09:40:36 +0100 <n0042> Actually I implemented an array inside a data structure that keeps track of the read/write head, as a Queue, but I'm sure I made the rest of the function too inefficient. I used lists for processing input/output and for some intermediate steps
2020-11-24 09:40:47 +0100Boomerang(~Boomerang@xd520f68c.cust.hiper.dk)
2020-11-24 09:40:52 +0100 <merijn> n0042: Ah! How di you implement you array?
2020-11-24 09:40:59 +0100 <n0042> Using lists elsewhere probably defeated the purpose of using an array.
2020-11-24 09:41:05 +0100 <dminuoso> When you say "array"
2020-11-24 09:41:07 +0100 <dminuoso> what do you mean exactly?
2020-11-24 09:41:11 +0100 <n0042> I hesitate to share the code as the class is still in progress
2020-11-24 09:41:16 +0100chkno(~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net)
2020-11-24 09:41:33 +0100 <n0042> like: `listArray (0,3) (replicate 4 0)` kind of array.
2020-11-24 09:41:33 +0100chkno(~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net) (Read error: Connection reset by peer)
2020-11-24 09:41:43 +0100 <n0042> which I then just treated like something I could read-write to at will
2020-11-24 09:41:49 +0100 <merijn> ah
2020-11-24 09:41:55 +0100 <merijn> ok, for reading that's fine
2020-11-24 09:42:02 +0100 <merijn> for writing...it depends
2020-11-24 09:42:57 +0100 <n0042> When you write to it with the `//` it must create a new array, right? Is that "expensive"?
2020-11-24 09:43:22 +0100 <merijn> It has to copy the entire thing. For an array of 4 elements that's probably not so bad, but not ideal
2020-11-24 09:43:34 +0100 <n0042> Can be up to 10^5, so that's probably my error
2020-11-24 09:44:00 +0100 <dminuoso> n0042: Run it through the profiler
2020-11-24 09:44:00 +0100 <n0042> It passes all the tests until the last one, which is a buffer size of 10^5 processing 10^5 "packets"
2020-11-24 09:44:05 +0100 <merijn> n0042: oof, yes
2020-11-24 09:44:25 +0100 <dminuoso> n0042: Because its very likely it could have told you already :)
2020-11-24 09:44:38 +0100 <merijn> n0042: Incidentally, the vector package has proper mutable arrays inside, if you only need 1 dimensional arrays
2020-11-24 09:44:55 +0100 <n0042> Excellent. Profiling and Vectors seem like good places to start
2020-11-24 09:45:00 +0100 <n0042> Thank you all very much
2020-11-24 09:45:43 +0100 <merijn> But yeah, profile :p
2020-11-24 09:45:44 +0100 <merijn> oh
2020-11-24 09:45:50 +0100 <merijn> dminuoso: You forgot the most important thing
2020-11-24 09:46:15 +0100 <merijn> n0042: If you're using GHC 8.10, lemme mention out performance lord & saviour: https://mpickering.github.io/posts/2019-11-07-hs-speedscope.html
2020-11-24 09:46:22 +0100chkno(~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net)
2020-11-24 09:46:55 +0100 <dminuoso> merijn: Cool, I think I saw the initial works from matthew a while ago
2020-11-24 09:46:55 +0100chkno(~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net) (Read error: Connection reset by peer)
2020-11-24 09:46:59 +0100 <dminuoso> was waiting for this
2020-11-24 09:47:04 +0100cole-h(~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) (Ping timeout: 260 seconds)
2020-11-24 09:47:15 +0100 <dminuoso> Though the text based profiling is *fine*
2020-11-24 09:47:29 +0100 <dminuoso> but an interactive flamegraph is just tons better obviously
2020-11-24 09:47:57 +0100 <n0042> I'm using 8.8.4. Perhaps that's a good reason to upgrade soon though
2020-11-24 09:48:04 +0100 <merijn> dminuoso: The flamegraph isn't his, that's just the speedscope.app website
2020-11-24 09:48:10 +0100borne(~fritjof@200116b864eb5c00394a967dc8ef4e61.dip.versatel-1u1.de)
2020-11-24 09:48:16 +0100 <dminuoso> Ah
2020-11-24 09:48:17 +0100 <merijn> dminuoso: hs-speedscope is just turning the event log into output for it
2020-11-24 09:48:25 +0100 <merijn> Although there's still room for improvement
2020-11-24 09:48:35 +0100 <merijn> For one it currently doesn't track foreign calls, sadly
2020-11-24 09:48:55 +0100 <dminuoso> Ive stopped profiling our largest project because all that's left is a gazillion "improve 0.1% here" spots.
2020-11-24 09:49:09 +0100 <dminuoso> Too much effort for too little value. At this point Im largely I/O bound. :p
2020-11-24 09:49:46 +0100 <dminuoso> Im still amazed by how fast GHC generated code is
2020-11-24 09:49:55 +0100thc202(~thc202@unaffiliated/thc202)
2020-11-24 09:50:07 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2020-11-24 09:51:07 +0100drbean(~drbean@TC210-63-209-58.static.apol.com.tw) (Ping timeout: 246 seconds)
2020-11-24 09:52:52 +0100cfricke(~cfricke@unaffiliated/cfricke) (Quit: WeeChat 2.9)
2020-11-24 09:53:11 +0100cfricke(~cfricke@unaffiliated/cfricke)
2020-11-24 09:53:27 +0100 <n0042> My biggest hurdle for testing the performance for this class is actually feeding it input in a way that simulates the test conditions. They've got some automated system that inputs during runtime, like a person sitting at a keyboard. No command-line arguments.
2020-11-24 09:53:46 +0100 <n0042> Would be easier if everything was command line arguments
2020-11-24 09:54:10 +0100 <dminuoso> 09:27:34 merijn | n0042: Compile with -rtsopts and run with "+RTS -sstderr" to get GC diagnostics
2020-11-24 09:54:16 +0100 <dminuoso> Oh
2020-11-24 09:54:18 +0100 <dminuoso> Mm
2020-11-24 09:55:03 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 260 seconds)
2020-11-24 09:55:15 +0100 <merijn> Well, you can use --with-rtsoprts to permanently enable those ;)
2020-11-24 09:55:47 +0100 <dminuoso> mmm can you output the profiling data to stderr as well?
2020-11-24 09:55:57 +0100michalz(~user@185.246.204.39)
2020-11-24 09:56:22 +0100chkno(~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net)
2020-11-24 09:56:47 +0100 <acagastya> Is this called a function signature? If not, what is it called? `fib :: Int -> Int`
2020-11-24 09:56:47 +0100eyenx(~eyenxeyen@unaffiliated/eye/x-1653358) (Quit: Bridge terminating on SIGTERM)
2020-11-24 09:57:09 +0100eyenx(~eyenxeyen@unaffiliated/eye/x-1653358)
2020-11-24 09:57:11 +0100 <n0042> Type declaration, I think
2020-11-24 09:57:23 +0100 <n0042> But basically a function signature
2020-11-24 09:57:29 +0100m0rphism(~m0rphism@HSI-KBW-095-208-098-207.hsi5.kabel-badenwuerttemberg.de)
2020-11-24 09:58:02 +0100 <dminuoso> Type signature / type annotation
2020-11-24 09:58:10 +0100 <dminuoso> Syntactically it also happens to be a declaration.
2020-11-24 09:58:46 +0100 <dminuoso> Haskell does not have the notion of "function signatures" that have some kind of forward declaring behavior
2020-11-24 09:58:51 +0100 <dminuoso> Like in C
2020-11-24 09:58:51 +0100chkno(~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net) (Read error: Connection reset by peer)
2020-11-24 09:59:22 +0100kritzefitz(~kritzefit@fw-front.credativ.com)
2020-11-24 09:59:31 +0100 <n0042> For the first couple weeks I was just writing everything with type inference and asking ghci for the type using `:t`
2020-11-24 09:59:36 +0100 <dminuoso> With some considerations, you can just attach a type signature/ascription to anything. `f (x :: Int) = x * 2`
2020-11-24 09:59:51 +0100 <dminuoso> Though that requires ScopedTypeVariables :p
2020-11-24 09:59:56 +0100 <idnar> I never know where to put cost centres for profiling
2020-11-24 10:00:01 +0100 <n0042> Felt real proud of myself when I didn't have to do that all the time any more.
2020-11-24 10:00:52 +0100 <merijn> idnar: You just use -fprof-auto? :p
2020-11-24 10:00:56 +0100 <dminuoso> n0042: For advanced users, you can just insert a typed hole, that works nicely with ghc or ghcid.
2020-11-24 10:01:10 +0100 <merijn> idnar: Or better yet, just use --enable-profiling with cabal :p
2020-11-24 10:01:19 +0100 <n0042> That sounds fancy. Can you give me an example? I'm intrigued
2020-11-24 10:01:20 +0100 <dminuoso> n0042: say you're in the middle of an expression deep down in code, and you want to know the type of some sub-expression, you can just do `.... f (x :: _) ....`
2020-11-24 10:01:33 +0100 <dminuoso> And then GHC will generate a diagnostic, telling you the type of x
2020-11-24 10:01:39 +0100 <n0042> Oh that is cool
2020-11-24 10:02:00 +0100dansho(~dansho@ec2-52-194-192-222.ap-northeast-1.compute.amazonaws.com) (Remote host closed the connection)
2020-11-24 10:02:03 +0100 <dminuoso> This doesnt just work for singular things, but entire expressions too
2020-11-24 10:02:10 +0100 <dminuoso> say `(f x) :: _`
2020-11-24 10:02:31 +0100dansho(~dansho@ec2-52-194-192-222.ap-northeast-1.compute.amazonaws.com)
2020-11-24 10:02:54 +0100 <n0042> I've been really surprised at how good the interactive programming environment is since I started with Haskell. ghci is fantastic
2020-11-24 10:03:02 +0100 <dminuoso> Though its my experience, if you have to do this its because you're not sure. Just move it to a binding and give it a permanent type singature
2020-11-24 10:03:16 +0100 <idnar> merijn: -fprof-auto just changes the problem to "I never know where to put INLINE"
2020-11-24 10:03:53 +0100 <n0042> dminuoso: Noted. That's a sweet trick, thank you
2020-11-24 10:04:21 +0100 <merijn> dminuoso: That's a type hole, not a typed hole :p
2020-11-24 10:04:36 +0100 <dminuoso> -_-
2020-11-24 10:04:47 +0100 <dminuoso> I still need to implement -fno-typed-holes
2020-11-24 10:05:27 +0100 <merijn> How so?
2020-11-24 10:05:47 +0100 <dminuoso> I use optics a lot in this project, and for convenience I use the underscore based renamer
2020-11-24 10:05:56 +0100 <dminuoso> So I have a lot of fields that start with `_foo`
2020-11-24 10:06:01 +0100 <merijn> So?
2020-11-24 10:06:30 +0100 <dminuoso> well, if you use these field accessors and make a typo `_fo v` then you get a very annoying diagnostic and not even a "did yu mean _foo" error
2020-11-24 10:07:02 +0100 <dminuoso> Id rather it tells me "_fo not in scope"
2020-11-24 10:07:13 +0100 <merijn> dminuoso: That sounds more like "I need to improve the diagnostics", not "implement a way to disable typed holes" :p
2020-11-24 10:08:01 +0100 <idnar> dminuoso: switch to generic-optics ;)
2020-11-24 10:08:45 +0100 <acagastya> When should I use `.` and when do I use `$`?
2020-11-24 10:10:45 +0100jonatanb(jonatanb@gateway/vpn/protonvpn/jonatanb)
2020-11-24 10:11:24 +0100chkno(~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net)
2020-11-24 10:11:54 +0100 <n0042> If I understand it correctly, `.` actually combines two functions while `$` just alters precedence. I've only needed to use `.` for I/O so far. Would be interested in hearing the answer to that.
2020-11-24 10:12:35 +0100solonarv(~solonarv@astrasbourg-653-1-156-4.w90-6.abo.wanadoo.fr)
2020-11-24 10:13:38 +0100_xor(~xor@74.215.46.133) (Quit: brb)
2020-11-24 10:13:39 +0100chkno(~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net) (Read error: Connection reset by peer)
2020-11-24 10:14:26 +0100eyenx(~eyenxeyen@unaffiliated/eye/x-1653358) (Quit: Bridge terminating on SIGTERM)
2020-11-24 10:14:50 +0100eyenx(~eyenxeyen@unaffiliated/eye/x-1653358)
2020-11-24 10:15:05 +0100jonatanb(jonatanb@gateway/vpn/protonvpn/jonatanb) (Ping timeout: 240 seconds)
2020-11-24 10:15:47 +0100 <guest112`> is Except a typeclass?
2020-11-24 10:16:24 +0100 <guest112`> why Control.Monad.Error is no longer suggested?
2020-11-24 10:18:33 +0100chkno(~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net)
2020-11-24 10:19:41 +0100Tuplanolla(~Tuplanoll@91-159-68-239.elisa-laajakaista.fi)
2020-11-24 10:19:41 +0100chkno(~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net) (Read error: Connection reset by peer)
2020-11-24 10:20:08 +0100 <idnar> n0042: btw, if your editor has LSP support then with haskell-language-server you can get subexpression types on-hover
2020-11-24 10:20:34 +0100 <n0042> Fancy! Good to know
2020-11-24 10:20:46 +0100 <idnar> (among many other useful things)
2020-11-24 10:21:42 +0100hidedagger(~nate@unaffiliated/hidedagger)
2020-11-24 10:22:03 +0100plutoniix(~q@ppp-124-121-237-69.revip2.asianet.co.th) (Remote host closed the connection)
2020-11-24 10:23:33 +0100chkno(~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net)
2020-11-24 10:24:43 +0100kuribas(~user@ptr-25vy0i6zrjp217580gl.18120a2.ip6.access.telenet.be)
2020-11-24 10:25:10 +0100Entertainment(~entertain@104.246.132.210) (Ping timeout: 256 seconds)
2020-11-24 10:26:01 +0100 <dminuoso> idnar: I dont think that is the real solution here
2020-11-24 10:26:13 +0100 <dminuoso> lenses generated into OverloadedLabels seems more sane
2020-11-24 10:26:40 +0100 <dminuoso> That's how swagger2 does it, and it's not bad
2020-11-24 10:27:06 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2020-11-24 10:27:21 +0100 <idnar> dminuoso: oh hmm, generic-lens has that, I wonder why generic-optics doesn't
2020-11-24 10:27:53 +0100 <dminuoso> idnar: Also, why would I use generics over TH here?
2020-11-24 10:28:02 +0100 <dminuoso> The TH code is likely to be much faster
2020-11-24 10:28:43 +0100 <dminuoso> Also, its controllable and configurable
2020-11-24 10:29:00 +0100_xor(~xor@74.215.46.133)
2020-11-24 10:29:11 +0100 <dminuoso> With Generics you're, essentially, tied to whatever the implementation has, unless you start flinging newtypes and type families at it
2020-11-24 10:31:00 +0100 <idnar> dminuoso: there's a paper explaining how they got it to ~the performance of TH, but yes there's various up/downsides
2020-11-24 10:31:48 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 260 seconds)
2020-11-24 10:32:07 +0100 <dminuoso> With TH I can just dump the splice, and splice it manually by copy and paste.
2020-11-24 10:32:21 +0100 <dminuoso> Can you reify Generics code like that?
2020-11-24 10:32:27 +0100acagastya(~acagastya@wikinews/acagastya) ("WeeChat 2.8")
2020-11-24 10:32:46 +0100 <dminuoso> But, Ill check out the paper
2020-11-24 10:33:21 +0100 <dminuoso> Oh I think you misunderstood
2020-11-24 10:33:30 +0100 <dminuoso> Im not talking about the *generated* lens, Im talking about the compilation time overhead
2020-11-24 10:33:35 +0100 <dminuoso> Generics are crazy slow
2020-11-24 10:34:24 +0100 <idnar> dminuoso: huh, TH is _much_ slower to compile IME
2020-11-24 10:34:56 +0100hnOsmium0001(uid453710@gateway/web/irccloud.com/x-ivgwdqliaykucuud) (Quit: Connection closed for inactivity)
2020-11-24 10:35:15 +0100 <idnar> dminuoso: I guess maybe It Depends™
2020-11-24 10:36:30 +0100 <dminuoso> Im not sure how Generics could be faster, really.
2020-11-24 10:38:22 +0100falafel_(~falafel@2601:547:1303:b30:7811:313f:d0f3:f9f4)
2020-11-24 10:38:55 +0100Kaiepi(~Kaiepi@nwcsnbsc03w-47-55-225-82.dhcp-dynamic.fibreop.nb.bellaliant.net) (Remote host closed the connection)
2020-11-24 10:39:14 +0100LeD(5fa448e7@95.164.72.231) (Ping timeout: 245 seconds)
2020-11-24 10:39:59 +0100 <idnar> oh re: labels, "I intend to add support for this for generic-optics too, but it isn’t implemented yet."
2020-11-24 10:40:24 +0100 <idnar> guess that explains it
2020-11-24 10:52:14 +0100falafel_(~falafel@2601:547:1303:b30:7811:313f:d0f3:f9f4) (Ping timeout: 264 seconds)
2020-11-24 10:54:37 +0100 <maerwald> my experience with aeson th vs generics is that th is slower afair
2020-11-24 10:56:48 +0100DavidEichmann(~david@62.110.198.146.dyn.plus.net)
2020-11-24 10:57:42 +0100 <maerwald> but that's anecdotal evidence
2020-11-24 10:57:46 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2020-11-24 10:58:24 +0100gehmehgeh(~ircuser1@gateway/tor-sasl/gehmehgeh)
2020-11-24 10:58:58 +0100 <tdammers> slower to compile, or slower to run?
2020-11-24 10:59:06 +0100 <tdammers> oh wait
2020-11-24 10:59:19 +0100 <tdammers> note to self, read scrollback before blurting out word vomit
2020-11-24 10:59:34 +0100raichoo(~raichoo@213.240.178.58)
2020-11-24 11:00:23 +0100Rudd0(~Rudd0@185.189.115.98)
2020-11-24 11:01:14 +0100bulters(~jeroen@5920ab49.static.cust.trined.nl)
2020-11-24 11:02:18 +0100hidedagger(~nate@unaffiliated/hidedagger) (Quit: WeeChat 2.9)
2020-11-24 11:02:41 +0100hidedagger(~nate@unaffiliated/hidedagger)
2020-11-24 11:07:46 +0100 <kuribas> OTOH generics is pure haskell, also TH sometimes has weird effects on declarations, TH doesn't work with cross-compiling, etc...
2020-11-24 11:09:26 +0100 <dminuoso> maerwald: Well and it depends on the quality of TH code
2020-11-24 11:09:40 +0100shangxiao(~davids@101.181.159.140)
2020-11-24 11:10:04 +0100 <maerwald> dminuoso: also, you should be using openapi3, not swagger2 :)
2020-11-24 11:10:14 +0100 <dminuoso> Generics is probably easier to get right both in compilation time as well as runtime overhead, but TH is easier to make it deterministic and *definitely* obtain a particular result
2020-11-24 11:10:29 +0100 <dminuoso> maerwald: Yeah, there was some reasons.. dont really recall them.
2020-11-24 11:10:42 +0100 <maerwald> it's pretty much the same api
2020-11-24 11:10:48 +0100 <dminuoso> Oh, it wasn't released at the time
2020-11-24 11:12:27 +0100hidedagger(~nate@unaffiliated/hidedagger) (Quit: WeeChat 2.9)
2020-11-24 11:12:30 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2020-11-24 11:13:34 +0100 <dminuoso> maerwald: interesting, it looks almost identical in terms of dependencies and module structure
2020-11-24 11:13:41 +0100 <kuribas> maerwald: question, is there an easy way to download a docker image and compile to a musl binary?
2020-11-24 11:13:59 +0100 <maerwald> kuribas: yes
2020-11-24 11:14:00 +0100 <dminuoso> perhaps its a drop-in replacement?
2020-11-24 11:14:04 +0100 <dminuoso> Will try
2020-11-24 11:14:11 +0100 <maerwald> dminuoso: yeah, upstream was unresponsive so they forked
2020-11-24 11:14:16 +0100 <kuribas> maerwald: which can be done on differents OSes? windows, linuxes, ...
2020-11-24 11:14:28 +0100 <dminuoso> Cool, I remember OpenAPI 3.0 has some things that 2.x failed to represent
2020-11-24 11:14:43 +0100hidedagger(~nate@unaffiliated/hidedagger)
2020-11-24 11:14:44 +0100 <maerwald> dminuoso: yes, oneOf
2020-11-24 11:14:52 +0100 <dminuoso> Right, that's the one
2020-11-24 11:14:58 +0100hidedagger(~nate@unaffiliated/hidedagger) (Client Quit)
2020-11-24 11:15:18 +0100 <dminuoso> Silly Haskellers and their sum types
2020-11-24 11:15:26 +0100 <maerwald> kuribas: I have never used docker on windows
2020-11-24 11:15:34 +0100 <dminuoso> Does openapi3 has allOf support?
2020-11-24 11:15:36 +0100 <kuribas> maerwald: well, linuxes then?
2020-11-24 11:16:03 +0100 <dminuoso> (k ~ A_Lens, a ~ Maybe [Referenced Schema], b ~ Maybe [Referenced Schema]) => LabelOptic "oneOf" k Schema Schema a b
2020-11-24 11:16:05 +0100 <dminuoso> Looks like, sweet
2020-11-24 11:16:30 +0100 <maerwald> kuribas: https://gist.github.com/hasufell/f0893abfbba63ac4ea40feb0520946ee
2020-11-24 11:16:38 +0100 <maerwald> something like that
2020-11-24 11:16:57 +0100 <kuribas> maerwald: right, thanks!
2020-11-24 11:17:02 +0100noteness(noteness@unaffiliated/nessessary129)
2020-11-24 11:17:37 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 264 seconds)
2020-11-24 11:19:21 +0100__monty__(~toonn@unaffiliated/toonn)
2020-11-24 11:23:27 +0100hseg(~gesh@185.120.126.113)
2020-11-24 11:28:14 +0100 <kuribas> I wonder if something exists between monad and applicative.
2020-11-24 11:28:30 +0100 <kuribas> for example: say you have two forms, and the result of the second form depends on the first form.
2020-11-24 11:28:47 +0100 <kuribas> however you know the second form will be always there.
2020-11-24 11:29:23 +0100 <kuribas> it's not an applicative, because the second form depends on the first. But not a monad either, because the existance of the second form is independent of the result of the first.
2020-11-24 11:29:53 +0100 <merijn> kuribas: So...Selective Functors? :p
2020-11-24 11:30:01 +0100 <merijn> kuribas: Did you live under a rock last year? ;)
2020-11-24 11:30:22 +0100 <kuribas> seem so ;-P
2020-11-24 11:30:32 +0100 <merijn> kuribas: https://www.staff.ncl.ac.uk/andrey.mokhov/selective-functors.pdf
2020-11-24 11:30:34 +0100 <kuribas> thanks :)
2020-11-24 11:30:47 +0100 <n0042> The vocabulary of learning Haskell has got to be one of the neatest things I've ever experienced. Thank you both for that
2020-11-24 11:31:06 +0100 <merijn> kuribas: In fact, I think you are literally describing Selective with your optional 2nd form :p
2020-11-24 11:31:14 +0100 <bulters> I come here only for the vocab ;-)
2020-11-24 11:31:31 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2020-11-24 11:32:01 +0100 <kuribas> merijn: the second for is not optional
2020-11-24 11:32:04 +0100p8m_(p8m@gateway/vpn/protonvpn/p8m)
2020-11-24 11:32:28 +0100 <merijn> kuribas: First one, whatever, reading is hard :p
2020-11-24 11:32:41 +0100p8m(p8m@gateway/vpn/protonvpn/p8m) (Ping timeout: 265 seconds)
2020-11-24 11:32:42 +0100 <kuribas> any, sounds interesting, I'll have a look
2020-11-24 11:32:54 +0100 <bulters> @merijn: wouldn't it be an Invariant Functor?
2020-11-24 11:32:54 +0100 <lambdabot> Unknown command, try @list
2020-11-24 11:32:56 +0100 <kuribas> *anyway*... writing is hard :)
2020-11-24 11:33:12 +0100 <bulters> since it's always there, disregarding the first form?
2020-11-24 11:33:54 +0100 <bulters> (disclaimer: I understand sh*t about formal type theory....)
2020-11-24 11:34:44 +0100 <[exa]> invariant functor sounds a bit more like Const
2020-11-24 11:34:45 +0100 <merijn> various functor types don't really have much to do with type theory, though :p
2020-11-24 11:35:04 +0100 <bulters> merijn: hence, my disclaimer
2020-11-24 11:35:11 +0100 <bulters> I don't even know where it starts and ends!
2020-11-24 11:35:22 +0100 <n0042> haha
2020-11-24 11:35:30 +0100 <kuribas> merijn: now that I think about it, what I describe is just an applicative, but where the second form returns a function that takes the result of the first form.
2020-11-24 11:36:01 +0100 <n0042> You and me both bulters. I'm looking around for some good introductory resources at the moment
2020-11-24 11:36:19 +0100 <bulters> n0042: at what "level are you reading" right now?
2020-11-24 11:36:25 +0100 <merijn> For type theory? Benjamin Pierce's Types and Programming Languages
2020-11-24 11:36:49 +0100Jonkimi727406120(~Jonkimi@113.87.161.66) (Ping timeout: 264 seconds)
2020-11-24 11:37:08 +0100 <n0042> thanks merijn, that sounds appropriate
2020-11-24 11:37:31 +0100 <bulters> Thanks merijn, that sounds really appropriate
2020-11-24 11:37:45 +0100wei2912(~wei2912@unaffiliated/wei2912) (Remote host closed the connection)
2020-11-24 11:37:57 +0100oisdk(~oisdk@2001:bb6:3329:d100:188f:f126:4321:8fc1)
2020-11-24 11:38:11 +0100 <__monty__> bulters: It's not just a type theory introduction, it's *the* type theory introduction : )
2020-11-24 11:38:32 +0100 <bulters> ok... thanks you all... you just REALLY destroyed december for my wife...
2020-11-24 11:38:50 +0100 <__monty__> bulters: Oh, you hadn't heard about Advent of Code yet?
2020-11-24 11:38:58 +0100Jonkimi727406120(~Jonkimi@113.87.161.66)
2020-11-24 11:39:02 +0100 <n0042> bulters: I'm not sure how to answer that question. At a lower level than many of the people in here, I'm sure.
2020-11-24 11:39:03 +0100 <merijn> __monty__: hah
2020-11-24 11:39:05 +0100 <bulters> __monty__: sure did! That's what she gave me the approval for :P
2020-11-24 11:39:09 +0100 <kuribas> merijn: for example: liftA2 (,) form1 (form2 $ \form1Value -> form2Value)
2020-11-24 11:39:14 +0100 <merijn> __monty__: Life hack, my SO is doing Advent of Code :p
2020-11-24 11:39:19 +0100hseg(~gesh@185.120.126.113) (Quit: WeeChat 2.9)
2020-11-24 11:39:53 +0100 <bulters> merijn: smart... now I just have to find a way to get a tax lawyer interested in AoC :')
2020-11-24 11:40:08 +0100geowiesnot(~user@87-89-181-157.abo.bbox.fr)
2020-11-24 11:40:12 +0100 <__monty__> I'm expecting a lot more participation due to lockdowns and such.
2020-11-24 11:40:44 +0100 <bulters> __monty__: absolutely... last year we had 21 participants in our office, right now the internal slack channel is at 40.
2020-11-24 11:40:54 +0100Kaiepi(~Kaiepi@nwcsnbsc03w-47-55-225-82.dhcp-dynamic.fibreop.nb.bellaliant.net)
2020-11-24 11:41:27 +0100 <kuribas> merijn: so form2Value depends on what form1 returns
2020-11-24 11:41:47 +0100 <bulters> n0042: wouldn't be too surprised... I think I managed to forget everything about type theory I learned in uni (some 15 years ago)... that's what industry does to you ;-)
2020-11-24 11:42:06 +0100st8less(~st8less@2603:a060:11fd:0:bcc7:6823:7a5:d42) (Quit: WeeChat 2.9)
2020-11-24 11:42:20 +0100 <__monty__> kuribas: That sounds a lot like a monad though.
2020-11-24 11:42:45 +0100 <kuribas> __monty__: no, because the monad doesn't know that form2 will exist
2020-11-24 11:43:02 +0100SanchayanMaity(~Sanchayan@171.76.82.54) (Quit: SanchayanMaity)
2020-11-24 11:43:03 +0100p8m(p8m@gateway/vpn/protonvpn/p8m)
2020-11-24 11:43:44 +0100Jonkimi727406120(~Jonkimi@113.87.161.66) (Ping timeout: 260 seconds)
2020-11-24 11:43:50 +0100 <__monty__> I'm not sure what you mean. They always occur in pairs? Why does it need to know, optimization?
2020-11-24 11:44:16 +0100p8m_(p8m@gateway/vpn/protonvpn/p8m) (Ping timeout: 240 seconds)
2020-11-24 11:45:06 +0100 <kuribas> __monty__: form2 is always there, it's just that it's contents changes based on form1.
2020-11-24 11:45:08 +0100geowiesnot(~user@87-89-181-157.abo.bbox.fr) (Ping timeout: 260 seconds)
2020-11-24 11:45:27 +0100 <n0042> bulters: Still looking to get my first job in the "industry"! Lots to learn.
2020-11-24 11:45:37 +0100 <kuribas> __monty__: no, if you have a UI, you want the second form to be already there.
2020-11-24 11:45:55 +0100 <bulters> n0042: That's really exciting... You're up for a real rollercoaster ride I'd reckon...
2020-11-24 11:46:11 +0100 <bulters> especially starting in a time where remote work is "the norm"
2020-11-24 11:46:45 +0100 <n0042> The world does seem to have gone mad
2020-11-24 11:47:01 +0100 <n0042> But I'm not going to complain about remote work. My room is a nice office
2020-11-24 11:47:14 +0100 <bulters> I hired an office, just for me...
2020-11-24 11:47:20 +0100SanchayanMaity(~Sanchayan@171.76.82.54)
2020-11-24 11:47:31 +0100 <n0042> Like, you rented a place?
2020-11-24 11:47:38 +0100 <bulters> yeah, an empty office...
2020-11-24 11:47:43 +0100 <bulters> friend of mine had one "left"...
2020-11-24 11:48:02 +0100 <bulters> 5 minute bike ride away, pay like 250 euros per month, including internet, heating, cleaning, etc
2020-11-24 11:48:10 +0100 <n0042> Is your whole organization gone remote?
2020-11-24 11:48:14 +0100 <bulters> yep..
2020-11-24 11:48:19 +0100 <n0042> wow
2020-11-24 11:48:50 +0100 <bulters> We allow 10% of the staff to be in the office per day
2020-11-24 11:48:59 +0100 <bulters> to allow for proper distancing
2020-11-24 11:49:13 +0100 <n0042> I wonder what the total cost of the whole Covid thing is when you calculate business disruptions like that, world-wide.
2020-11-24 11:49:22 +0100 <merijn> We have...1 or 2 people in the office?
2020-11-24 11:49:32 +0100 <merijn> n0042: Uncountable, most likely
2020-11-24 11:49:45 +0100 <dminuoso> Dunno, Im fairly sure it will be measurable
2020-11-24 11:49:52 +0100 <dminuoso> But it depends on the exact metric
2020-11-24 11:49:53 +0100nr3rsl(nr3rsl@94.63.218.65)
2020-11-24 11:50:17 +0100 <merijn> dminuoso: I think there's so many indirect effects it's probably not actually measurable in any accurate way
2020-11-24 11:51:05 +0100 <bulters> We expect to lose 1.5mio (eur) on the fact that we have to work remotely only.
2020-11-24 11:51:53 +0100 <bulters> So that doesn't factor in added productivity (by some), lost productivity (in others), added supportive costs (extra monitors, physical therapy, new desks for some, etc)
2020-11-24 11:52:20 +0100 <nr3rsl> Hi guys, i'm looking for haskell programmers to work in portugal any one?
2020-11-24 11:53:35 +0100 <bulters> ok, so alter from Data.Map.Strict requires (Maybe a -> Maybe a) as first arg, but I just want to update 1 element to a fixed value. Any pointers?
2020-11-24 11:54:23 +0100 <merijn> bulters: What's wrong with alter?
2020-11-24 11:54:41 +0100 <bulters> there's nothing wrong with alter... I think... just me using it wrong
2020-11-24 11:55:09 +0100 <n0042> I am almost certainly not qualified to be taking Haskell jobs nr3rsl but out of curiosity what kinds of things are you hiring people to work on?
2020-11-24 11:56:04 +0100 <bulters> maralorn: M.alter (Just (left + right)) result m <-- I'd have to wrap the (Just (left + right)) into something that makes it a Maybe a -> Maybe a right?
2020-11-24 11:56:11 +0100 <bulters> erm... merijn ... mea culpa
2020-11-24 11:56:42 +0100guest112`(~user@49.5.6.87) (Quit: ERC (IRC client for Emacs 27.1))
2020-11-24 11:56:51 +0100 <merijn> "Just (left + right)" is a value, not a function. Where are left/right coming from?
2020-11-24 11:58:20 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
2020-11-24 11:58:24 +0100 <maralorn> You know … My first name is "Malte". For a second there I was so confused by this message that I considered it was an accidental highlight because of "M.alter" …
2020-11-24 11:59:06 +0100 <bulters> merijn: https://gist.github.com/bulters/661a7389d3684826e20791c7019d3bf8
2020-11-24 11:59:13 +0100mi23523523(~Aman33333@85.253.192.47.cable.starman.ee)
2020-11-24 11:59:43 +0100 <bulters> (AoC 19, day 2, did stupid implementation earlier, now following random redditor suggesting of optimizing by using Data.IntMap.Strict)
2020-11-24 11:59:52 +0100 <merijn> bulters: eh, I think you just want M.insert?
2020-11-24 12:00:13 +0100alp(~alp@2a01:e0a:58b:4920:ecb1:790b:d951:73b0) (Ping timeout: 272 seconds)
2020-11-24 12:00:15 +0100 <merijn> alter is for updating a value you haven't looked up yet
2020-11-24 12:00:33 +0100 <bulters> makes perfect sense...
2020-11-24 12:00:42 +0100 <merijn> "alter f k" says "replace the value for key 'k' by using the function 'f' to generate the new value"
2020-11-24 12:01:03 +0100 <merijn> Where 'f' gets Nothing (if no value) or Just (if there's one there) and returns Just (new value) or Nothing (deleted)
2020-11-24 12:01:56 +0100 <bulters> \o/ Thanks!
2020-11-24 12:02:36 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 240 seconds)
2020-11-24 12:03:49 +0100p8m(p8m@gateway/vpn/protonvpn/p8m) (Ping timeout: 264 seconds)
2020-11-24 12:04:15 +0100p8m(p8m@gateway/vpn/protonvpn/p8m)
2020-11-24 12:07:36 +0100pie_(~pie_bnc]@unaffiliated/pie-/x-0787662) (Ping timeout: 240 seconds)
2020-11-24 12:07:36 +0100vancz(~vancz@unaffiliated/vancz) (Ping timeout: 240 seconds)
2020-11-24 12:10:58 +0100olligobber(olligobber@gateway/vpn/privateinternetaccess/olligobber) (Ping timeout: 260 seconds)
2020-11-24 12:11:48 +0100pie_(~pie_bnc]@unaffiliated/pie-/x-0787662)
2020-11-24 12:11:48 +0100vancz(~vancz@unaffiliated/vancz)
2020-11-24 12:13:19 +0100daGrevis(~daGrevis@unaffiliated/dagrevis) (Ping timeout: 244 seconds)
2020-11-24 12:14:19 +0100marinelli(~marinelli@gateway/tor-sasl/marinelli)
2020-11-24 12:15:40 +0100bulters(~jeroen@5920ab49.static.cust.trined.nl) (Ping timeout: 246 seconds)
2020-11-24 12:19:05 +0100mi23523523(~Aman33333@85.253.192.47.cable.starman.ee) (Remote host closed the connection)
2020-11-24 12:19:25 +0100lxsameer(~lxsameer@unaffiliated/lxsameer) (Ping timeout: 264 seconds)
2020-11-24 12:20:20 +0100pavonia(~user@unaffiliated/siracusa) (Read error: Connection reset by peer)
2020-11-24 12:20:29 +0100alp(~alp@88.126.45.36)
2020-11-24 12:20:36 +0100mi23523523(~Aman33333@85.253.192.47.cable.starman.ee)
2020-11-24 12:20:36 +0100trcc(~trcc@130.225.16.16)
2020-11-24 12:20:41 +0100pavonia(~user@unaffiliated/siracusa)
2020-11-24 12:21:03 +0100lxsameer(~lxsameer@unaffiliated/lxsameer)
2020-11-24 12:21:10 +0100 <maerwald> is there a structure such as a Map that can be GCed as you go instead of after traversal?
2020-11-24 12:21:56 +0100phaul(~phaul@ruby/staff/phaul) (Ping timeout: 240 seconds)
2020-11-24 12:22:58 +0100 <kuribas> merijn: I guess what I want is flipped (<*>) with the effects reversed.
2020-11-24 12:23:22 +0100 <kuribas> merijn: so >*< :: f a -> f (a -> b) -> f b
2020-11-24 12:23:39 +0100marinelli(~marinelli@gateway/tor-sasl/marinelli) (Quit: marinelli)
2020-11-24 12:24:06 +0100daGrevis(~daGrevis@unaffiliated/dagrevis)
2020-11-24 12:24:09 +0100olligobber(olligobber@gateway/vpn/privateinternetaccess/olligobber)
2020-11-24 12:24:36 +0100dansho(~dansho@ec2-52-194-192-222.ap-northeast-1.compute.amazonaws.com) (Ping timeout: 240 seconds)
2020-11-24 12:26:08 +0100 <ski> > [(^ 2),(^ 3)] <*> [4,5]
2020-11-24 12:26:10 +0100 <lambdabot> [16,25,64,125]
2020-11-24 12:26:11 +0100 <ski> > [4,5] <**> [(^ 2),(^ 3)]
2020-11-24 12:26:12 +0100 <lambdabot> [16,64,25,125]
2020-11-24 12:26:34 +0100bulters(~jeroen@5920ab49.static.cust.trined.nl)
2020-11-24 12:26:39 +0100phaul(~phaul@ruby/staff/phaul)
2020-11-24 12:28:08 +0100mi23523523(~Aman33333@85.253.192.47.cable.starman.ee) (Remote host closed the connection)
2020-11-24 12:28:45 +0100howdoi(uid224@gateway/web/irccloud.com/x-gbfppsdeuatjrkoa) (Quit: Connection closed for inactivity)
2020-11-24 12:28:52 +0100 <bulters> merijn: did the trick, thanks. For 'closure' (the mental variant): would using alter entail using something like \x -> Just (left + right)?
2020-11-24 12:30:28 +0100lassulus(~lassulus@NixOS/user/lassulus) (Ping timeout: 256 seconds)
2020-11-24 12:30:31 +0100carlomagno1(~cararell@148.87.23.8)
2020-11-24 12:31:53 +0100Yumasi(~guillaume@2a01cb09b06b29ea1c5ab82b3b485150.ipv6.abo.wanadoo.fr) (Ping timeout: 272 seconds)
2020-11-24 12:31:58 +0100jedws(~jedws@101.184.150.93) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-11-24 12:32:20 +0100Yumasi(~guillaume@40.72.95.92.rev.sfr.net)
2020-11-24 12:32:52 +0100 <kuribas> :t <**>
2020-11-24 12:32:53 +0100 <lambdabot> error: parse error on input ‘<**>’
2020-11-24 12:32:59 +0100 <kuribas> :t (<**>)
2020-11-24 12:33:01 +0100 <lambdabot> Applicative f => f a -> f (a -> b) -> f b
2020-11-24 12:33:10 +0100carlomagno(~cararell@148.87.23.7) (Ping timeout: 246 seconds)
2020-11-24 12:34:14 +0100 <kuribas> nice
2020-11-24 12:34:58 +0100Stanley00(~stanley00@unaffiliated/stanley00) (Remote host closed the connection)
2020-11-24 12:35:18 +0100lassulus(~lassulus@NixOS/user/lassulus)
2020-11-24 12:35:23 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed)
2020-11-24 12:36:08 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2020-11-24 12:37:50 +0100 <ski> bulters : yes. `adjust' would also have worked (but is also slightly overkill, since you don't depend on the old value, just overwrite)
2020-11-24 12:40:13 +0100n0042(d055ed89@208.85.237.137) (Remote host closed the connection)
2020-11-24 12:40:16 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 240 seconds)
2020-11-24 12:40:27 +0100 <bulters> ski: thanks!
2020-11-24 12:41:29 +0100 <dminuoso> 12:21:11 maerwald | is there a structure such as a Map that can be GCed as you go instead of after traversal?
2020-11-24 12:41:43 +0100 <dminuoso> Mmm, I wonder whether that's even possible without a substructural type system
2020-11-24 12:41:53 +0100 <dminuoso> (Unless the map does manual memory management)
2020-11-24 12:42:29 +0100 <dminuoso> From GC roots perspective, as long as there's something pointing to the original map, you cant GC the nodes that have gone from your perspective
2020-11-24 12:42:40 +0100alp(~alp@88.126.45.36) (Remote host closed the connection)
2020-11-24 12:42:58 +0100alp(~alp@2a01:e0a:58b:4920:92c:402a:f3e7:76c8)
2020-11-24 12:43:06 +0100 <maerwald> yeah, it's a similar problem with copying bytestrings
2020-11-24 12:43:57 +0100 <dminuoso> maerwald: The closest thing you're asking for exists in Clean, where operations can be turned into mutation
2020-11-24 12:44:06 +0100 <dminuoso> (Which would be better than just "garbage collecting what you just freed"
2020-11-24 12:44:51 +0100 <dminuoso> Because with a linear (or affine) type system you could reason, that after the traversal nothing else can see the value you just touched
2020-11-24 12:45:07 +0100 <ski> i guess if you have the only reference to the root, then after you've traversed all but one direct subtree, you'll discard the root, so that GC could possibly pick it up, as you descent further ?
2020-11-24 12:45:57 +0100 <ski> (hm, or possibly you'll directly pick apart the root node, into constituents, before traversing further, so that GC could pick it up anytime after that)
2020-11-24 12:46:34 +0100 <ski> s/linear (or affine)/uniqueness/
2020-11-24 12:49:09 +0100 <ski> Mercury does implement CTGC (compile-time GC), which first tries to reuse discarded (unique) nodes for creation of new nodes (preferably sharing some slots, so they don't all need to be updated), and otherwise statically insert a deallocation call of the node
2020-11-24 12:50:01 +0100rprije(~rprije@123-243-139-165.tpgi.com.au) (Ping timeout: 264 seconds)
2020-11-24 12:50:10 +0100 <ski> (haven't looked in that detail at what the Clean implementation does, but wouldn't surprise me if it does that, as well)
2020-11-24 12:50:42 +0100Gurkenglas(~Gurkengla@unaffiliated/gurkenglas)
2020-11-24 12:51:23 +0100 <ski> e.g. if you append two lists in Clean, the first of which is unique, it'll just update-in-place the final tail of the first to point to the second, rather than allocating new nodes for the first list, copying it
2020-11-24 12:51:45 +0100Rudd0(~Rudd0@185.189.115.98) (Remote host closed the connection)
2020-11-24 12:52:10 +0100 <dminuoso> From what I hear, that alone gives Clean the advantage over GHC with all its fancy simplifier psases
2020-11-24 12:52:19 +0100 <dminuoso> In terms of performance, given some benchmarks.
2020-11-24 12:56:11 +0100veverakjar_jar
2020-11-24 12:56:16 +0100 <ski> it has a fancy bounded uniqueness polymorphic system, so that the same (source) append can be used in the different modes (i think some of them will use the same generated code, while others will use separate code (e.g. not allocating, but updating))
2020-11-24 12:56:26 +0100jar_jarveverak
2020-11-24 12:57:00 +0100hackagedeferred-folds 0.9.12 - Abstractions over deferred folds https://hackage.haskell.org/package/deferred-folds-0.9.12 (NikitaVolkov)
2020-11-24 12:57:08 +0100 <ski> in Mercury, it's just ad hoc overloading of the modes, no uniqueness variables with bounds
2020-11-24 12:57:28 +0100 <nr3rsl> Hi guys, i'm looking for haskell programmers to work in portugal any one?
2020-11-24 13:00:24 +0100 <bulters> Can vouch for PT as a country... Brilliant place to live...
2020-11-24 13:00:40 +0100 <nr3rsl> yes it is :)
2020-11-24 13:00:51 +0100 <nr3rsl> but no haskell guys :(
2020-11-24 13:01:28 +0100 <drdo> nr3rsl: What kind of work?
2020-11-24 13:02:28 +0100concept2(~concept2@unaffiliated/tubo) (Quit: See ya later!)
2020-11-24 13:03:31 +0100concept2(~concept2@unaffiliated/tubo)
2020-11-24 13:04:49 +0100cosimone(~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd)
2020-11-24 13:04:57 +0100 <nr3rsl> its related to trains
2020-11-24 13:05:51 +0100 <nr3rsl> join a big team 20+
2020-11-24 13:08:23 +0100darjeeling_(~darjeelin@122.245.219.209)
2020-11-24 13:12:54 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2020-11-24 13:17:16 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 240 seconds)
2020-11-24 13:17:40 +0100LKoen(~LKoen@169.244.88.92.rev.sfr.net)
2020-11-24 13:24:02 +0100bulters(~jeroen@5920ab49.static.cust.trined.nl) (Ping timeout: 264 seconds)
2020-11-24 13:24:30 +0100 <maerwald> functional safety?
2020-11-24 13:25:57 +0100 <Uniaika> < nr3rsl> but no haskell guys :( // hahaha we have one of yours in my company!
2020-11-24 13:26:10 +0100 <Uniaika> he went back to Portugal when France went into quarantine
2020-11-24 13:26:18 +0100xsperry(~as@unaffiliated/xsperry) ()
2020-11-24 13:26:20 +0100xsperry(~as@unaffiliated/xsperry)
2020-11-24 13:27:08 +0100 <Uniaika> nr3rsl: long story short, if you want to hire people for a team, hire a couple of experts and then people who are willing to learn
2020-11-24 13:27:25 +0100 <Uniaika> you don't need to hire a team full of experts
2020-11-24 13:28:29 +0100 <maerwald> Uniaika: yeah, for knowledge, only the team maximum is relevant, for motivation the sum :)
2020-11-24 13:29:08 +0100cosimone(~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd) (Quit: cosimone)
2020-11-24 13:29:31 +0100 <Uniaika> :)
2020-11-24 13:29:37 +0100raichoo(~raichoo@213.240.178.58) (Quit: Lost terminal)
2020-11-24 13:30:05 +0100 <maerwald> (also, the most knowledgable guys are usually harder to motivate)
2020-11-24 13:31:10 +0100Tario(~Tario@201.192.165.173)
2020-11-24 13:31:25 +0100justanotheruser(~justanoth@unaffiliated/justanotheruser) (Ping timeout: 272 seconds)
2020-11-24 13:32:20 +0100 <dminuoso> Say Im folding/traversing a Data.Graph.tree, I want to keep track of the current path, as a sort of `traverse :: (NonEmpty a -> f b) -> Tree a -> f (Tree b)`, can I create this out of combinators trivially?
2020-11-24 13:32:35 +0100lpy(~nyd@unaffiliated/elysian)
2020-11-24 13:32:35 +0100 <dminuoso> Or should I build this by hand?
2020-11-24 13:33:06 +0100bulters(~jeroen@82-161-48-217.ip.xs4all.nl)
2020-11-24 13:34:21 +0100Zetagon(~leo@c151-177-52-233.bredband.comhem.se)
2020-11-24 13:35:09 +0100Tops2(~Tobias@dyndsl-095-033-095-017.ewe-ip-backbone.de)
2020-11-24 13:35:20 +0100elfets(~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de)
2020-11-24 13:36:16 +0100 <nr3rsl> i'm looking for people that is independent we are hiring juniors also but we need experienced people in the beggining
2020-11-24 13:36:34 +0100neiluj(~jco@unaffiliated/neiluj) (Quit: Lost terminal)
2020-11-24 13:36:35 +0100Entertainment(~entertain@104.246.132.210)
2020-11-24 13:37:07 +0100 <dminuoso> nr3rsl: Try also haskell-cafe
2020-11-24 13:38:29 +0100 <Rembane> nr3rsl: On premise or remote?
2020-11-24 13:38:54 +0100 <nr3rsl> right now its ok to be remote due this covid situation
2020-11-24 13:39:19 +0100 <nr3rsl> but in the future we would like to have a team in the office
2020-11-24 13:39:34 +0100 <nr3rsl> but its important to have the same timezone
2020-11-24 13:39:41 +0100 <nr3rsl> ie pt uk
2020-11-24 13:40:05 +0100Achylles(~Achylles@177.188.61.67)
2020-11-24 13:40:36 +0100 <sshine> do you mean it important to have a mostly overlapping working day? or is it important to live in UTC+0 regardless of global latitude? :)
2020-11-24 13:41:00 +0100hackagemassiv 0.5.7.0 - Massiv (Массив) is an Array Library. https://hackage.haskell.org/package/massiv-0.5.7.0 (lehins)
2020-11-24 13:41:07 +0100Digit(~user@fsf/member/digit)
2020-11-24 13:41:14 +0100Achylles(~Achylles@177.188.61.67) (Max SendQ exceeded)
2020-11-24 13:41:21 +0100olligobber(olligobber@gateway/vpn/privateinternetaccess/olligobber) (Remote host closed the connection)
2020-11-24 13:41:44 +0100Achylles(~Achylles@177.188.61.67)
2020-11-24 13:42:45 +0100 <Digit> hi. is yi the only haskell extensible text editor written in haskell? is yi /it/? :)
2020-11-24 13:43:11 +0100 <sshine> Digit, I haven't seen another one.
2020-11-24 13:43:20 +0100 <merijn> There was another one, but I don't think either really gets used
2020-11-24 13:43:20 +0100 <dminuoso> There was also rasa
2020-11-24 13:43:27 +0100 <merijn> leksah?
2020-11-24 13:43:29 +0100 <sshine> Leksah!
2020-11-24 13:43:39 +0100 <maerwald> leksah was using y
2020-11-24 13:43:39 +0100Lku(5fa448e7@95.164.72.231)
2020-11-24 13:43:41 +0100 <maerwald> yi
2020-11-24 13:43:54 +0100 <maerwald> or some gtk thing
2020-11-24 13:44:06 +0100 <sshine> yi means 1 in Chinese.
2020-11-24 13:44:07 +0100 <maerwald> I don't think it had its own editor implementation
2020-11-24 13:44:17 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2020-11-24 13:44:51 +0100 <sshine> if someone makes a sequel, it should be called "er" (二).
2020-11-24 13:45:24 +0100 <maerwald> I'd call it baozi =)
2020-11-24 13:46:14 +0100 <sshine> or taozi 🍑 :P
2020-11-24 13:46:29 +0100geekosaur(ac3a549d@172.58.84.157)
2020-11-24 13:47:19 +0100drbean(~drbean@TC210-63-209-208.static.apol.com.tw)
2020-11-24 13:47:47 +0100FreeBirdLjj(~freebirdl@101.228.42.108)
2020-11-24 13:47:53 +0100alp(~alp@2a01:e0a:58b:4920:92c:402a:f3e7:76c8) (Ping timeout: 272 seconds)
2020-11-24 13:47:53 +0100jiribenes(~jiribenes@rosa.jiribenes.com) (Ping timeout: 272 seconds)
2020-11-24 13:48:07 +0100 <maerwald> shen jian bao
2020-11-24 13:48:21 +0100 <maerwald> (there must be a monad metaphor here)
2020-11-24 13:48:57 +0100 <maerwald> but tbf, they look like functors to me, with this little opening at the top
2020-11-24 13:50:03 +0100alp(~alp@2a01:e0a:58b:4920:d1f9:69ca:c0b0:463d)
2020-11-24 13:50:32 +0100texasmynsted(~texasmyns@212.102.44.39)
2020-11-24 13:52:38 +0100FreeBirdLjj(~freebirdl@101.228.42.108) (Ping timeout: 256 seconds)
2020-11-24 13:53:56 +0100AlterEgo-(~ladew@124-198-158-163.dynamic.caiway.nl)
2020-11-24 13:55:16 +0100texasmynsted(~texasmyns@212.102.44.39) (Ping timeout: 265 seconds)
2020-11-24 13:55:36 +0100darjeeling_(~darjeelin@122.245.219.209) (Ping timeout: 240 seconds)
2020-11-24 13:55:54 +0100texasmynsted(~texasmyns@212.102.44.39)
2020-11-24 13:56:45 +0100kuribas(~user@ptr-25vy0i6zrjp217580gl.18120a2.ip6.access.telenet.be) (Ping timeout: 272 seconds)
2020-11-24 13:56:50 +0100jiribenes(~jiribenes@rosa.jiribenes.com)
2020-11-24 13:58:53 +0100mmfood(~mmfood@81-232-132-159-no64.tbcn.telia.com)
2020-11-24 14:00:14 +0100frdg(~nick@pool-71-184-143-249.bstnma.fios.verizon.net)
2020-11-24 14:00:18 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
2020-11-24 14:00:35 +0100texasmynsted(~texasmyns@212.102.44.39) (Ping timeout: 265 seconds)
2020-11-24 14:02:51 +0100frdg(~nick@pool-71-184-143-249.bstnma.fios.verizon.net) ()
2020-11-24 14:02:56 +0100frdg(~nick@pool-71-184-143-249.bstnma.fios.verizon.net)
2020-11-24 14:04:11 +0100jlamothe(~jlamothe@198.251.55.207)
2020-11-24 14:04:18 +0100urodna(~urodna@unaffiliated/urodna)
2020-11-24 14:04:20 +0100perrier-jouet(~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (Quit: WeeChat 2.9)
2020-11-24 14:04:40 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 260 seconds)
2020-11-24 14:06:21 +0100foursaph(~foursaph@dynamic-077-006-021-060.77.6.pool.telefonica.de)
2020-11-24 14:08:25 +0100texasmynsted(~texasmyns@212.102.44.39)
2020-11-24 14:11:00 +0100raichoo(~raichoo@213.240.178.58)
2020-11-24 14:11:14 +0100 <sshine> @pl \x y -> [x,y]
2020-11-24 14:11:14 +0100 <lambdabot> (. return) . (:)
2020-11-24 14:11:17 +0100 <sshine> definitely fancier.
2020-11-24 14:12:17 +0100darjeeling_(~darjeelin@122.245.219.209)
2020-11-24 14:13:18 +0100 <sshine> > ((. (:[])) . (:)) 1 2
2020-11-24 14:13:20 +0100 <lambdabot> [1,2]
2020-11-24 14:13:23 +0100Achylles(~Achylles@177.188.61.67) (Remote host closed the connection)
2020-11-24 14:13:55 +0100 <sshine> that's the "big robot monkey on top of small monkey" operator
2020-11-24 14:14:20 +0100 <maerwald> PR rejected.
2020-11-24 14:14:47 +0100 <sshine> ó_Ò
2020-11-24 14:14:49 +0100 <merijn> :p
2020-11-24 14:15:12 +0100acagastya(~acagastya@wikinews/acagastya)
2020-11-24 14:16:53 +0100 <acagastya> Hi, the first line of my file is `import Data.List.group` -- but I am getting `error: parse error on input ‘Data.List.group’`.
2020-11-24 14:17:00 +0100machinedgod(~machinedg@135-23-192-217.cpe.pppoe.ca)
2020-11-24 14:17:25 +0100 <geekosaur> the correct syntax would be: import Data.List (group)
2020-11-24 14:18:09 +0100 <geekosaur> and "Data.List.group" is not a legal module name
2020-11-24 14:19:20 +0100 <acagastya> All right, it looks like it worked. Thanks, geekosaur!
2020-11-24 14:20:04 +0100Lku(5fa448e7@95.164.72.231) (Ping timeout: 245 seconds)
2020-11-24 14:20:49 +0100 <yushyin> not the most helpful error message
2020-11-24 14:21:30 +0100 <geekosaur> everything around qualified names is not the most helpful in ghc
2020-11-24 14:21:35 +0100shangxiao(~davids@101.181.159.140) (Quit: WeeChat 3.0)
2020-11-24 14:21:47 +0100 <acagastya> In my defence, that is what <https://wiki.haskell.org/99_questions/Solutions/8> said.
2020-11-24 14:22:17 +0100cosimone(~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd)
2020-11-24 14:22:31 +0100 <hpc> if you did import qualified Data.List, in the body of your code you would write "Data.List.group" to refer to that function
2020-11-24 14:22:49 +0100thevishy(~Nishant@103.210.43.91)
2020-11-24 14:23:32 +0100SanchayanMaity(~Sanchayan@171.76.82.54) (Quit: SanchayanMaity)
2020-11-24 14:23:41 +0100 <hpc> you can refer to identifiers by the module they come from, but imports always have to be modules, not identifiers
2020-11-24 14:26:36 +0100 <geekosaur> kinda sounds like someone did a quick and very dirty "fix" of the wiki for FTP
2020-11-24 14:28:30 +0100 <hpc> probably
2020-11-24 14:28:36 +0100foursaph(~foursaph@dynamic-077-006-021-060.77.6.pool.telefonica.de) (Quit: leaving)
2020-11-24 14:30:47 +0100jchia__(~jchia@58.32.37.146) (Quit: Leaving.)
2020-11-24 14:31:08 +0100jchia__(~jchia@45.32.62.73)
2020-11-24 14:31:35 +0100 <ski> seems that page doesn't mention `import'
2020-11-24 14:31:59 +0100perrier-jouet(~perrier-j@modemcable012.251-130-66.mc.videotron.ca)
2020-11-24 14:32:27 +0100skisighs
2020-11-24 14:32:40 +0100 <hekkaidekapus> @index group
2020-11-24 14:32:40 +0100 <lambdabot> GHC.OldList, Data.List, Data.ByteString.Lazy, Data.ByteString.Lazy.Char8, Data.ByteString, Data.ByteString.Char8
2020-11-24 14:32:48 +0100 <ski> i can't rightly comprehend how people can think
2020-11-24 14:32:50 +0100 <ski> compress (x:xs) = x : (compress $ dropWhile (== x) xs)
2020-11-24 14:32:56 +0100 <ski> is more reasonable than
2020-11-24 14:33:01 +0100 <ski> compress (x:xs) = x : compress (dropWhile (== x) xs)
2020-11-24 14:33:34 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed)
2020-11-24 14:33:35 +0100kuribas(~user@ptr-25vy0i9hk5zsklfgprx.18120a2.ip6.access.telenet.be)
2020-11-24 14:33:58 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2020-11-24 14:34:01 +0100hekkaidekapuswonders whether lambdabot is using the GHC 8.10 series.
2020-11-24 14:34:11 +0100 <geekosaur> @version
2020-11-24 14:34:11 +0100 <lambdabot> lambdabot 5.3.0.1
2020-11-24 14:34:11 +0100 <lambdabot> git clone https://github.com/lambdabot/lambdabot
2020-11-24 14:34:19 +0100 <geekosaur> hm
2020-11-24 14:34:30 +0100 <geekosaur> thought that also output ghc version
2020-11-24 14:34:38 +0100 <merijn> > System.Info.compilerVersion
2020-11-24 14:34:40 +0100 <lambdabot> error:
2020-11-24 14:34:40 +0100 <lambdabot> Not in scope: ‘System.Info.compilerVersion’
2020-11-24 14:34:40 +0100 <lambdabot> No module named ‘System.Info’ is imported.
2020-11-24 14:34:43 +0100 <merijn> aww
2020-11-24 14:35:01 +0100 <hekkaidekapus> Because Data.List, when unqualified, spews warning under 8.10.x.
2020-11-24 14:35:03 +0100 <merijn> @import System.Info
2020-11-24 14:35:03 +0100 <lambdabot> Unknown command, try @list
2020-11-24 14:35:13 +0100 <merijn> I forget how to add imports >.>
2020-11-24 14:35:18 +0100 <geekosaur> yahb has 8.10 iirc
2020-11-24 14:35:26 +0100hexfive(~hexfive@50-47-142-195.evrt.wa.frontiernet.net) (Quit: i must go. my people need me.)
2020-11-24 14:35:27 +0100 <merijn> % System.Info.compilerVersion
2020-11-24 14:35:28 +0100 <yahb> merijn: Version {versionBranch = [8,10], versionTags = []}
2020-11-24 14:35:29 +0100 <geekosaur> @let import System.Info
2020-11-24 14:35:31 +0100 <lambdabot> Defined.
2020-11-24 14:35:36 +0100 <merijn> > System.Info.compilerVersion
2020-11-24 14:35:39 +0100 <lambdabot> Version {versionBranch = [8,10], versionTags = []}
2020-11-24 14:35:42 +0100 <merijn> There you go
2020-11-24 14:35:53 +0100 <hekkaidekapus> % head [1]
2020-11-24 14:35:54 +0100 <yahb> hekkaidekapus: 1
2020-11-24 14:36:35 +0100 <hekkaidekapus> % -set -Wall
2020-11-24 14:36:36 +0100 <yahb> hekkaidekapus: ; <interactive>:60:7: error:; * Data constructor not in scope: Wall :: ASetter s t a b -> b -> s -> t; * Perhaps you meant one of these: variable `all' (imported from Prelude), variable `BSL.all' (imported from Data.ByteString.Lazy), variable `BS.all' (imported from Data.ByteString)
2020-11-24 14:36:43 +0100 <hekkaidekapus> % :set -Wall
2020-11-24 14:36:43 +0100 <yahb> hekkaidekapus:
2020-11-24 14:36:48 +0100 <hekkaidekapus> % head [1]
2020-11-24 14:36:48 +0100 <yahb> hekkaidekapus: ; <interactive>:62:1: warning: [-Wtype-defaults]; * Defaulting the following constraints to type `Integer'; (Show a0) arising from a use of `print' at <interactive>:62:1-8; (Num a0) arising from a use of `it' at <interactive>:62:1-8; * In a stmt of an interactive GHCi command: print it; 1
2020-11-24 14:37:20 +0100 <hekkaidekapus> % :q
2020-11-24 14:37:21 +0100 <yahb> hekkaidekapus:
2020-11-24 14:38:28 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 246 seconds)
2020-11-24 14:39:48 +0100jchia__(~jchia@45.32.62.73) (Remote host closed the connection)
2020-11-24 14:40:58 +0100jchia__(~jchia@45.32.62.73)
2020-11-24 14:41:27 +0100mpereira(~mpereira@2a02:810d:f40:d96:f587:a442:5e3:1e55) (Ping timeout: 260 seconds)
2020-11-24 14:41:27 +0100woodpecker-with-(3e0497aa@62.4.151.170)
2020-11-24 14:42:28 +0100jchia__(~jchia@45.32.62.73) (Remote host closed the connection)
2020-11-24 14:42:57 +0100ericsagn1(~ericsagne@2405:6580:0:5100:b274:8c51:102c:8ca9) (Ping timeout: 260 seconds)
2020-11-24 14:43:22 +0100adm_(~adm@43.229.88.197)
2020-11-24 14:43:23 +0100jchia__(~jchia@58.32.37.146)
2020-11-24 14:43:27 +0100fendor_(~fendor@178.165.130.67.wireless.dyn.drei.com)
2020-11-24 14:43:44 +0100texasmynsted(~texasmyns@212.102.44.39) (Remote host closed the connection)
2020-11-24 14:43:53 +0100st8less(~st8less@2603:a060:11fd:0:b11b:e5d8:ecef:8990)
2020-11-24 14:44:20 +0100texasmynsted(~texasmyns@212.102.44.39)
2020-11-24 14:44:22 +0100drbean(~drbean@TC210-63-209-208.static.apol.com.tw) (Ping timeout: 272 seconds)
2020-11-24 14:44:52 +0100mmfood(~mmfood@81-232-132-159-no64.tbcn.telia.com) (Quit: Leaving)
2020-11-24 14:45:16 +0100Iceland_jack(~user@31.124.48.169)
2020-11-24 14:46:00 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2020-11-24 14:46:01 +0100fendor(~fendor@91.141.0.31.wireless.dyn.drei.com) (Ping timeout: 265 seconds)
2020-11-24 14:47:04 +0100bergey(~user@pool-74-108-99-127.nycmny.fios.verizon.net)
2020-11-24 14:47:27 +0100ClaudiusMaximus(~claude@198.123.199.146.dyn.plus.net)
2020-11-24 14:47:45 +0100ClaudiusMaximus(~claude@198.123.199.146.dyn.plus.net) (Changing host)
2020-11-24 14:47:45 +0100ClaudiusMaximus(~claude@unaffiliated/claudiusmaximus)
2020-11-24 14:47:47 +0100jelleke(~jelle@2a01:7c8:aac1:50d:5054:ff:fe3b:9b7d) (Quit: WeeChat 1.6)
2020-11-24 14:49:00 +0100texasmynsted(~texasmyns@212.102.44.39) (Ping timeout: 260 seconds)
2020-11-24 14:49:59 +0100elfets(~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de) (Quit: Leaving)
2020-11-24 14:52:20 +0100cfricke(~cfricke@unaffiliated/cfricke) (Quit: WeeChat 2.9)
2020-11-24 14:52:33 +0100cosimone(~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd) (Remote host closed the connection)
2020-11-24 14:52:55 +0100cosimone(~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd)
2020-11-24 14:54:23 +0100st8less(~st8less@2603:a060:11fd:0:b11b:e5d8:ecef:8990) (Ping timeout: 272 seconds)
2020-11-24 15:01:05 +0100st8less(~st8less@2603:a060:11fd:0:b11b:e5d8:ecef:8990)
2020-11-24 15:01:06 +0100gxt(~gxt@gateway/tor-sasl/gxt) (Remote host closed the connection)
2020-11-24 15:01:06 +0100gxt(~gxt@gateway/tor-sasl/gxt)
2020-11-24 15:01:06 +0100thevishy(~Nishant@103.210.43.91) (Quit: Leaving)
2020-11-24 15:01:15 +0100cosimone(~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd) (Remote host closed the connection)
2020-11-24 15:01:32 +0100hyperisco(~hyperisco@d192-186-117-226.static.comm.cgocable.net)
2020-11-24 15:01:37 +0100cosimone(~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd)
2020-11-24 15:02:23 +0100cr3(~cr3@192-222-143-195.qc.cable.ebox.net)
2020-11-24 15:03:00 +0100hackageprolude 0.0.0.11 - ITProTV's custom prelude https://hackage.haskell.org/package/prolude-0.0.0.11 (saramuse)
2020-11-24 15:03:56 +0100woodpecker-with-(3e0497aa@62.4.151.170) (Remote host closed the connection)
2020-11-24 15:05:56 +0100mpereira(~mpereira@2a02:810d:f40:d96:f587:a442:5e3:1e55)
2020-11-24 15:06:36 +0100pie_(~pie_bnc]@unaffiliated/pie-/x-0787662) (Ping timeout: 240 seconds)
2020-11-24 15:06:36 +0100vancz(~vancz@unaffiliated/vancz) (Ping timeout: 240 seconds)
2020-11-24 15:08:27 +0100cosimone(~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd) (Remote host closed the connection)
2020-11-24 15:09:46 +0100adm_(~adm@43.229.88.197) (Remote host closed the connection)
2020-11-24 15:10:07 +0100adm_(~adm@43.229.88.197)
2020-11-24 15:10:28 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2020-11-24 15:10:34 +0100vancz(~vancz@unaffiliated/vancz)
2020-11-24 15:10:34 +0100pie_(~pie_bnc]@unaffiliated/pie-/x-0787662)
2020-11-24 15:11:44 +0100ericsagnes(~ericsagne@2405:6580:0:5100:6150:c6af:125a:9cae)
2020-11-24 15:14:45 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 240 seconds)
2020-11-24 15:16:03 +0100 <dminuoso> Im converting a file into a tree by parsing line-by-line. The knowledge where the next node goes comes from ambient state, is there a general trick for building a tree like that? Just have some `data Tree = Tree (IORef [Tree])` that I walk around and attach nodes at the right spots?
2020-11-24 15:19:06 +0100 <merijn> dminuoso: ooh...lemme know when you figure it out, I have a similar-ish problem :p
2020-11-24 15:21:01 +0100hackagequickcheck-arbitrary-template 0.2.1.1 - Generate QuickCheck Gen for Sum Types https://hackage.haskell.org/package/quickcheck-arbitrary-template-0.2.1.1 (mchaver)
2020-11-24 15:24:12 +0100elfets(~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de)
2020-11-24 15:24:36 +0100texasmynsted(~texasmyns@212.102.44.39)
2020-11-24 15:24:37 +0100 <dminuoso> https://hackage.haskell.org/package/uniplate-1.6.13/docs/Data-Generics-Uniplate-Zipper.html
2020-11-24 15:24:44 +0100 <ski> what's the traversal order for serializing the tree ?
2020-11-24 15:25:22 +0100 <dminuoso> ski: Mmm good question. I think it doesn't matter.
2020-11-24 15:25:43 +0100 <dminuoso> Ah no, it will be depth first
2020-11-24 15:25:51 +0100 <nr3rsl> i'm looking for people that is independent we are hiring juniors also but we need experienced people in the beggining (if you are intrested private msg pls)
2020-11-24 15:25:59 +0100 <ski> are you trying to avoid a (multiply) recursive parsing ?
2020-11-24 15:26:38 +0100Gurkenglas(~Gurkengla@unaffiliated/gurkenglas) (Ping timeout: 256 seconds)
2020-11-24 15:27:06 +0100 <ezzieyguywuf> is this standard syntax or a language extension? `inp,outp :: Maybe String -> Flag`
2020-11-24 15:27:42 +0100 <dminuoso> ezzieyguywuf: standard haskell
2020-11-24 15:27:43 +0100 <geekosaur> standard syntax
2020-11-24 15:28:07 +0100 <ezzieyguywuf> oh wow! does it have a fancy name? I've never seen it before.
2020-11-24 15:28:12 +0100 <geekosaur> you can declare multiple names that way, it's just not considered the best of style except in some cases
2020-11-24 15:28:24 +0100 <ezzieyguywuf> ah, ok
2020-11-24 15:28:31 +0100 <geekosaur> better is considered to keep name declarations and definitions together
2020-11-24 15:29:26 +0100 <merijn> If you wanna define a type, for a tuple it can work well
2020-11-24 15:29:59 +0100 <merijn> "a, b :: Int; (a, b) = (1, 2)" that's a dumb example, of course, but you get the idea
2020-11-24 15:30:07 +0100 <merijn> ezzieyguywuf: Lemme blow your mind further :p
2020-11-24 15:30:25 +0100 <merijn> ezzieyguywuf: You can define module variables using pattern matching just fine
2020-11-24 15:30:28 +0100texasmynsted(~texasmyns@212.102.44.39) (Ping timeout: 260 seconds)
2020-11-24 15:30:42 +0100 <geekosaur> you did there
2020-11-24 15:30:46 +0100 <merijn> "[x,y,z] = [1,2,3]" at the module top level is perfectly legal
2020-11-24 15:31:00 +0100trcc(~trcc@130.225.16.16) (Ping timeout: 260 seconds)
2020-11-24 15:31:07 +0100mputz(~Thunderbi@dslb-084-058-211-084.084.058.pools.vodafone-ip.de)
2020-11-24 15:33:50 +0100adm_(~adm@43.229.88.197) (Remote host closed the connection)
2020-11-24 15:34:12 +0100adm_(~adm@43.229.88.197)
2020-11-24 15:36:57 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2020-11-24 15:39:34 +0100 <dminuoso> ski: Mmm. That question made me think.
2020-11-24 15:39:43 +0100texasmynsted(~texasmyns@212.102.44.39)
2020-11-24 15:41:06 +0100bergey`(~user@107.181.19.30)
2020-11-24 15:44:12 +0100bergey(~user@pool-74-108-99-127.nycmny.fios.verizon.net) (Ping timeout: 256 seconds)
2020-11-24 15:45:23 +0100mputz(~Thunderbi@dslb-084-058-211-084.084.058.pools.vodafone-ip.de) (Quit: mputz)
2020-11-24 15:45:31 +0100geekosaur(ac3a549d@172.58.84.157) (Remote host closed the connection)
2020-11-24 15:47:45 +0100 <hekkaidekapus> dminuoso: You could also give tries a try.
2020-11-24 15:48:01 +0100 <dminuoso> Not sure whether you just wanted to make that pun..
2020-11-24 15:48:09 +0100 <hekkaidekapus> heh
2020-11-24 15:48:31 +0100 <hekkaidekapus> Ok, seriously, why not a trie?
2020-11-24 15:49:09 +0100 <merijn> So, I basically have this tree encoded as a Vector. I was hoping I could somehow (abuse) pattern synonyms to represent it as an ADT style true, but I can't quite make that work, it seems?
2020-11-24 15:49:33 +0100 <dminuoso> hekkaidekapus: Generating a tree from a recursive algorithm is easy, but the data I have make a recursive parser tough to write.
2020-11-24 15:50:45 +0100 <dminuoso> But.. perhaps Zipper from uniplate is the real solution here
2020-11-24 15:50:55 +0100royal_screwup213(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2020-11-24 15:50:56 +0100Iceland_jack(~user@31.124.48.169) (Ping timeout: 240 seconds)
2020-11-24 15:51:01 +0100 <dminuoso> So my parser essentially drives a Zipper around, and constantly runs `replaceHole`
2020-11-24 15:51:26 +0100 <dminuoso> The alternate option is I try and transform the data and implement a recursive parser.
2020-11-24 15:52:14 +0100geowiesnot(~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr)
2020-11-24 15:52:42 +0100fendor_fendor
2020-11-24 15:52:48 +0100 <hekkaidekapus> Which bring you back to deciding how you want to traverse.
2020-11-24 15:53:59 +0100 <dminuoso> Maybe I misunderstood, what is the purpose of that question, hekkaidekapus?
2020-11-24 15:54:02 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 272 seconds)
2020-11-24 15:55:41 +0100da39a3ee5e6b4b0d(~da39a3ee5@mx-ll-171.5.161-165.dynamic.3bb.co.th) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-11-24 15:55:53 +0100 <hekkaidekapus> It was just an idea: if you represent the data as a multi-keyed map, each step forming a key, you could later merge it into a trie.
2020-11-24 15:56:08 +0100 <hekkaidekapus> But maybe that’s not how your data is organised.
2020-11-24 15:56:40 +0100 <acagastya> What is this line supposed to mean? `quicksort :: Ord a => [a] -> [a]`. Specifically, `Ord a =>`
2020-11-24 15:56:53 +0100elfets(~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de) (Ping timeout: 256 seconds)
2020-11-24 15:56:57 +0100 <xerox_> acagastya: means whatever type 'a' ends up being, it has to have an Ord instance, it's a constraint
2020-11-24 15:57:36 +0100Sgeo(~Sgeo@ool-18b982ad.dyn.optonline.net)
2020-11-24 15:57:55 +0100geowiesnot(~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) (Ping timeout: 246 seconds)
2020-11-24 15:58:19 +0100ph88(~ph88@ip5f5af6cd.dynamic.kabel-deutschland.de)
2020-11-24 15:58:55 +0100madnight(~madnight@static.59.103.201.195.clients.your-server.de) (Quit: ZNC 1.7.1 - https://znc.in)
2020-11-24 15:59:20 +0100 <acagastya> Okay. When I just type `quicksort :: [a] -> [a]` and have the implementation -- it does not work -- it gives an error. Why?
2020-11-24 15:59:28 +0100 <solonarv> the fact that 'a' is a type variable means "the caller of this function can choose to replace a with any type"; the Ord a => bit means "... as long as there exists an Ord a instance"
2020-11-24 15:59:34 +0100madnight(~madnight@static.59.103.201.195.clients.your-server.de)
2020-11-24 15:59:41 +0100 <merijn> acagastya: Presumably because you're using < :p
2020-11-24 15:59:45 +0100 <merijn> :t (<)
2020-11-24 15:59:46 +0100 <lambdabot> Ord a => a -> a -> Bool
2020-11-24 15:59:48 +0100 <merijn> :t (<=)
2020-11-24 15:59:49 +0100 <solonarv> this is needed because the implementation of quicksort uses functions like <= or < and so on
2020-11-24 15:59:49 +0100 <lambdabot> Ord a => a -> a -> Bool
2020-11-24 15:59:50 +0100 <xerox_> acagastya: because the implementation uses some methods from the ord class on the elements of the list, in this case to compare them
2020-11-24 16:00:21 +0100 <xerox_> hence its argument can't be a list of things that are not comparable
2020-11-24 16:00:23 +0100 <acagastya> `<=` and `<` are functions?
2020-11-24 16:00:32 +0100 <xerox_> they are!
2020-11-24 16:01:09 +0100 <acagastya> Wow -- I have so much to unlearn to learn Haskell.
2020-11-24 16:01:10 +0100 <xerox_> if you type :info Ord on ghci you'll see all the functions in the Ord class at the top of the output
2020-11-24 16:01:23 +0100 <xerox_> followed by a decently long list of the instances already in scope
2020-11-24 16:01:35 +0100gproto23(~gproto23@unaffiliated/gproto23)
2020-11-24 16:01:56 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
2020-11-24 16:02:05 +0100 <dminuoso> hekkaidekapus: Roughly the data is organized like this: https://gist.github.com/dminuoso/e05c57c211a4b544052dc26f99e9266f
2020-11-24 16:02:19 +0100 <dminuoso> (I've cleaned it from a lot of the other baggage)
2020-11-24 16:02:46 +0100 <dminuoso> So each line containing a number is a node in that tree
2020-11-24 16:02:51 +0100 <acagastya> I have been thinking how would the minds of the beginners to programming evolve, if they were taught Haskell as their first PL. The way to think abstractly is so different from what I am used to!
2020-11-24 16:02:55 +0100 <xerox_> they might seem special because they are operators and hence use infix syntax, i.e. you put them between tha arguments instead of before the argument with standard functions, but that's just syntax
2020-11-24 16:03:20 +0100 <merijn> acagastya: Operators are just "functions that you write infix"
2020-11-24 16:03:25 +0100alp(~alp@2a01:e0a:58b:4920:d1f9:69ca:c0b0:463d) (Ping timeout: 272 seconds)
2020-11-24 16:03:28 +0100 <xerox_> you *can* use them with the standard function application too tho, with parens:
2020-11-24 16:03:33 +0100 <xerox_> > (<=) 2 5
2020-11-24 16:03:35 +0100 <lambdabot> True
2020-11-24 16:03:35 +0100 <acagastya> Like a `mod` b, merijn?
2020-11-24 16:03:41 +0100 <merijn> Can even define your own
2020-11-24 16:03:50 +0100 <dminuoso> hekkaidekapus: oh and these numbers could be even more nested, so you could have .11.2, and so forth
2020-11-24 16:03:55 +0100 <dminuoso> these would represent further nested nodes
2020-11-24 16:03:57 +0100 <merijn> > let x ☃ y = (x-y) * (y-x) in 3 ☃ 5
2020-11-24 16:03:59 +0100 <lambdabot> -4
2020-11-24 16:04:06 +0100 <xerox_> what a cutie of an operator
2020-11-24 16:04:11 +0100 <dminuoso> if a number starts with `.` its a child of the previos absolute number
2020-11-24 16:04:31 +0100 <dminuoso> I mean yeah, with a recursive parser I'd have to do a lot of lookahead
2020-11-24 16:04:37 +0100 <merijn> xerox_: Everyone loves unicode snowman :p
2020-11-24 16:04:56 +0100 <xerox_> it's basically seasonal too
2020-11-24 16:05:19 +0100mputz(~Thunderbi@dslb-084-058-211-084.084.058.pools.vodafone-ip.de)
2020-11-24 16:05:20 +0100 <hekkaidekapus> dminuoso: I see. So, it’s not only about data representation, it’s also about parsing strategy.
2020-11-24 16:05:48 +0100 <dminuoso> hekkaidekapus: Maybe, I dont know. Until now I parsed it into a sort intermediate language with a sketchy interpreter
2020-11-24 16:06:27 +0100 <hekkaidekapus> Maybe write down a grammar and be done with parsing.
2020-11-24 16:06:49 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 264 seconds)
2020-11-24 16:07:02 +0100 <dminuoso> well the raw parsing is done, I was just really lazy since ParsecT is a monad transformer..
2020-11-24 16:07:08 +0100 <dminuoso> so I tohught "why not do more work while Im parsing"
2020-11-24 16:07:30 +0100hackagereq 3.8.0 - Easy-to-use, type-safe, expandable, high-level HTTP client library https://hackage.haskell.org/package/req-3.8.0 (mrkkrp)
2020-11-24 16:08:01 +0100royal_screwup213(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed)
2020-11-24 16:08:28 +0100 <dminuoso> For some bizarre reason, in this week I've this type of "how do I generate a tree properly from a flat file" in three completely unrelated projects
2020-11-24 16:08:31 +0100royal_screwup213(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2020-11-24 16:08:32 +0100 <hekkaidekapus> I would go with the Happy route to record steps taken wwhile parsing and use those to represent the final tidy data.
2020-11-24 16:08:47 +0100 <dminuoso> "steps taken"?
2020-11-24 16:08:58 +0100 <hekkaidekapus> Production rules.
2020-11-24 16:11:53 +0100 <dminuoso> I see, so concretely that could mean annotating the data with fully resolved paths, where I might have a list of nodes each with a sort of path `data Node a = Node { nodeLabel a, nodePath :: NonEmpty Int }`
2020-11-24 16:12:00 +0100 <dminuoso> as the result of the parser
2020-11-24 16:12:16 +0100 <dminuoso> And then it's just a matter of folding [Node] into a free
2020-11-24 16:12:18 +0100 <dminuoso> *tree
2020-11-24 16:12:33 +0100 <hekkaidekapus> Yep.
2020-11-24 16:12:55 +0100 <hekkaidekapus> The bulk of the work is in writing the grammar.
2020-11-24 16:12:57 +0100adm_(~adm@43.229.88.197) (Remote host closed the connection)
2020-11-24 16:13:10 +0100royal_screwup213(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 256 seconds)
2020-11-24 16:15:25 +0100n0042(d055ed89@208.85.237.137)
2020-11-24 16:16:30 +0100andos(~dan@69-165-210-185.cable.teksavvy.com)
2020-11-24 16:17:58 +0100 <dminuoso> Mmm, oh. I dont even have to do the folding myself
2020-11-24 16:18:03 +0100 <dminuoso> https://hackage.haskell.org/package/tries-0.0.6.1/docs/Data-Trie-Class.html#v:fromFoldable
2020-11-24 16:18:05 +0100 <dminuoso> Cute
2020-11-24 16:18:40 +0100 <hekkaidekapus> \o/
2020-11-24 16:18:49 +0100bulters(~jeroen@82-161-48-217.ip.xs4all.nl) (Ping timeout: 264 seconds)
2020-11-24 16:19:11 +0100nr3rsl(nr3rsl@94.63.218.65) ()
2020-11-24 16:19:22 +0100hseg(~gesh@185.120.126.113)
2020-11-24 16:19:31 +0100 <hekkaidekapus> There is also generic-trie (hey glguy) and multi-trie.
2020-11-24 16:19:35 +0100 <dminuoso> hekkaidekapus: Guess you didn't just want to make a pun after all. Thanks for trieing.
2020-11-24 16:19:45 +0100 <hekkaidekapus> hahaha…
2020-11-24 16:19:57 +0100 <n0042> XD
2020-11-24 16:20:28 +0100 <arianvp> I have a question about overlapping instances
2020-11-24 16:20:38 +0100 <arianvp> https://github.com/haskell-servant/servant/issues/1367
2020-11-24 16:21:01 +0100 <arianvp> why would these two instances overlap? There is no `ToJSON` instance for `WithStatus n a`
2020-11-24 16:21:51 +0100 <dminuoso> arianvp: instance context is not considered for selection
2020-11-24 16:22:03 +0100 <arianvp> aaaah
2020-11-24 16:22:13 +0100 <arianvp> so I need to add an explicit `overlaps` here?
2020-11-24 16:22:31 +0100 <dminuoso> Well
2020-11-24 16:22:33 +0100 <dminuoso> instance MimeRender ctype a => MimeRender ctype (WithStatus _status a)
2020-11-24 16:22:36 +0100 <dminuoso> instance [overlappable] ToJSON a => MimeRender JSON a
2020-11-24 16:22:45 +0100 <dminuoso> Imagine you're tryng to match `MimeRender JSON (WithStatus 201 ())`
2020-11-24 16:22:48 +0100 <dminuoso> This matches *both*
2020-11-24 16:23:08 +0100 <dminuoso> Compare the instance heads
2020-11-24 16:23:10 +0100 <dminuoso> MimeRender ctype (WithStatus _status a
2020-11-24 16:23:15 +0100 <dminuoso> MimeRender JSON a
2020-11-24 16:23:32 +0100 <dminuoso> Both match, and none is more specific.
2020-11-24 16:24:40 +0100bulters(~jeroen@82-161-48-217.ip.xs4all.nl)
2020-11-24 16:24:49 +0100 <arianvp> hmm
2020-11-24 16:25:12 +0100 <arianvp> so I should make a instance MimeRender JSON a => MimeRender JSON (WithStatus _s a) instead ?
2020-11-24 16:25:14 +0100st8less(~st8less@2603:a060:11fd:0:b11b:e5d8:ecef:8990) (Ping timeout: 264 seconds)
2020-11-24 16:25:20 +0100 <arianvp> (for each content type)
2020-11-24 16:25:34 +0100 <arianvp> and mark that as overlapping?
2020-11-24 16:26:05 +0100 <dminuoso> Well you wouldnt have to mark it as overlapping, as the other instance is already overlappable
2020-11-24 16:26:07 +0100st8less(~st8less@2603:a060:11fd:0:b11b:e5d8:ecef:8990)
2020-11-24 16:26:24 +0100 <dminuoso> (for overlap to work, either overlapping or overlappable is enough)
2020-11-24 16:26:28 +0100 <arianvp> ah
2020-11-24 16:26:35 +0100 <arianvp> thanks!
2020-11-24 16:26:55 +0100adm_(~adm@43.229.88.197)
2020-11-24 16:27:05 +0100adm_(~adm@43.229.88.197) (Remote host closed the connection)
2020-11-24 16:27:20 +0100hseg(~gesh@185.120.126.113) (Ping timeout: 256 seconds)
2020-11-24 16:28:23 +0100adm_(~adm@43.229.88.197)
2020-11-24 16:29:03 +0100 <arianvp> *sends a fix*
2020-11-24 16:29:05 +0100gioyik(~gioyik@186.118.238.251)
2020-11-24 16:29:09 +0100 <dminuoso> arianvp: https://ghc.gitlab.haskell.org/ghc/doc/users_guide/exts/instances.html?highlight=overlapping
2020-11-24 16:29:23 +0100 <dminuoso> Also https://ghc.gitlab.haskell.org/ghc/doc/users_guide/exts/instances.html?highlight=overlapping#insta…
2020-11-24 16:32:00 +0100hackageunbounded-delays 0.1.1.1 - Unbounded thread delays and timeouts https://hackage.haskell.org/package/unbounded-delays-0.1.1.1 (RoelVanDijk)
2020-11-24 16:32:12 +0100royal_screwup213(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2020-11-24 16:32:55 +0100adm_(~adm@43.229.88.197) (Remote host closed the connection)
2020-11-24 16:33:31 +0100 <arianvp> I must say the GHC error message is horrible for this
2020-11-24 16:33:50 +0100 <arianvp> well in hindsight I understand it now
2020-11-24 16:34:15 +0100 <arianvp> it would be nice if it hid the context and highlight the parts that are in conflict
2020-11-24 16:34:23 +0100 <dminuoso> Is it horrible?
2020-11-24 16:34:33 +0100 <dminuoso> Well, it'd be misleading to hide the context
2020-11-24 16:35:47 +0100 <dminuoso> GHC *does* tell you that there's two matching instances for the constraint `MimeRender JSON (WithStatus 201 ())`
2020-11-24 16:35:55 +0100Df(5fa448e7@95.164.72.231)
2020-11-24 16:35:56 +0100Stanley00(~stanley00@unaffiliated/stanley00)
2020-11-24 16:36:11 +0100adm_(~adm@43.229.88.197)
2020-11-24 16:36:40 +0100sord937(~sord937@gateway/tor-sasl/sord937) (Remote host closed the connection)
2020-11-24 16:36:53 +0100 <arianvp> I got sidetracked into wondering "But WIthStatus" doesnt _have_ a ToJSON why would it overlap? but now that I know the contexts aren't considered it makes sense
2020-11-24 16:37:05 +0100 <arianvp> perhaps a note in the error message explaining that would be a nice nudge =)
2020-11-24 16:37:12 +0100toorevitimirp(~tooreviti@117.182.183.18) (Remote host closed the connection)
2020-11-24 16:37:43 +0100sord937(~sord937@gateway/tor-sasl/sord937)
2020-11-24 16:38:38 +0100 <dminuoso> Do you have a suggestion?
2020-11-24 16:40:20 +0100 <dminuoso> The crux is, GHC cant really know why it has the problem that it is.
2020-11-24 16:40:28 +0100Stanley00(~stanley00@unaffiliated/stanley00) (Ping timeout: 260 seconds)
2020-11-24 16:40:34 +0100 <dminuoso> If you look at the full algorithm described in https://ghc.gitlab.haskell.org/ghc/doc/users_guide/exts/instances.html?highlight=overlapping#overl…
2020-11-24 16:40:55 +0100 <dminuoso> (Which by the way is still incomplete, but that's another story)
2020-11-24 16:41:00 +0100hackagecli-extras 0.1.0.1 - Miscellaneous utilities for building and working with command line interfaces https://hackage.haskell.org/package/cli-extras-0.1.0.1 (abrar)
2020-11-24 16:41:46 +0100 <dminuoso> Then the algorithm is far more involved than than just "ignore context and find the best intsance"
2020-11-24 16:44:15 +0100ggole(~ggole@2001:8003:8119:7200:882e:5c1e:9189:4cff)
2020-11-24 16:44:25 +0100 <dminuoso> But admittedly, we see people stumbling over this nearly every day.
2020-11-24 16:44:40 +0100 <dminuoso> (And interestingly this behavior is not specified in the Haskell report either)
2020-11-24 16:44:41 +0100Iceland_jack(~user@31.124.48.169)
2020-11-24 16:44:50 +0100 <Uniaika> hi Iceland_jack :)
2020-11-24 16:44:54 +0100 <Uniaika> how are you?
2020-11-24 16:44:57 +0100 <arianvp> I dont think the error message needs to explain exactly what's happening with 100% accuracy
2020-11-24 16:45:07 +0100 <arianvp> but it's nice (rust does this as well) when an error lists a "Common cause"
2020-11-24 16:45:28 +0100 <arianvp> "Hey; you might not realise it but the context is not considered when deciding if something overlaps"
2020-11-24 16:45:30 +0100 <Uniaika> it's very useful
2020-11-24 16:45:33 +0100 <dminuoso> I recall an issue on ghc gitlab about this
2020-11-24 16:46:05 +0100 <arianvp> It's up to the user to decide if that hint applies to their situation; but at least it gives them food for thought
2020-11-24 16:46:54 +0100 <dminuoso> Feel free to open an issue on ghc gitlab about this
2020-11-24 16:46:58 +0100adm_(~adm@43.229.88.197) (Remote host closed the connection)
2020-11-24 16:47:27 +0100reallymemorable(~quassel@2601:180:8300:8fd0:4ce1:c8ee:d3b9:46c5)
2020-11-24 16:47:43 +0100 <dminuoso> The idea is certainly not unreasonable, especially given how frequently we get people thinking that instance context is taken into consideration for instance selection, just to trip into GHC diagnostics or surprising bugs.
2020-11-24 16:48:15 +0100 <arianvp> :+1:
2020-11-24 16:48:21 +0100 <arianvp> i'll try to not forget to open a ticket :)
2020-11-24 16:48:47 +0100adm_(~adm@43.229.88.197)
2020-11-24 16:50:11 +0100 <Uniaika> lambdabot needs a !remindme
2020-11-24 16:51:16 +0100phaul(~phaul@ruby/staff/phaul) (Ping timeout: 240 seconds)
2020-11-24 16:51:56 +0100phaul(~phaul@ruby/staff/phaul)
2020-11-24 16:53:51 +0100jamm_(~jamm@unaffiliated/jamm)
2020-11-24 16:53:56 +0100adm_(~adm@43.229.88.197) (Ping timeout: 240 seconds)
2020-11-24 16:57:00 +0100geowiesnot(~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr)
2020-11-24 16:57:03 +0100caecilius(~caecilius@pool-108-46-151-95.nycmny.fios.verizon.net) (Quit: leaving)
2020-11-24 16:57:21 +0100caecilius(~caecilius@pool-108-46-151-95.nycmny.fios.verizon.net)
2020-11-24 16:57:22 +0100caecilius(~caecilius@pool-108-46-151-95.nycmny.fios.verizon.net) (Client Quit)
2020-11-24 16:57:43 +0100caecilius(~caecilius@pool-108-46-151-95.nycmny.fios.verizon.net)
2020-11-24 16:57:47 +0100caecilius(~caecilius@pool-108-46-151-95.nycmny.fios.verizon.net) (Client Quit)
2020-11-24 16:58:12 +0100caecilius(~caecilius@pool-108-46-151-95.nycmny.fios.verizon.net)
2020-11-24 16:58:46 +0100caecilius(~caecilius@pool-108-46-151-95.nycmny.fios.verizon.net) (Client Quit)
2020-11-24 16:59:01 +0100caecilius(~caecilius@pool-108-46-151-95.nycmny.fios.verizon.net)
2020-11-24 16:59:45 +0100adm_(~adm@43.229.88.197)
2020-11-24 17:00:17 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2020-11-24 17:00:18 +0100elpfen[m](elpfenmatr@gateway/shell/matrix.org/x-aisvdtstqpsxnxki) (Quit: Idle for 30+ days)
2020-11-24 17:00:32 +0100Rudd0(~Rudd0@185.189.115.98)
2020-11-24 17:00:59 +0100Aquazi(uid312403@gateway/web/irccloud.com/x-wbgzurqeqqwdxxpf)
2020-11-24 17:02:00 +0100hackagecli-git 0.1.0.1 - Bindings to the git command-line interface https://hackage.haskell.org/package/cli-git-0.1.0.1 (abrar)
2020-11-24 17:02:17 +0100adm__(~adm@43.229.88.197)
2020-11-24 17:04:25 +0100adm_(~adm@43.229.88.197) (Ping timeout: 264 seconds)
2020-11-24 17:04:44 +0100n0042(d055ed89@208.85.237.137) (Remote host closed the connection)
2020-11-24 17:05:18 +0100ggVGc(~ggVGc@a.lowtech.earth) (Changing host)
2020-11-24 17:05:18 +0100ggVGc(~ggVGc@unaffiliated/walt)
2020-11-24 17:06:12 +0100jonathanx(~jonathan@dyn-8-sc.cdg.chalmers.se) (Ping timeout: 260 seconds)
2020-11-24 17:06:30 +0100hackagecli-nix 0.1.0.1 - Bindings to the nix command-line interface https://hackage.haskell.org/package/cli-nix-0.1.0.1 (abrar)
2020-11-24 17:07:31 +0100 <Taneb> Is there a way to make GHC start profiling a program at a certain point? I've got a program with an expensive one-time setup followed by a loop that I want to opimize the hell out of
2020-11-24 17:07:32 +0100jpds(~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection)
2020-11-24 17:07:41 +0100 <merijn> Taneb: Yes!
2020-11-24 17:08:11 +0100 <merijn> Taneb: https://hackage.haskell.org/package/base-4.14.0.0/docs/GHC-Profiling.html#v:startProfTimer
2020-11-24 17:08:30 +0100 <Taneb> Oooh, nice
2020-11-24 17:08:55 +0100 <merijn> Taneb: Consider also: https://hackage.haskell.org/package/base-4.14.0.0/docs/GHC-Exts.html#v:traceMarker-35-
2020-11-24 17:09:31 +0100 <merijn> If you hack up mpickering's hs-speedscope to be trace marker aware (if it isn't yet?) then you can use that with speedscope
2020-11-24 17:10:30 +0100jpds(~jpds@gateway/tor-sasl/jpds)
2020-11-24 17:11:46 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 246 seconds)
2020-11-24 17:12:06 +0100 <mpickering> merijn: You can isolate a profile between two markers with the 0.2 release
2020-11-24 17:12:59 +0100alp(~alp@2a01:e0a:58b:4920:a049:ea35:decd:ef01)
2020-11-24 17:13:22 +0100Guest_63(c010ccda@pulibgw-r3.net.ias.edu)
2020-11-24 17:13:55 +0100nuncanada(~dude@179.235.160.168)
2020-11-24 17:14:03 +0100adm__(~adm@43.229.88.197) (Remote host closed the connection)
2020-11-24 17:15:17 +0100acarrico(~acarrico@dhcp-68-142-39-249.greenmountainaccess.net)
2020-11-24 17:16:28 +0100 <merijn> Taneb: Well, there you go ;)
2020-11-24 17:19:11 +0100bulters(~jeroen@82-161-48-217.ip.xs4all.nl) (Quit: DRIVING HOME FOR ... DINNER)
2020-11-24 17:20:41 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
2020-11-24 17:21:39 +0100devalot(~ident@mail.pmade.com) (Quit: ZNC - http://znc.in)
2020-11-24 17:22:16 +0100Raman(~user@c-24-4-174-65.hsd1.ca.comcast.net)
2020-11-24 17:23:13 +0100 <Raman> question from a haskell newbee --- how do experienced haskell programmers pronounce the "=>" as it appears in type declarations?
2020-11-24 17:26:31 +0100 <monochrom> I don't pronounce it at all.
2020-11-24 17:27:03 +0100 <Raman> :-) asking because I would like to teach Emacs to speak haskell to me (https://github.com/tvraman/emacspeak)
2020-11-24 17:27:18 +0100 <xerox_> an extra long pause before reading the rest of the type
2020-11-24 17:27:56 +0100 <Raman> a long line like => (a->b->c) ->...can sound pretty mysterious when spoken by TTS;-) haskell mode helps some with emacspeak given font-lock which I map to voice changes.
2020-11-24 17:28:41 +0100 <Raman> pause sounds interesting, for now I have it saying "is type of" which likely is good for a beginner but will get long soon enough
2020-11-24 17:29:27 +0100 <monochrom> => is ASCII art for ⇒, do you have a favourite name for that?
2020-11-24 17:29:33 +0100 <Raman> if I get far enough along with Haskell, I'm hoping to write a simple audio-formatter in haskell fo rhaskell, will come asking for pointers if I make it that far
2020-11-24 17:29:59 +0100 <Raman> I could say double-arrow I suppose -- already saying "arrow" for ->
2020-11-24 17:30:24 +0100 <monochrom> That's a good solution.
2020-11-24 17:30:26 +0100texasmynsted(~texasmyns@212.102.44.39) ()
2020-11-24 17:30:27 +0100ddellacosta(dd@gateway/vpn/mullvad/ddellacosta)
2020-11-24 17:30:48 +0100 <merijn> Raman: constraint or implication wouldn't be quite accurate, could be reasonable
2020-11-24 17:30:57 +0100 <[exa]> Raman: I'd read that as 'implies' but it's more like a reverse prolog :- which I have no idea how to read
2020-11-24 17:31:14 +0100 <Raman> will try various of these out over the next few weeks as I continue to learn. I assume that when the time comes there are haskell lib that can parse haskell code to give me back some type of AST?
2020-11-24 17:31:25 +0100 <merijn> I mean, in terms of speaking "constrains" might be useful
2020-11-24 17:31:38 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2020-11-24 17:31:52 +0100 <merijn> Like "Ord a constrains a -> a -> Bool" for "Ord a => a -> a -> Bool" seems decent
2020-11-24 17:32:04 +0100 <[exa]> yeah 'implies' sounds curry-howardish in this context
2020-11-24 17:32:04 +0100bulters(uid408399@gateway/web/irccloud.com/x-wpbfictwjpuyhkie)
2020-11-24 17:32:06 +0100 <Raman> :-) gets spoken as smiley by emacspeak -- I remember finding some page on the web 15 years ago approx that listed ascii combinations for popular emoji
2020-11-24 17:32:27 +0100 <merijn> Raman: I mean, technically GHC itself is a library that can give you an AST :p
2020-11-24 17:33:53 +0100knupfer(~Thunderbi@200116b824be8100a422e3fffe4755e7.dip.versatel-1u1.de)
2020-11-24 17:33:55 +0100knupfer(~Thunderbi@200116b824be8100a422e3fffe4755e7.dip.versatel-1u1.de) (Client Quit)
2020-11-24 17:33:56 +0100 <Raman> that's good to know -- asume for now that I know nothing (which is pretty much true re haskell) working through the realworld haskell book, have it open in emacs, along with a bunch of haskell-mode buffers and an inferior-haskell buffer. Also have lambdabot running in a separate emacs buffer after I embarrassed myself here yesterday and had it say rude things in response:-)
2020-11-24 17:34:06 +0100knupfer(~Thunderbi@i59F7FF7E.versanet.de)
2020-11-24 17:34:24 +0100 <Raman> AFK, back in a few. I'll see responses when I come back
2020-11-24 17:34:25 +0100ski(~ski@nc-2504-30.studat.chalmers.se) (Ping timeout: 240 seconds)
2020-11-24 17:35:31 +0100 <[exa]> woah, lambdabot action I missed? /me opens logs
2020-11-24 17:35:51 +0100ski(~ski@nc-2504-30.studat.chalmers.se)
2020-11-24 17:37:24 +0100sondr3(~sondr3@cm-84.211.56.132.getinternet.no)
2020-11-24 17:37:26 +0100vicfred(~vicfred@unaffiliated/vicfred)
2020-11-24 17:37:27 +0100woodpecker-with-(3e0497aa@62.4.151.170)
2020-11-24 17:37:39 +0100 <woodpecker-with-> How's the performance of the AD library?
2020-11-24 17:37:53 +0100 <woodpecker-with-> Any benchmarks?
2020-11-24 17:40:55 +0100raichoo(~raichoo@213.240.178.58) (Quit: Lost terminal)
2020-11-24 17:42:38 +0100borne(~fritjof@200116b864eb5c00394a967dc8ef4e61.dip.versatel-1u1.de) (Ping timeout: 264 seconds)
2020-11-24 17:42:38 +0100Tops2(~Tobias@dyndsl-095-033-095-017.ewe-ip-backbone.de) (Read error: Connection reset by peer)
2020-11-24 17:43:36 +0100machinedgod(~machinedg@135-23-192-217.cpe.pppoe.ca) (Ping timeout: 272 seconds)
2020-11-24 17:46:37 +0100sheb(~Thunderbi@77.244.36.161) (Remote host closed the connection)
2020-11-24 17:46:37 +0100 <Iceland_jack> hi Uniaika
2020-11-24 17:46:38 +0100 <davean> woodpecker-with-: its good.
2020-11-24 17:46:46 +0100 <Iceland_jack> making soup
2020-11-24 17:47:14 +0100ClaudiusMaximus(~claude@unaffiliated/claudiusmaximus) (Ping timeout: 256 seconds)
2020-11-24 17:47:25 +0100 <davean> woodpecker-with-: if its optimized for what you want or not is another question.
2020-11-24 17:48:00 +0100hackagereflex-external-ref 1.0.3.0 - External reference with reactivity support https://hackage.haskell.org/package/reflex-external-ref-1.0.3.0 (NCrashed)
2020-11-24 17:49:40 +0100texasmynsted(~texasmyns@212.102.44.39)
2020-11-24 17:53:21 +0100evanjs(~evanjs@075-129-098-007.res.spectrum.com) (Quit: ZNC 1.8.2 - https://znc.in)
2020-11-24 17:54:54 +0100LKoen(~LKoen@169.244.88.92.rev.sfr.net) (Quit: “It’s only logical. First you learn to talk, then you learn to think. Too bad it’s not the other way round.”)
2020-11-24 17:55:01 +0100jamm_(~jamm@unaffiliated/jamm) (Remote host closed the connection)
2020-11-24 17:55:47 +0100hnOsmium0001(uid453710@gateway/web/irccloud.com/x-ysnvsqftovuddatt)
2020-11-24 17:56:28 +0100jamm_(~jamm@unaffiliated/jamm)
2020-11-24 17:56:32 +0100evanjs(~evanjs@075-129-098-007.res.spectrum.com)
2020-11-24 17:57:05 +0100phaul(~phaul@ruby/staff/phaul) (Ping timeout: 240 seconds)
2020-11-24 17:57:32 +0100christo(~chris@81.96.113.213)
2020-11-24 17:58:08 +0100Jajik(xchlup2@gateway/shell/fi.muni.cz/x-voulfkcwxssepppf) (Quit: The Lounge - https://thelounge.chat)
2020-11-24 17:58:09 +0100xsarnik0(xsarnik@gateway/shell/fi.muni.cz/x-bsiqubgdpcunmdtm) (Quit: The Lounge - https://thelounge.chat)
2020-11-24 17:58:24 +0100 <Raman> so Like "Ord a constrains a -> a -> Bool" for "Ord a => a -> a -> Bool" sounds nice when spoken with some additional intonation. Depending on the context, implies might sound good too -- thanks all! I'll go back to reading, or I will just end up hanging out here chatting. When the time comes, I'll ask how I hand ghci a line of code and get an AST back
2020-11-24 17:58:28 +0100Boomerang(~Boomerang@xd520f68c.cust.hiper.dk) (Ping timeout: 260 seconds)
2020-11-24 17:58:30 +0100devalot(~ident@mail.pmade.com)
2020-11-24 17:58:54 +0100machinedgod(~machinedg@135-23-192-217.cpe.pppoe.ca)
2020-11-24 17:59:17 +0100Jajik(xchlup2@gateway/shell/fi.muni.cz/x-gntccaugnuwouyau)
2020-11-24 18:00:57 +0100jamm_(~jamm@unaffiliated/jamm) (Ping timeout: 260 seconds)
2020-11-24 18:01:03 +0100xsarnik0(xsarnik@gateway/shell/fi.muni.cz/x-nywghooskhwzuxkn)
2020-11-24 18:01:23 +0100kritzefitz(~kritzefit@fw-front.credativ.com) (Remote host closed the connection)
2020-11-24 18:03:34 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
2020-11-24 18:04:00 +0100hackagereflex-external-ref 1.0.3.1 - External reference with reactivity support https://hackage.haskell.org/package/reflex-external-ref-1.0.3.1 (NCrashed)
2020-11-24 18:04:38 +0100Raman(~user@c-24-4-174-65.hsd1.ca.comcast.net) ("need to go read the haskell book and learn")
2020-11-24 18:06:12 +0100ubert(~Thunderbi@p200300ecdf1e539ce6b318fffe838f33.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
2020-11-24 18:06:18 +0100conal(~conal@64.71.133.70)
2020-11-24 18:06:19 +0100phaul(~phaul@ruby/staff/phaul)
2020-11-24 18:06:25 +0100ubert(~Thunderbi@p200300ecdf1e53ebe6b318fffe838f33.dip0.t-ipconnect.de)
2020-11-24 18:07:39 +0100 <dminuoso> % runQ [| \x -> x ^ 2 |]
2020-11-24 18:07:39 +0100 <yahb> dminuoso: LamE [VarP x_3] (InfixE (Just (VarE x_3)) (VarE GHC.Real.^) (Just (LitE (IntegerL 2))))
2020-11-24 18:08:21 +0100LKoen(~LKoen@169.244.88.92.rev.sfr.net)
2020-11-24 18:10:15 +0100jonatanb(jonatanb@gateway/vpn/protonvpn/jonatanb)
2020-11-24 18:11:09 +0100jonatanb_(~jonatanb@83.24.220.252.ipv4.supernova.orange.pl)
2020-11-24 18:11:15 +0100cole-h(~cole-h@c-73-48-197-220.hsd1.ca.comcast.net)
2020-11-24 18:12:31 +0100acagastya(~acagastya@wikinews/acagastya) ("WeeChat 2.8")
2020-11-24 18:12:53 +0100phaul(~phaul@ruby/staff/phaul) (Ping timeout: 256 seconds)
2020-11-24 18:14:36 +0100phaul(~phaul@ruby/staff/phaul)
2020-11-24 18:14:58 +0100jonatanb(jonatanb@gateway/vpn/protonvpn/jonatanb) (Ping timeout: 260 seconds)
2020-11-24 18:15:01 +0100acarrico(~acarrico@dhcp-68-142-39-249.greenmountainaccess.net) (Quit: Leaving.)
2020-11-24 18:16:04 +0100jonatanb_(~jonatanb@83.24.220.252.ipv4.supernova.orange.pl) (Remote host closed the connection)
2020-11-24 18:16:49 +0100jonatanb(jonatanb@gateway/vpn/protonvpn/jonatanb)
2020-11-24 18:20:41 +0100Tops2(~Tobias@dyndsl-095-033-095-017.ewe-ip-backbone.de)
2020-11-24 18:22:06 +0100 <xerox_> LamE
2020-11-24 18:22:19 +0100ph88(~ph88@ip5f5af6cd.dynamic.kabel-deutschland.de) (Quit: Leaving)
2020-11-24 18:22:50 +0100 <APic> EsounD
2020-11-24 18:23:36 +0100kritzefitz(~kritzefit@212.86.56.80)
2020-11-24 18:28:25 +0100geowiesnot(~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) (Ping timeout: 264 seconds)
2020-11-24 18:29:58 +0100Guest_63(c010ccda@pulibgw-r3.net.ias.edu) (Remote host closed the connection)
2020-11-24 18:30:36 +0100elfets(~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de)
2020-11-24 18:31:10 +0100 <texasmynsted> one thing I do not recall seeing in the Haskell survey was detail about why kinds of applications people build with Haskell. I think there was something like "command line apps", but that is more of an interface than mission.
2020-11-24 18:32:21 +0100DataComputist(~lumeng@static-50-43-26-251.bvtn.or.frontiernet.net)
2020-11-24 18:33:48 +0100Lycurgus(~niemand@98.4.114.74)
2020-11-24 18:35:58 +0100Yumasi(~guillaume@40.72.95.92.rev.sfr.net) (Ping timeout: 260 seconds)
2020-11-24 18:36:07 +0100knupfer(~Thunderbi@i59F7FF7E.versanet.de) (Ping timeout: 246 seconds)
2020-11-24 18:36:41 +0100conal(~conal@64.71.133.70) (Ping timeout: 256 seconds)
2020-11-24 18:37:30 +0100hackagemonad-logger 0.3.36 - A class of monads which can log messages. https://hackage.haskell.org/package/monad-logger-0.3.36 (MichaelSnoyman)
2020-11-24 18:38:07 +0100knupfer(~Thunderbi@i59F7FF7E.versanet.de)
2020-11-24 18:41:00 +0100DataComputist(~lumeng@static-50-43-26-251.bvtn.or.frontiernet.net) (Ping timeout: 256 seconds)
2020-11-24 18:42:22 +0100DataComputist(~lumeng@static-50-43-26-251.bvtn.or.frontiernet.net)
2020-11-24 18:42:36 +0100son0p(~son0p@181.136.122.143)
2020-11-24 18:42:38 +0100alp(~alp@2a01:e0a:58b:4920:a049:ea35:decd:ef01) (Ping timeout: 264 seconds)
2020-11-24 18:44:24 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds)
2020-11-24 18:44:55 +0100ericsagnes(~ericsagne@2405:6580:0:5100:6150:c6af:125a:9cae) (Ping timeout: 272 seconds)
2020-11-24 18:45:06 +0100conal(~conal@66.115.157.138)
2020-11-24 18:45:51 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-11-24 18:48:21 +0100 <dsal> texasmynsted: I write almost everything I need in Haskell.
2020-11-24 18:48:23 +0100 <gehmehgeh> hm, I'm looking for a package that contains a datatype that allows an opperation such as "[1,2,3] ++ [4,5,6]" in O(1) time. Is that sort of thing already built into Haskell? Is there some sort of default package for that? We'd obviously need a reference to the last element of the left list
2020-11-24 18:48:43 +0100Kaivo(~Kaivo@104-200-86-99.mc.derytele.com) (Ping timeout: 246 seconds)
2020-11-24 18:48:50 +0100 <gehmehgeh> Basically a doubly linked list
2020-11-24 18:49:01 +0100 <kuribas> gehmehgeh: DList?
2020-11-24 18:49:06 +0100hseg(~gesh@185.120.126.113)
2020-11-24 18:49:08 +0100 <texasmynsted> nice
2020-11-24 18:49:25 +0100 <kuribas> gehmehgeh: https://hackage.haskell.org/package/dlist
2020-11-24 18:49:40 +0100 <kuribas> gehmehgeh: btw, DList stands for difference list. It's not a doubly linked list.
2020-11-24 18:49:57 +0100 <kuribas> gehmehgeh: it's more like a tree constructor, where you flatten the tree in the end.
2020-11-24 18:50:06 +0100 <dsal> texasmynsted: mostly network services, e.g., mqttd and web stuff. A lot of cli stuff because that's how I do things. Data manipulation tools, etc...
2020-11-24 18:50:09 +0100 <gehmehgeh> kuribas: oh! I had thought Dlists only allow "append" in constant time, that is "cons", but at the end side
2020-11-24 18:50:26 +0100 <gehmehgeh> I have used dlists in the past
2020-11-24 18:50:29 +0100 <texasmynsted> mqttd?
2020-11-24 18:50:34 +0100 <kuribas> gehmehgeh: what do you mean with "only"?
2020-11-24 18:50:43 +0100 <kuribas> gehmehgeh: that's basically what it does.
2020-11-24 18:50:52 +0100 <dsal> texasmynsted: mqtt broker. See mqtt.org (I think)
2020-11-24 18:50:56 +0100 <texasmynsted> There is no way to replace an existing type class instance, right?
2020-11-24 18:51:13 +0100 <gehmehgeh> kuribas: I thought (I could be mistaken) that this would still take O( length of [4,5,6]) in our example?
2020-11-24 18:51:19 +0100Kaivo(~Kaivo@ec2-15-222-231-32.ca-central-1.compute.amazonaws.com)
2020-11-24 18:51:29 +0100 <gehmehgeh> Wait, I'm sorry, I'm uninformed...
2020-11-24 18:51:34 +0100 <texasmynsted> oh, wow. mqtt is very interesting.
2020-11-24 18:51:34 +0100 <gehmehgeh> let me check
2020-11-24 18:51:42 +0100 <kuribas> gehmehgeh: I think the last list is shared
2020-11-24 18:52:06 +0100 <texasmynsted> Idris has named instances, but Haskell does not. That is right?
2020-11-24 18:52:19 +0100 <gehmehgeh> kuribas: hmm, in that case...
2020-11-24 18:52:27 +0100 <dsal> texasmynsted: it really is! I've written a client, a broker, a bridge to replicate data across mqttd instances, various transformation tools, etc...
2020-11-24 18:52:44 +0100 <dsal> I don't know idris... What's a named instance?
2020-11-24 18:52:56 +0100 <kuribas> > take 4 Data.DList.toList $ (Data.DList.fromList [1, 2, 3] <> Data.DList.fromList [4..])
2020-11-24 18:52:58 +0100 <lambdabot> error:
2020-11-24 18:52:58 +0100 <lambdabot> Not in scope: ‘Data.DList.toList’
2020-11-24 18:52:58 +0100 <lambdabot> Perhaps you meant ‘Data.Set.toList’ (imported from Data.Set)
2020-11-24 18:53:19 +0100 <texasmynsted> Having more than one type class instance for the same type, and selecting it by name.
2020-11-24 18:53:24 +0100 <kuribas> gehmehgeh: DList is linear in the length of the output.
2020-11-24 18:53:50 +0100 <kuribas> gehmehgeh: but lazy, so only as much as is actually requested.
2020-11-24 18:54:05 +0100 <dsal> It's a little weird to think of <> on a list as O(n) since it's not evaluated until you get there
2020-11-24 18:54:20 +0100 <texasmynsted> I am actually surprised how I can not recall how things work in haskell. If there is an existing instance for a type class, for a particular, type I am unable to replace it. Correct?
2020-11-24 18:54:32 +0100 <kuribas> dsal: yeah, linear on the amount that you evaluate.
2020-11-24 18:55:07 +0100 <texasmynsted> dsal: is your project open?
2020-11-24 18:55:14 +0100 <dsal> texasmynsted: right, you'd end up with overlapping instances
2020-11-24 18:55:17 +0100 <texasmynsted> It sounds really neat
2020-11-24 18:55:32 +0100 <monochrom> Yes, it takes a bit more sophistication to state computation costs when laziness is involved. It is a function of both input size and demand size.
2020-11-24 18:55:32 +0100 <kuribas> texasmynsted: you normally want typeclass instances to be unique.
2020-11-24 18:55:33 +0100 <dsal> texasmynsted: I have... Several at github.com/dustin
2020-11-24 18:56:05 +0100 <monochrom> But a simplifying convention is that if you only talk about input size, then you assume full evaluation.
2020-11-24 18:56:15 +0100kuribas(~user@ptr-25vy0i9hk5zsklfgprx.18120a2.ip6.access.telenet.be) ("ERC (IRC client for Emacs 26.3)")
2020-11-24 18:56:18 +0100 <texasmynsted> There is a module that I use, from somebody else. I want to modify how it works. I think my only option is to fork it.
2020-11-24 18:56:39 +0100 <texasmynsted> Forking it would likely not be worth the effort for the change I want.
2020-11-24 18:57:04 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl) (Remote host closed the connection)
2020-11-24 18:57:11 +0100ericsagnes(~ericsagne@2405:6580:0:5100:2b3f:f80d:4d07:855c)
2020-11-24 18:58:22 +0100 <dsal> What's the class? Can you just newtype?
2020-11-24 18:58:33 +0100 <monochrom> The least surgical solution is you endow your own newtype wrapper. Then you can pin your favourite instance code to your newtype wrapper.
2020-11-24 18:58:49 +0100 <monochrom> But this is also the most annoying. :)
2020-11-24 18:59:00 +0100 <texasmynsted> What I want to do is really simple: I will show you.
2020-11-24 19:00:02 +0100 <texasmynsted> See the text block at the end of this page? https://jaspervdj.be/hakyll/reference/src/Hakyll.Web.Redirect.html#createRedirects
2020-11-24 19:00:17 +0100 <texasmynsted> I want to change 'redirectToHtml'
2020-11-24 19:00:41 +0100 <texasmynsted> I should easily be able to do that if I replace 'instance Writable Redirect'
2020-11-24 19:01:15 +0100chele(~chele@91.65.110.162) (Remote host closed the connection)
2020-11-24 19:01:22 +0100 <dsal> Yeah, a newtype of Redirect is probably straightforward.
2020-11-24 19:01:50 +0100royal_screwup213(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed)
2020-11-24 19:02:10 +0100hseg(~gesh@185.120.126.113) (Quit: WeeChat 2.9)
2020-11-24 19:02:34 +0100royal_screwup213(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2020-11-24 19:02:41 +0100 <texasmynsted> Thank you. It sounds like I need to try this.
2020-11-24 19:03:43 +0100 <monochrom> This leads me to the crazy idea of advocating maximally orphaned instances!
2020-11-24 19:04:00 +0100reallymemorable(~quassel@2601:180:8300:8fd0:4ce1:c8ee:d3b9:46c5) (Quit: http://quassel-irc.org - Chat comfortably. Anywhere.)
2020-11-24 19:04:33 +0100 <monochrom> If every instance is in its own module, you can now freely mix and match, you can freely refuse to import whichever instance you don't want.
2020-11-24 19:06:01 +0100 <texasmynsted> so Scala style then
2020-11-24 19:07:05 +0100 <monochrom> Then again there can be a subtle problem. Some instances assume you have already accepted some other instances, lest there would be unpleasant surprises.
2020-11-24 19:07:07 +0100 <dsal> Can we get compiler warnings telling us our instances aren't orphans?
2020-11-24 19:07:24 +0100Jeanne-Kamikaze(~Jeanne-Ka@66.115.189.237)
2020-11-24 19:08:00 +0100MarcelineVQ(~anja@198.254.202.72) (Ping timeout: 260 seconds)
2020-11-24 19:08:00 +0100 <monochrom> However, my really favourite idea is named instances.
2020-11-24 19:08:21 +0100st8less(~st8less@2603:a060:11fd:0:b11b:e5d8:ecef:8990) (Ping timeout: 272 seconds)
2020-11-24 19:08:21 +0100 <texasmynsted> so actually Idris style?
2020-11-24 19:08:27 +0100 <monochrom> Yeah
2020-11-24 19:08:30 +0100hackagehakyll-contrib-i18n 0.1.0.0 - A Hakyll library for internationalization. https://hackage.haskell.org/package/hakyll-contrib-i18n-0.1.0.0 (pcoves)
2020-11-24 19:08:55 +0100 <monochrom> The part I'm most proud of is how I maximized the puns in naming it: https://mail.haskell.org/pipermail/haskell-cafe/2017-May/127147.html
2020-11-24 19:09:05 +0100 <dolio> Idris and scala are the same style, possibly aside from idris having fewer weird rules for what automatically gets used.
2020-11-24 19:09:37 +0100st8less(~st8less@2603:a060:11fd:0:b8c0:f26a:7cc8:b52d)
2020-11-24 19:09:57 +0100 <texasmynsted> Knowing which instance is used, with Scala, can be an issue.
2020-11-24 19:12:06 +0100Cale_(~cale@cpef48e38ee8583-cm0c473de9d680.cpe.net.cable.rogers.com)
2020-11-24 19:13:15 +0100 <monochrom> I hope you see how I managed to make "tl;dr" a legit acronym for this :)
2020-11-24 19:14:39 +0100adm_(~adm@43.229.88.197)
2020-11-24 19:16:48 +0100nuncanada(~dude@179.235.160.168) (Ping timeout: 260 seconds)
2020-11-24 19:17:59 +0100woodpecker-with-(3e0497aa@62.4.151.170) (Ping timeout: 245 seconds)
2020-11-24 19:19:02 +0100adm_(~adm@43.229.88.197) (Ping timeout: 256 seconds)
2020-11-24 19:19:16 +0100ubert(~Thunderbi@p200300ecdf1e53ebe6b318fffe838f33.dip0.t-ipconnect.de) (Remote host closed the connection)
2020-11-24 19:19:17 +0100NieDzejkob(~quassel@188.123.215.55) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
2020-11-24 19:22:16 +0100Cale(~cale@cpef48e38ee8583-cm0c473de9d680.cpe.net.cable.rogers.com) (Disconnected by services)
2020-11-24 19:22:24 +0100Cale_Cale
2020-11-24 19:22:44 +0100Cale_(~cale@cpef48e38ee8583-cm0c473de9d680.cpe.net.cable.rogers.com)
2020-11-24 19:23:23 +0100alp(~alp@2a01:e0a:58b:4920:4935:6a51:5926:c53d)
2020-11-24 19:23:39 +0100Cale_(~cale@cpef48e38ee8583-cm0c473de9d680.cpe.net.cable.rogers.com) (Remote host closed the connection)
2020-11-24 19:24:26 +0100conal(~conal@66.115.157.138) (Quit: Computer has gone to sleep.)
2020-11-24 19:26:50 +0100cads(~cads@ip-64-72-99-232.lasvegas.net) (Ping timeout: 265 seconds)
2020-11-24 19:26:57 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl)
2020-11-24 19:27:32 +0100Sheilong(uid293653@gateway/web/irccloud.com/x-yowroavlostcpsuo)
2020-11-24 19:27:37 +0100 <dminuoso> hekkaidekapus, ski: Thanks again for your insight on the tree building. The intermediate step and then building a trie is the way to go here. :)
2020-11-24 19:28:00 +0100hackagenix-thunk 0.2.0.2 - Lightweight dependency management with Nix https://hackage.haskell.org/package/nix-thunk-0.2.0.2 (abrar)
2020-11-24 19:28:03 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl) (Remote host closed the connection)
2020-11-24 19:28:19 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl)
2020-11-24 19:31:02 +0100conal(~conal@66.115.157.138)
2020-11-24 19:33:39 +0100NieDzejkob(~quassel@188.123.215.55)
2020-11-24 19:36:14 +0100 <sshine> did you see Java 15 almost has ADTs?
2020-11-24 19:38:11 +0100 <gentauro> sshine: like `sum types`? Hold my beer
2020-11-24 19:38:14 +0100 <koz_> sshine: 'Almost has X' for all X is a good description of Java as a language.
2020-11-24 19:38:39 +0100 <koz_> (well, 'Almost has X, but ten times as long with twice the caveats' might be more accurate)
2020-11-24 19:38:45 +0100 <sshine> gentauro, https://openjdk.java.net/jeps/360
2020-11-24 19:38:49 +0100Df(5fa448e7@95.164.72.231) (Ping timeout: 245 seconds)
2020-11-24 19:39:57 +0100 <dminuoso> With Haskell I learned the value of ADTs. I cant see myself programming in a language without.
2020-11-24 19:40:01 +0100 <gentauro> koz_: «COBOL was… …and that’s bad enough.» replace COBOL with any language that is not Haskell. Source: https://sigkill.dk/writings/languages.html (Athas blog)
2020-11-24 19:40:08 +0100 <sshine> dminuoso, now you can code Java!
2020-11-24 19:40:15 +0100 <koz_> gentauro: Lol.
2020-11-24 19:40:18 +0100htmnc(~James@2600:1700:4ca1:7640:ec8e:65af:cdd0:9671)
2020-11-24 19:40:19 +0100 <gentauro> dminuoso: for me it's the `sum types`
2020-11-24 19:40:34 +0100 <gentauro> at the moment «I'm trapped» in a C# freelance gig
2020-11-24 19:40:45 +0100 <koz_> gentauro: I am so, so sorry.
2020-11-24 19:40:47 +0100 <dminuoso> sshine: Mind my asking, why aren't they full sum types?
2020-11-24 19:40:49 +0100lpy(~nyd@unaffiliated/elysian) (Quit: lpy)
2020-11-24 19:40:49 +0100 <dminuoso> What's their limitation?
2020-11-24 19:40:50 +0100 <gentauro> I want to sigkill myself for every key stroke xD
2020-11-24 19:40:59 +0100 <sshine> dminuoso, they're made in a funny way.
2020-11-24 19:41:06 +0100 <dminuoso> Also, do you get depressed when discriminating Java sum types? Do you get refinement?
2020-11-24 19:41:20 +0100 <dminuoso> Can we have full blown GADTs?
2020-11-24 19:41:42 +0100 <gentauro> sshine: thx for the link, but my eyes began to bleed as soon as they saw the Java syntax
2020-11-24 19:42:19 +0100 <sshine> dminuoso, sealed classes are a way to whitelist which sub-classes are allowed to inherit. so for an 'Expr' class you can have 'Add', 'Mul', etc. Since you have a fixed list known at compile-time, you can now do pattern matching on instanceof. but since it's still made in such a sketchy way on top, limitations apply.
2020-11-24 19:42:48 +0100 <koz_> sshine: Does this allow compile-time exhaustiveness checking?
2020-11-24 19:42:54 +0100 <gentauro> sshine: did they went for the .NET (C#) "way of doing it"?
2020-11-24 19:42:54 +0100 <koz_> I'm going to assume 'no'.
2020-11-24 19:43:00 +0100 <gentauro> cos that's really really bad
2020-11-24 19:43:11 +0100 <dminuoso> sshine: Oh so the switch/case construct is just a bit of syntax sugar around multi-way if instanceof?
2020-11-24 19:43:15 +0100dminuososighs
2020-11-24 19:43:40 +0100 <gentauro> you test for "types". So you need to check if it's a `int`, a `char` a … (any `type` that is not nullable goes)
2020-11-24 19:43:48 +0100 <gentauro> I can't make myself use that
2020-11-24 19:43:54 +0100 <dminuoso> I see, so you cant have `char + char`?
2020-11-24 19:44:12 +0100 <sshine> dminuoso, I'm pretty sure that's how it must be.
2020-11-24 19:44:32 +0100 <dminuoso> So it's a union and not disjoint union of types...
2020-11-24 19:44:34 +0100 <dminuoso> Mmm
2020-11-24 19:44:40 +0100 <dminuoso> well, I guess you can get around that with helper classes
2020-11-24 19:45:11 +0100 <dminuoso> Just in the style of Java. Introduce more noise so your developers can be busy writing Java.
2020-11-24 19:45:21 +0100 <sshine> I learned today that Scala's None (aka Nothing) is defined like this: case object None extends Option[Nothing] with Product with Serializable
2020-11-24 19:45:23 +0100kritzefitz(~kritzefit@212.86.56.80) (Ping timeout: 260 seconds)
2020-11-24 19:45:41 +0100 <htmnc> if I have like, a list of Maybe Int, is the type of that [Maybe Int]? if so how do I generically say hey this is a functor of a functor of a type or whatever like F G a?
2020-11-24 19:45:49 +0100 <gentauro> dminuoso: it's very much like this `with | :? System.DivideByZeroException as ex -> printfn "Exception! %s " (ex.Message); None` -> https://docs.microsoft.com/en-us/dotnet/fsharp/language-reference/exception-handling/the-try-with-…
2020-11-24 19:46:00 +0100 <sshine> htmnc, yes.
2020-11-24 19:46:24 +0100 <koz_> :t [Nothing, Maybe (1 :: Int)]
2020-11-24 19:46:24 +0100 <htmnc> sshine, thank you :)
2020-11-24 19:46:26 +0100 <lambdabot> error:
2020-11-24 19:46:26 +0100 <lambdabot> • Data constructor not in scope: Maybe :: Int -> Maybe a
2020-11-24 19:46:26 +0100 <lambdabot> • Perhaps you meant variable ‘maybe’ (imported from Data.Maybe)
2020-11-24 19:46:28 +0100 <dminuoso> htmnc: It implicitly is a functor by virtue of this instance:
2020-11-24 19:46:29 +0100 <gentauro> it's `all` types, not a subset you specify in a sum-type
2020-11-24 19:46:30 +0100 <gentauro> :(
2020-11-24 19:46:30 +0100 <koz_> Argh.
2020-11-24 19:46:35 +0100 <koz_> :t [Nothing, Just(1 :: Int)]
2020-11-24 19:46:37 +0100 <lambdabot> [Maybe Int]
2020-11-24 19:46:54 +0100 <sshine> htmnc, could you give an example of what you mean by a functor of a functor?
2020-11-24 19:46:54 +0100 <htmnc> so I can say like :t Just Just (1::Int)
2020-11-24 19:47:08 +0100 <htmnc> :t Just Just (1::Int)
2020-11-24 19:47:09 +0100 <lambdabot> error:
2020-11-24 19:47:09 +0100 <lambdabot> • Couldn't match expected type ‘Int -> t’
2020-11-24 19:47:10 +0100 <lambdabot> with actual type ‘Maybe (a0 -> Maybe a0)’
2020-11-24 19:47:22 +0100 <sshine> :t Just (Just (1 :: Int))
2020-11-24 19:47:23 +0100 <lambdabot> Maybe (Maybe Int)
2020-11-24 19:47:41 +0100hidedagger(~nate@unaffiliated/hidedagger)
2020-11-24 19:47:56 +0100 <sshine> :t Just Just
2020-11-24 19:47:58 +0100 <lambdabot> Maybe (a -> Maybe a)
2020-11-24 19:48:06 +0100 <dsal> :t pure pure
2020-11-24 19:48:08 +0100 <lambdabot> (Applicative f1, Applicative f2) => f1 (a -> f2 a)
2020-11-24 19:48:14 +0100 <dminuoso> % getCompose . fmap (+1) . Compose $ [Just 1, Just 2, Nothing] -- htmnc
2020-11-24 19:48:14 +0100 <yahb> dminuoso: [Just 2,Just 3,Nothing]
2020-11-24 19:48:15 +0100alp(~alp@2a01:e0a:58b:4920:4935:6a51:5926:c53d) (Ping timeout: 272 seconds)
2020-11-24 19:48:19 +0100 <dminuoso> Or
2020-11-24 19:48:29 +0100 <sshine> 'Just Just 1' does not work because function application is left-associative, so that becomes '(Just Just) 1'... now, 'Just Just' is fine, but it isn't a function, but rather, a function 'Just :: a -> Maybe a' wrapped in a Maybe.
2020-11-24 19:48:57 +0100 <dminuoso> (fmap . fmap) (+1) [Just 1, Just 2, Nothing]
2020-11-24 19:49:00 +0100 <dminuoso> % (fmap . fmap) (+1) [Just 1, Just 2, Nothing]
2020-11-24 19:49:00 +0100 <yahb> dminuoso: [Just 2,Just 3,Nothing]
2020-11-24 19:49:17 +0100 <htmnc> sshine, I was thinking about how to abstract doing a map on two arrays with a binary operation, like if I had F a -> F b -> F c I could do fmap on the F a giving my F b -> F c and then fmap again
2020-11-24 19:49:22 +0100 <sshine> > join (Just (Just (1 :: Int)))
2020-11-24 19:49:25 +0100 <lambdabot> Just 1
2020-11-24 19:50:17 +0100 <htmnc> I mean I'm missing a step there
2020-11-24 19:50:40 +0100 <dminuoso> htmnc: Oh I see. What you're asking for is Applicative!
2020-11-24 19:50:45 +0100 <htmnc> yeah!
2020-11-24 19:50:52 +0100 <koz_> :t liftA2
2020-11-24 19:50:55 +0100 <lambdabot> Applicative f => (a -> b -> c) -> f a -> f b -> f c
2020-11-24 19:51:02 +0100ystael(~ystael@209.6.50.55)
2020-11-24 19:51:05 +0100 <dminuoso> htmnc: Functor is for "mapping over things with unary functoins" and applicative generalizes this to n-arity functions (where n ranges from 0 to arbitrary)
2020-11-24 19:51:33 +0100 <htmnc> !!! that's exactly what I was thinking about!
2020-11-24 19:51:37 +0100 <htmnc> thank you!!
2020-11-24 19:51:51 +0100 <koz_> htmnc: I advise reading the Typeclassopedia entry on Applicative.
2020-11-24 19:51:56 +0100 <koz_> You will find many useful things. :D
2020-11-24 19:52:00 +0100 <htmnc> will do
2020-11-24 19:52:49 +0100 <htmnc> honestly the more I learn about Haskell stuff the more I wish I could find jobs that used it for things like backend
2020-11-24 19:53:31 +0100 <maerwald> htmnc: why
2020-11-24 19:53:46 +0100 <koz_> htmnc: It's possible - I do Haskell for Real Job For Real Money.
2020-11-24 19:53:49 +0100 <maerwald> backend is all the same in the end
2020-11-24 19:53:58 +0100 <maerwald> do something cool with haskell instead
2020-11-24 19:54:05 +0100 <maerwald> don't use it for your day job
2020-11-24 19:54:13 +0100 <dminuoso> Dunno, we're using Haskell in our backend and it's fun.
2020-11-24 19:54:25 +0100 <koz_> maerwald: I respectfuly disagree. I love the fact I get paid to write Haskell.
2020-11-24 19:54:26 +0100 <dminuoso> It's fun writing reliable code.
2020-11-24 19:54:48 +0100 <dminuoso> Also the "backend" classification is mildly useless
2020-11-24 19:54:52 +0100 <dminuoso> everything is a backend to something.
2020-11-24 19:54:55 +0100son0p(~son0p@181.136.122.143) (Quit: leaving)
2020-11-24 19:55:08 +0100 <maerwald> I just meant... from all the thing I can imagine doing in haskell... backend seems like a boring choice
2020-11-24 19:55:12 +0100 <koz_> Backend is anything which doesn't scribble on the screen.
2020-11-24 19:55:25 +0100cr3(~cr3@192-222-143-195.qc.cable.ebox.net) (Ping timeout: 264 seconds)
2020-11-24 19:55:29 +0100 <koz_> (seems to be the general take I read from its many uses)
2020-11-24 19:56:00 +0100 <dminuoso> I guess only very few people use Haskell to run some UI directly..
2020-11-24 19:56:15 +0100 <htmnc> maerwald, because I've worked with people who coerce things in really upsetting ways
2020-11-24 19:56:18 +0100 <dminuoso> Unless you work for Obsidian
2020-11-24 19:56:21 +0100cr3(~cr3@192-222-143-195.qc.cable.ebox.net)
2020-11-24 19:56:25 +0100 <htmnc> koz_, bless you
2020-11-24 19:56:33 +0100 <maerwald> dminuoso: gtk is ok in haskell though
2020-11-24 19:56:45 +0100 <dminuoso> maerwald: Sure, but I doubt it's used much. :)
2020-11-24 19:57:01 +0100 <dminuoso> That doesn't mean anything negative
2020-11-24 19:57:09 +0100 <dminuoso> just that most haskell developers aren't focused on UI stuff
2020-11-24 19:57:18 +0100hidedagger(~nate@unaffiliated/hidedagger) (Quit: WeeChat 2.9)
2020-11-24 19:57:30 +0100 <maerwald> dminuoso: yeah, most ppl think everything that does network requests must be a html page :p
2020-11-24 19:57:36 +0100jneira(02896ac0@gateway/web/cgi-irc/kiwiirc.com/ip.2.137.106.192)
2020-11-24 19:57:40 +0100 <dminuoso> heh
2020-11-24 19:57:52 +0100 <maerwald> so GTK apps that interact with APIs are rare
2020-11-24 19:58:00 +0100 <dminuoso> Ive started a quest to reduce the number of stupid HTTP based APIs we have in our core.
2020-11-24 19:58:01 +0100 <koz_> htmnc: Thank you. I didn't know you were a priest!
2020-11-24 19:58:23 +0100 <htmnc> LOL just using the turn of phrase
2020-11-24 19:59:09 +0100 <dminuoso> maerwald: I guess everybody has their own drug. I find high performance networking to be exciting currently.
2020-11-24 19:59:23 +0100 <dminuoso> so writing Haskell to support that goal is fun
2020-11-24 19:59:35 +0100 <maerwald> dminuoso: yeah and probably challenging
2020-11-24 20:00:04 +0100 <dolio> Is the objection just that not all programming should be classified as either "front end of a web app" or "back end of a web app"? :)
2020-11-24 20:00:45 +0100 <merijn> dolio: But then how will Hacker News understand what you're talking about? :o
2020-11-24 20:01:02 +0100 <koz_> merijn: I would consider them _not_ understanding a point of pride.
2020-11-24 20:01:04 +0100 <dolio> Don't care. :)
2020-11-24 20:01:13 +0100 <merijn> koz_: That was the joke
2020-11-24 20:01:23 +0100 <merijn> koz_: Are you familiar with n-gate?
2020-11-24 20:01:28 +0100 <koz_> As in, deliberately write your first two paragraphs to be maximally exclusionary to people who browse HN un-ironically.
2020-11-24 20:01:31 +0100 <koz_> merijn: No?
2020-11-24 20:02:01 +0100 <merijn> koz_: Oh, you will appreciate this...it's "HN's daily #1 post...abridged": http://n-gate.com/hackernews/
2020-11-24 20:02:47 +0100 <koz_> "In accordance with their tradition, the Electronic Frontier Foundation has created a new website to tell us how fucked we are by advertisers, while containing almost no advice for fixing any of it." OOOF, I'm a fan already!
2020-11-24 20:03:10 +0100 <koz_> Thanks merijn - you have made my day a little brighter.
2020-11-24 20:03:33 +0100berberman(~berberman@unaffiliated/berberman)
2020-11-24 20:03:57 +0100geowiesnot(~user@87-89-181-157.abo.bbox.fr)
2020-11-24 20:03:59 +0100 <dmj`> dminuoso: Re: UIs, OpenGL and Haskell work very well together. Just have fun cross-compiling.
2020-11-24 20:04:05 +0100berberman_(~berberman@unaffiliated/berberman) (Ping timeout: 272 seconds)
2020-11-24 20:05:25 +0100 <koz_> I believe there's nice Vulkan bindings too?
2020-11-24 20:05:30 +0100dhouthoo(~dhouthoo@ptr-eitgbj2w0uu6delkbrh.18120a2.ip6.access.telenet.be) (Quit: WeeChat 2.9)
2020-11-24 20:05:37 +0100 <texasmynsted> Isn't there a command in the REPL to write the session to a file?
2020-11-24 20:05:39 +0100Lord_of_Life(~Lord@unaffiliated/lord-of-life/x-0885362) (Excess Flood)
2020-11-24 20:05:53 +0100 <texasmynsted> I seem to recall there is but not how to do it. I do not see it in the help
2020-11-24 20:06:02 +0100Tario(~Tario@201.192.165.173) (Read error: Connection reset by peer)
2020-11-24 20:06:33 +0100Lord_of_Life(~Lord@46.217.222.157)
2020-11-24 20:06:33 +0100Lord_of_Life(~Lord@46.217.222.157) (Changing host)
2020-11-24 20:06:33 +0100Lord_of_Life(~Lord@unaffiliated/lord-of-life/x-0885362)
2020-11-24 20:06:34 +0100 <dmj`> texasmynsted: sadly, no.
2020-11-24 20:06:40 +0100 <texasmynsted> hm
2020-11-24 20:06:47 +0100 <texasmynsted> Maybe I dreamed it
2020-11-24 20:07:05 +0100 <ezzieyguywuf> what's the difference between cabal and cabal-install?
2020-11-24 20:07:15 +0100 <dminuoso> texasmynsted: head -n 10 ~/.ghc/ghci_history | tac
2020-11-24 20:07:18 +0100Tario(~Tario@201.192.165.173)
2020-11-24 20:07:22 +0100 <dminuoso> I admit it's cheap, but effective...
2020-11-24 20:07:32 +0100 <ezzieyguywuf> I'm tryig to use my package manager to install a minimal haskell build system, i.e. I can install the ghc binary from there, as well as cabal and cabal-install
2020-11-24 20:07:41 +0100 <ezzieyguywuf> but I'm not sure if I need one or both of the cabal ones
2020-11-24 20:07:44 +0100 <dminuoso> ezzieyguywuf: https://gist.github.com/merijn/8152d561fb8b011f9313c48d876ceb07
2020-11-24 20:08:00 +0100Franciman(~francesco@host-82-54-193-143.retail.telecomitalia.it) (Ping timeout: 272 seconds)
2020-11-24 20:08:01 +0100 <maerwald> ezzieyguywuf: Cabal is a library, cabal-install an executable
2020-11-24 20:08:03 +0100 <texasmynsted> ooh nice
2020-11-24 20:08:09 +0100 <texasmynsted> Thank you dminuoso
2020-11-24 20:08:23 +0100 <merijn> dminuoso: Writing that has saved me so much time over the past year :p
2020-11-24 20:08:36 +0100 <ezzieyguywuf> maerwald: ah hah, thank you, so I'll install cabal-install and it should (hopefully) pull in cabal
2020-11-24 20:08:38 +0100ggole(~ggole@2001:8003:8119:7200:882e:5c1e:9189:4cff) (Quit: Leaving)
2020-11-24 20:08:39 +0100 <dmj`> koz_: yea but Vulkan is hard, need to learn OpenGL first
2020-11-24 20:08:58 +0100 <maerwald> ezzieyguywuf: you shouldn't need to care whether it pulls in Cabal or not
2020-11-24 20:09:00 +0100 <dminuoso> ezzieyguywuf: Huh what is your goal?
2020-11-24 20:09:14 +0100 <maerwald> I don't see that the question entailed stack, lol
2020-11-24 20:09:41 +0100 <dminuoso> For just a haskell build system you need `cabal-install` and `ghc`. Don't forget to run `cabal update` too, possibly regularly, so your index is up to date.
2020-11-24 20:10:18 +0100 <maerwald> Yeah, if you want to interface with Cabal the library, I urge you not to
2020-11-24 20:10:26 +0100 <dminuoso> cabal-install can deal with .cabal the file format and CABAL the spec. Whether or not it uses Cabal-the-library should not be relevant to you
2020-11-24 20:10:27 +0100 <ezzieyguywuf> dminuoso: that link is helpful thank you.
2020-11-24 20:10:42 +0100 <ezzieyguywuf> maerwald: you're right I shouldn't need to care.
2020-11-24 20:10:50 +0100shf(~sheaf@2a01:cb19:80cc:7e00:7dfb:edae:5f48:fe4e) (Read error: Connection reset by peer)
2020-11-24 20:10:55 +0100 <ezzieyguywuf> dminuoso: my goal is to have my package manager manage ghc and cabal for me
2020-11-24 20:11:04 +0100 <maerwald> what package manager is that
2020-11-24 20:11:15 +0100 <ezzieyguywuf> maerwald: portag
2020-11-24 20:11:17 +0100 <ezzieyguywuf> *portage
2020-11-24 20:11:19 +0100 <maerwald> bad idea
2020-11-24 20:11:27 +0100 <maerwald> don't do it
2020-11-24 20:11:46 +0100 <ezzieyguywuf> maerwald: why is it a bad idea?
2020-11-24 20:11:54 +0100 <maerwald> ezzieyguywuf: gentoo can't handle GHC properly
2020-11-24 20:12:03 +0100 <maerwald> it's a mess with the slots (and subslots)
2020-11-24 20:12:14 +0100 <maerwald> you can't reasonably have multiple GHC versions
2020-11-24 20:12:16 +0100 <maerwald> which you need
2020-11-24 20:12:26 +0100 <ezzieyguywuf> maerwald: I figure it's worth a shot. It has a USE=binary option that simply pulls in the binary from upstream, i.e. y'all
2020-11-24 20:12:34 +0100 <ezzieyguywuf> maerwald: ah, I see
2020-11-24 20:12:39 +0100 <maerwald> yes, but if you install a library, what GHC is it built against?
2020-11-24 20:12:42 +0100 <ezzieyguywuf> maerwald: why do I need multiple ghc versions?
2020-11-24 20:12:57 +0100 <maerwald> because that's a very common thing/problem in haskell
2020-11-24 20:13:16 +0100CindyLinz(~cindy_utf@112.121.78.20) (Ping timeout: 240 seconds)
2020-11-24 20:13:22 +0100 <dminuoso> Whether ezzieyguywuf needs multiple GHC versions is for them to decide though...
2020-11-24 20:13:41 +0100 <maerwald> Using portage for that will just give you pain
2020-11-24 20:13:58 +0100 <ezzieyguywuf> maerwald: anything installed by portage (which is all of cabal-install's dependencies) are built using the system ghc
2020-11-24 20:14:06 +0100 <ezzieyguywuf> but, then again, the system ghc will be the only one I have...
2020-11-24 20:14:10 +0100 <dminuoso> Disclaimer: maerwald is the author of the tool he's trying to get you to use. :p
2020-11-24 20:14:21 +0100CindyLinz(~cindy_utf@112.121.78.20)
2020-11-24 20:14:34 +0100 <maerwald> dminuoso: nah, 5 years of gentoo development are just trying to save them from pain I know well enough
2020-11-24 20:14:52 +0100 <dminuoso> maerwald: Ah I see. I had a Gentoo phase too when I was a kid. :(
2020-11-24 20:15:00 +0100 <maerwald> the only distro that manages haskell well is NixOS, but then you have to use ...NixOS :D
2020-11-24 20:15:02 +0100 <merijn> I was saved as a kid
2020-11-24 20:15:10 +0100 <merijn> Someone gave me a FreeBSD shell instead :p
2020-11-24 20:15:18 +0100 <maerwald> merijn: too chaotic
2020-11-24 20:15:59 +0100 <merijn> maerwald: How so?
2020-11-24 20:16:16 +0100 <ezzieyguywuf> ok
2020-11-24 20:16:21 +0100 <ezzieyguywuf> maerwald: you convinced me :)
2020-11-24 20:16:29 +0100 <ezzieyguywuf> you and epsilonKnot over in #gentoo-chat
2020-11-24 20:16:35 +0100 <ezzieyguywuf> so ghcup it is
2020-11-24 20:16:52 +0100 <maerwald> merijn: the tooling is like someone threw a bomb into a unix kitchen and then started yelling and laughing like a maniac and told you to pick what you like
2020-11-24 20:17:03 +0100 <merijn> maerwald: wut?
2020-11-24 20:17:12 +0100 <dminuoso> A long long time in the future, there will a trilogy of movies. "OS Wars", followed by "Linux Strikes Back" and "Return of the last BSD". And then a bunch of OSes nobody really wants to use, but they're marketed well so the movies will sell.
2020-11-24 20:17:39 +0100 <ezzieyguywuf> or ghcup-hs I guess...
2020-11-24 20:17:49 +0100 <maerwald> merijn: also, the linker on BSD...
2020-11-24 20:17:56 +0100 <merijn> maerwald: It's like the opposite, where the tooling is consistent and actually documented, but everyone wrote unportable linux shite and you have to fix the piece yourself... >.>
2020-11-24 20:18:19 +0100 <dminuoso> I agree. FreeBSD is the last OS that actually shipped with a manual good enough to learn and operate your system with.
2020-11-24 20:18:34 +0100 <merijn> maerwald: Counterpoint: the linux linker :p (I guess some distros now ship gold, which is less braindead, but still)
2020-11-24 20:18:36 +0100 <dminuoso> With Linux it's largely "hope there's a man page", otherwise dig around in archive.org, use the source, apply patches..
2020-11-24 20:18:53 +0100 <merijn> dminuoso: Still ships with it, even. The Handbook is like a solid 70-80% of the reason I prefer it
2020-11-24 20:19:28 +0100 <maerwald> dminuoso: most source code is self-documenting and it's saying "I'm shite"
2020-11-24 20:19:30 +0100 <maerwald> :D
2020-11-24 20:20:05 +0100 <merijn> maerwald: See, if you only use linux, then I agree with you :p
2020-11-24 20:20:21 +0100 <merijn> Anyway, that's drifting -offtopic
2020-11-24 20:20:50 +0100 <maerwald> ezzieyguywuf: btw... gentoo *could* ship a GHC with no haskell dependencies (and that would solve lots of problems)
2020-11-24 20:21:20 +0100 <merijn> maerwald: That applies to all linux distros insisting on packaging haskell libs :\
2020-11-24 20:21:40 +0100 <maerwald> I think OpenSUSE does that?
2020-11-24 20:21:46 +0100 <glguy> Does it make sense for distros to ship haskell libs to be to build the haskell executables the distros ship?
2020-11-24 20:22:02 +0100 <merijn> glguy: imo, no
2020-11-24 20:22:03 +0100 <maerwald> glguy: many distros tried, because of pando
2020-11-24 20:22:08 +0100 <maerwald> c
2020-11-24 20:22:14 +0100 <maerwald> but they failed nicely
2020-11-24 20:22:29 +0100 <glguy> better to have the distro rebuild all of the Haskell deps for each haskell executable shipped then?
2020-11-24 20:22:43 +0100 <maerwald> better ship static binaries and give up!
2020-11-24 20:22:44 +0100 <merijn> glguy: What's the benefit over shipping 100+ haskell library packages used by pandoc vs just shipping staticall linked pandoc?
2020-11-24 20:22:59 +0100 <Clint> we do ship statically linked pandoc
2020-11-24 20:23:00 +0100 <glguy> merijn: ideally the community could come up with two executables worth installing?
2020-11-24 20:23:03 +0100 <Clint> but we need the libraries to build them
2020-11-24 20:23:06 +0100 <merijn> glguy: It just pisses of users
2020-11-24 20:23:21 +0100 <merijn> glguy: Two executables that happen to share the exact transitive dependency resolution?
2020-11-24 20:23:36 +0100 <glguy> No, not exact, just overlapping
2020-11-24 20:23:43 +0100 <merijn> glguy: Because if they depend (transitively) on different versions of the same lib, you still gotta build things
2020-11-24 20:23:58 +0100 <Clint> that is why stackage makes things easier
2020-11-24 20:24:18 +0100 <merijn> glguy: The main advantage in the C world is that you can independently update libraries, but GHC doesn't allow that anyway
2020-11-24 20:24:23 +0100kritzefitz(~kritzefit@212.86.56.80)
2020-11-24 20:24:57 +0100 <maerwald> Clint: ?
2020-11-24 20:25:21 +0100 <merijn> Clint: Stack makes things *simpler* (it's failure model for build plans is just "it works" or "it does not, tough shit") not *easier*.
2020-11-24 20:25:42 +0100 <merijn> And in the 2nd case, good luck ever fixing it to work
2020-11-24 20:25:49 +0100christo(~chris@81.96.113.213) (Remote host closed the connection)
2020-11-24 20:25:50 +0100 <glguy> It makes things easier for packagers if the developers are all targetting the same resolver, though
2020-11-24 20:25:56 +0100 <dminuoso> The only mentality where all of this works is nix.
2020-11-24 20:25:57 +0100 <ezzieyguywuf> maerwald: like I said, the ghc installation isn't really an issue, I can use portage to install the upstream binary
2020-11-24 20:25:59 +0100 <merijn> glguy: Sure
2020-11-24 20:26:17 +0100 <merijn> glguy: And if we all just use a single programming language and compiler for everything optimisation would be a breeze! :D
2020-11-24 20:26:18 +0100 <maerwald> I don't think gentoo ever followed stackage though
2020-11-24 20:26:28 +0100 <ezzieyguywuf> I guess it's the cabal-install that's an issue, since either (a) y'all don't provide a binary, or (b) gentoo doesn't provide an option to install said binary
2020-11-24 20:26:40 +0100 <merijn> dminuoso: s/where all of this works/where all of this works *in theory*
2020-11-24 20:26:43 +0100 <ezzieyguywuf> maerwald: what do you mean "followed stackage"?
2020-11-24 20:26:53 +0100 <maerwald> ezzieyguywuf: used the version defined in stackage
2020-11-24 20:26:56 +0100cosimone(~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd)
2020-11-24 20:26:57 +0100tom__(~tom@2a00:23c8:970a:3501:38a6:4546:df42:c1cb) (Read error: Connection reset by peer)
2020-11-24 20:26:59 +0100 <dminuoso> merijn: well it works in practice too, largely. Of course its not perfect, but tell me one package manager that is.
2020-11-24 20:28:03 +0100 <ezzieyguywuf> you're right, it's getting its binary from https://slyfox.uni.cx for some reason...
2020-11-24 20:28:22 +0100 <maerwald> that's not what I meant, but anyway
2020-11-24 20:28:49 +0100 <ezzieyguywuf> oh wait nvm, it comes from downloads.haskel.org
2020-11-24 20:28:49 +0100 <maerwald> https://www.stackage.org/
2020-11-24 20:28:50 +0100Franciman(~francesco@host-82-54-193-143.retail.telecomitalia.it)
2020-11-24 20:28:57 +0100 <maerwald> stackage is just a package set
2020-11-24 20:29:08 +0100 <maerwald> NixOS follows it
2020-11-24 20:29:17 +0100 <maerwald> most distros don't
2020-11-24 20:29:40 +0100Lycurgus(~niemand@98.4.114.74) (Ping timeout: 260 seconds)
2020-11-24 20:30:11 +0100 <Clint> Debian tries
2020-11-24 20:30:16 +0100 <Clint> but developers don't make that easy
2020-11-24 20:30:51 +0100 <maerwald> they start packaging libs too? *sigh*
2020-11-24 20:30:57 +0100cads(~cads@ip-64-72-99-232.lasvegas.net)
2020-11-24 20:31:08 +0100 <Clint> there's no other way to build haskell apps
2020-11-24 20:31:16 +0100 <maerwald> on linux there is
2020-11-24 20:31:22 +0100 <merijn> Clint: Sure there is. You just build the binary and ship it, done
2020-11-24 20:31:23 +0100 <maerwald> debian is not a source distro
2020-11-24 20:31:30 +0100 <maerwald> they don't need to mess with libs
2020-11-24 20:31:42 +0100 <sshine> maerwald, they've been doing that for a long time.
2020-11-24 20:31:49 +0100 <merijn> Clint: Why would you need to package each Haskell library independently?
2020-11-24 20:32:03 +0100 <sshine> merijn, so you don't need to compile them.
2020-11-24 20:32:10 +0100 <sshine> merijn, so they work together.
2020-11-24 20:32:15 +0100 <merijn> sshine: Distros *already* ship binaries
2020-11-24 20:32:21 +0100 <sshine> merijn, it's a binary snapshot :) that idea in itself isn't bad.
2020-11-24 20:32:31 +0100 <merijn> sshine: So why not ship the final executable and call it a day
2020-11-24 20:32:42 +0100knupfer(~Thunderbi@i59F7FF7E.versanet.de) (Ping timeout: 272 seconds)
2020-11-24 20:32:45 +0100 <sshine> merijn, aren't we talking libraries?
2020-11-24 20:32:52 +0100 <Clint> why would you hide all the libraries you've already packaged?
2020-11-24 20:33:05 +0100 <maerwald> hint: dynamic linking doesn't really work well in haskell and doesn't give you the same capabilities C does
2020-11-24 20:33:09 +0100 <sshine> Clint, who is hiding libraries?
2020-11-24 20:33:13 +0100cosimone(~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd) (Quit: cosimone)
2020-11-24 20:33:13 +0100 <merijn> sshine: Installing pandoc installs 100+ dependencies that all update super frequently
2020-11-24 20:33:18 +0100 <Clint> sshine: merijn is objecting to shipping libraries
2020-11-24 20:33:20 +0100francesco_(~francesco@host-82-54-193-143.retail.telecomitalia.it)
2020-11-24 20:33:28 +0100 <maerwald> *for haskell*
2020-11-24 20:33:45 +0100Franciman(~francesco@host-82-54-193-143.retail.telecomitalia.it) (Ping timeout: 240 seconds)
2020-11-24 20:33:46 +0100 <sshine> Clint, via debian/ubuntu's package manager?
2020-11-24 20:33:50 +0100 <sshine> Clint, yeah that's crazy. :P
2020-11-24 20:33:52 +0100 <merijn> sshine: It's causing *massive* amounts of frustration and pissing of Arch/etc. users and none of them blame their distro, they all blame Haskell
2020-11-24 20:34:09 +0100 <merijn> Clint: I'm objecting to shipping *haskell* libraries
2020-11-24 20:34:36 +0100 <merijn> It's dumb. There's 0 actual reuse happening, it triggers tons of cascade updates, pisses off users, and has no pragmatic benefits
2020-11-24 20:34:41 +0100 <Clint> right, so we would need to build them and then hide them to not ship them
2020-11-24 20:35:02 +0100 <Clint> which is absurd
2020-11-24 20:35:02 +0100 <sshine> merijn, I'm saying the intent is good. but I don't think that snapshot-based OS package managers are fit for frequent micro-updates. I think it creates an unnatural discrepancy between those who make libraries and those who use them via the OS.
2020-11-24 20:35:29 +0100 <merijn> Clint: No, why would you "need to hide them" just ship the final pandoc/whatever executable and don't ship any libraries at all, no need to hide them
2020-11-24 20:35:46 +0100 <glguy> libraries can do things like install supporting data files and such
2020-11-24 20:36:07 +0100 <glguy> it's not just a matter of copying an executable, right?
2020-11-24 20:36:29 +0100 <Clint> merijn: because you need the build dependencies packaged to build the final pandoc/whatever executable
2020-11-24 20:36:52 +0100 <merijn> glguy: 1) packagers already control where Cabal puts those files, so they just need to ship those too, which is the same like shipping anything else 2) we should fix cabal-install's prefix independence (which is on my to do list)
2020-11-24 20:37:37 +0100 <merijn> Clint: No you don't, you can just cabal build the pandoc executable without packaging dependencies. Just use a freeze file/local mirror of package versions if you care about auditing (not that anyone is auditing Haskell libs now)
2020-11-24 20:37:51 +0100ClaudiusMaximus(~claude@198.123.199.146.dyn.plus.net)
2020-11-24 20:37:51 +0100ClaudiusMaximus(~claude@198.123.199.146.dyn.plus.net) (Changing host)
2020-11-24 20:37:51 +0100ClaudiusMaximus(~claude@unaffiliated/claudiusmaximus)
2020-11-24 20:37:56 +0100christo(~chris@81.96.113.213)
2020-11-24 20:38:27 +0100 <Clint> merijn: not in debian, you can't
2020-11-24 20:38:37 +0100 <merijn> Clint: Why not?
2020-11-24 20:38:44 +0100chaosmasttter(~chaosmast@p200300c4a7107e01bc10c915608759f8.dip0.t-ipconnect.de)
2020-11-24 20:38:47 +0100 <Clint> because all build dependencies have to be packaged and reproducible
2020-11-24 20:38:58 +0100 <Clint> and buildable without network
2020-11-24 20:38:59 +0100 <merijn> That's not "can't" that's "won't" and that's on them
2020-11-24 20:39:07 +0100 <merijn> Clint: You can build without network fine
2020-11-24 20:39:22 +0100 <merijn> cabal-install doesn't need a network
2020-11-24 20:39:26 +0100 <Clint> right, i can do whatever i want if i don't care about distribution rules
2020-11-24 20:39:43 +0100 <Clint> but you're all outraged because people are following the rules you don't care about
2020-11-24 20:40:00 +0100conal(~conal@66.115.157.138) (Quit: Computer has gone to sleep.)
2020-11-24 20:40:19 +0100 <merijn> Clint: If people self-impose dumb restrictions they don't get to bitch about the effect of those restrictions
2020-11-24 20:40:23 +0100 <merijn> It's one or the other
2020-11-24 20:40:24 +0100Jesin(~Jesin@pool-72-66-101-18.washdc.fios.verizon.net) (Quit: Leaving)
2020-11-24 20:40:34 +0100 <glguy> This feels like a more hostile conversation than it needs to be
2020-11-24 20:40:47 +0100 <Clint> that's true
2020-11-24 20:40:54 +0100 <Clint> i will abscond
2020-11-24 20:41:17 +0100 <sshine> can't have that self-imposed dumb bitching. ;)
2020-11-24 20:41:39 +0100 <merijn> Yeah, my bad. I just get so tired of people complaining about Haskell building being hard because they're making it hard :\
2020-11-24 20:41:52 +0100 <glguy> The value in the conversation could just be in better understanding of what the limitations are and what's possible
2020-11-24 20:41:56 +0100 <glguy> doesn't have to be a fight
2020-11-24 20:42:02 +0100 <sshine> merijn, I'm not complaining, but I *could* be complaining, because it tends to be. ;)
2020-11-24 20:42:06 +0100 <sm[m]> +1
2020-11-24 20:42:11 +0100 <maerwald> Clint: do you have a link to that distro policy?
2020-11-24 20:42:34 +0100 <sshine> merijn, also, distros distributing libraries is just a trap.
2020-11-24 20:42:56 +0100 <merijn> sshine: In what way?
2020-11-24 20:43:06 +0100 <sshine> merijn, well, you get stale snapshots.
2020-11-24 20:43:21 +0100 <merijn> (or, I guess I should say "which specific flaw of many did you have in mind?" :p)
2020-11-24 20:43:35 +0100jonatanb(jonatanb@gateway/vpn/protonvpn/jonatanb) (Remote host closed the connection)
2020-11-24 20:43:35 +0100conal(~conal@66.115.157.138)
2020-11-24 20:43:48 +0100 <sshine> merijn, and if the distro doesn't have the library you're looking for, you have to choose between either not using it, or completely losing the benefit of having snapshots maintained for you.
2020-11-24 20:44:13 +0100Varis(~Tadas@unaffiliated/varis) (Ping timeout: 246 seconds)
2020-11-24 20:44:28 +0100 <merijn> Clearly the solution is to abandon software and become a gardener >.>
2020-11-24 20:44:35 +0100 <sshine> I'm working on it.
2020-11-24 20:44:40 +0100 <maerwald> merijn: do you have a nice spot?
2020-11-24 20:44:46 +0100 <sshine> my cats are trying hard to prevent it from happening.
2020-11-24 20:44:55 +0100 <merijn> maerwald: I have a garden, for now... :p
2020-11-24 20:45:03 +0100 <merijn> Yes
2020-11-24 20:45:20 +0100 <merijn> We should talk about cats, rather than packaging. Cats are clearly superior to software packaging
2020-11-24 20:45:47 +0100 <Rembane> I want cats to do software packaging.
2020-11-24 20:45:55 +0100Franciman(~francesco@host-82-54-193-143.retail.telecomitalia.it)
2020-11-24 20:46:19 +0100francesco_(~francesco@host-82-54-193-143.retail.telecomitalia.it) (Ping timeout: 246 seconds)
2020-11-24 20:46:29 +0100 <Clint> maerwald: https://www.debian.org/doc/debian-policy/ch-source.html
2020-11-24 20:46:48 +0100Jesin(~Jesin@pool-72-66-101-18.washdc.fios.verizon.net)
2020-11-24 20:46:56 +0100 <glguy> Clint: Is there a way to subscribe to some kind of stream to find out when I do something dumb that makes it hard to package my program in debian?
2020-11-24 20:46:57 +0100 <maerwald> Rembane: you need more OCD than the average programmer to be a good packager :p
2020-11-24 20:47:07 +0100 <maerwald> not sure cats qualify
2020-11-24 20:47:52 +0100 <merijn> So, speaking of cats and somewhat staying on topic...
2020-11-24 20:48:14 +0100 <Rembane> maerwald: That's a good point. What if packaging is like pushing things down from tables? :)
2020-11-24 20:48:22 +0100 <merijn> Tragically, my lambdacats.org forward to, well, the lambdacats died a few years ago
2020-11-24 20:48:27 +0100 <merijn> BUT!
2020-11-24 20:48:32 +0100 <glguy> Clint: Also since you're listed as the packaging maintainer for glirc, I'll note that I did see https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=801522 and I made a man page ^_^
2020-11-24 20:48:38 +0100 <merijn> I just discovered someone has a mirror of the original images!
2020-11-24 20:48:51 +0100 <maerwald> Rembane: that reminds me more of haskell library maintainers pushing their API changes downstream like a cat stuff from the table
2020-11-24 20:49:01 +0100 <ezzieyguywuf> oh neat, ghcup install Haskell Language Server
2020-11-24 20:49:20 +0100aidecoe(~aidecoe@unaffiliated/aidecoe) (Remote host closed the connection)
2020-11-24 20:49:32 +0100 <Rembane> maerwald: :D
2020-11-24 20:49:36 +0100brisbin(~patrick@pool-173-49-158-4.phlapa.fios.verizon.net) (Ping timeout: 240 seconds)
2020-11-24 20:50:23 +0100 <Clint> glguy: you could subscribe to https://tracker.debian.org/pkg/glirc for some subset of events
2020-11-24 20:51:13 +0100 <glguy> thanks
2020-11-24 20:51:52 +0100brisbin(~patrick@pool-173-49-158-4.phlapa.fios.verizon.net)
2020-11-24 20:52:13 +0100 <merijn> https://lambdacats.github.io/ \o/
2020-11-24 20:52:28 +0100Franciman(~francesco@host-82-54-193-143.retail.telecomitalia.it) (Ping timeout: 260 seconds)
2020-11-24 20:53:21 +0100 <ezzieyguywuf> is the CHANGELOG.md thing necessary?
2020-11-24 20:53:51 +0100 <glguy> Are you making something for other people to use?
2020-11-24 20:53:53 +0100 <merijn> ezzieyguywuf: For what?
2020-11-24 20:54:15 +0100 <ezzieyguywuf> merijn: cabal init created it
2020-11-24 20:54:19 +0100 <merijn> ezzieyguywuf: CHANGELOG will be linked from Hackage for packages uploaded there
2020-11-24 20:54:22 +0100 <ezzieyguywuf> I'm just wandering why it does that.
2020-11-24 20:54:35 +0100conal(~conal@66.115.157.138) (Quit: Computer has gone to sleep.)
2020-11-24 20:54:37 +0100 <merijn> ezzieyguywuf: Which makes it easy for people to see what changes from version to version
2020-11-24 20:55:02 +0100 <merijn> ezzieyguywuf: See the changelog under the dependencies here: https://hackage.haskell.org/package/lens
2020-11-24 20:55:48 +0100oisdk(~oisdk@2001:bb6:3329:d100:188f:f126:4321:8fc1) (Quit: oisdk)
2020-11-24 20:55:54 +0100 <merijn> ezzieyguywuf: So is it *actually* necessary? No. Is it good to nudge people into including one by default? Yes.
2020-11-24 20:55:59 +0100Deide(~Deide@217.155.19.23)
2020-11-24 20:56:19 +0100 <merijn> I mean, a license isn't *technically* necessary either :p
2020-11-24 20:56:20 +0100 <ezzieyguywuf> merijn: ah, I see. thank you for that explanation.
2020-11-24 20:56:32 +0100 <ezzieyguywuf> I tend to go to the projects git page first and search around there for history info.
2020-11-24 20:56:33 +0100carlomagno1(~cararell@148.87.23.8) (Ping timeout: 260 seconds)
2020-11-24 20:57:08 +0100 <merijn> ezzieyguywuf: Yeah, but if you wanna just quickly check "did 4.16 add anything breaking since 4.15" having a convenient source of that without digging through git is nice :p
2020-11-24 20:57:13 +0100justanotheruser(~justanoth@unaffiliated/justanotheruser)
2020-11-24 20:57:24 +0100 <ezzieyguywuf> didn't cabal use to build things in a hidden directory? I see "dist-newstyle" in my project dir now. am I misremembering? was this always the case?
2020-11-24 20:57:35 +0100oisdk(~oisdk@2001:bb6:3329:d100:199a:baf3:2d99:2a0a)
2020-11-24 20:57:54 +0100 <merijn> ezzieyguywuf: It *used* to use "dist/" so maybe you ignored that in the past, but didn't add dist-newstyle?
2020-11-24 20:58:04 +0100conal(~conal@66.115.157.138)
2020-11-24 20:58:13 +0100 <ezzieyguywuf> hm, maybe that's it
2020-11-24 20:58:20 +0100 <ezzieyguywuf> or I've been using stack for a while, maybe stack hides it
2020-11-24 20:58:32 +0100 <merijn> Stack uses .stack-work, I think?
2020-11-24 20:58:36 +0100 <maerwald> yeah, stack has a better default
2020-11-24 20:58:47 +0100 <maerwald> non-hidden work dir is not a good default
2020-11-24 20:59:03 +0100 <merijn> maerwald: Well, there's an open issues for discussing the "new" final naming of dist-newstyle on github :p
2020-11-24 20:59:14 +0100 <ezzieyguywuf> I don't mind it, I'm used to 'build' dir with cmake
2020-11-24 20:59:14 +0100 <maerwald> nice, the bikeshedding I needed
2020-11-24 21:00:07 +0100 <merijn> maerwald: https://github.com/haskell/cabal/issues/5731
2020-11-24 21:00:41 +0100carlomagno(~cararell@148.87.23.7)
2020-11-24 21:01:48 +0100 <maerwald> too much bikeshedding :p
2020-11-24 21:02:06 +0100geowiesnot(~user@87-89-181-157.abo.bbox.fr) (Ping timeout: 256 seconds)
2020-11-24 21:02:32 +0100pokid(~pokid@unaffiliated/pokid)
2020-11-24 21:03:11 +0100Franciman(~francesco@host-82-54-193-143.retail.telecomitalia.it)
2020-11-24 21:03:30 +0100cads(~cads@ip-64-72-99-232.lasvegas.net) (Ping timeout: 265 seconds)
2020-11-24 21:04:09 +0100glguy(x@freenode/staff/haskell.developer.glguy) (Quit: Quit)
2020-11-24 21:04:59 +0100knupfer(~Thunderbi@200116b824be8100bcd086fffecad97d.dip.versatel-1u1.de)
2020-11-24 21:05:00 +0100pokid(~pokid@unaffiliated/pokid) ()
2020-11-24 21:05:02 +0100knupfer(~Thunderbi@200116b824be8100bcd086fffecad97d.dip.versatel-1u1.de) (Client Quit)
2020-11-24 21:05:18 +0100knupfer(~Thunderbi@i59F7FF7E.versanet.de)
2020-11-24 21:06:13 +0100christo(~chris@81.96.113.213) (Remote host closed the connection)
2020-11-24 21:07:43 +0100 <merijn> Rats
2020-11-24 21:07:52 +0100 <merijn> I have inadvertently made my own life annoying
2020-11-24 21:07:52 +0100 <koz_> Such shed, much bike.
2020-11-24 21:08:18 +0100 <merijn> Damn these types >.>
2020-11-24 21:08:40 +0100zx__(~oracle@unaffiliated/oracle)
2020-11-24 21:09:00 +0100 <sm[m]> ezzieyguywuf: changelog link is extremely useful, thanks for adding it
2020-11-24 21:09:11 +0100 <sm[m]> I wish it was mandatory
2020-11-24 21:09:41 +0100conal(~conal@66.115.157.138) (Quit: Computer has gone to sleep.)
2020-11-24 21:09:54 +0100zx__kish
2020-11-24 21:10:49 +0100Franciman(~francesco@host-82-54-193-143.retail.telecomitalia.it) (Ping timeout: 246 seconds)
2020-11-24 21:11:25 +0100kish`(~oracle@unaffiliated/oracle) (Ping timeout: 240 seconds)
2020-11-24 21:11:31 +0100christo(~chris@81.96.113.213)
2020-11-24 21:11:33 +0100kishkish`
2020-11-24 21:12:03 +0100christo(~chris@81.96.113.213) (Read error: Connection reset by peer)
2020-11-24 21:12:28 +0100christo(~chris@81.96.113.213)
2020-11-24 21:12:55 +0100 <ezzieyguywuf> should I just put cabal update on a daily chron job?
2020-11-24 21:13:16 +0100 <dminuoso> Dunno, should you?
2020-11-24 21:13:24 +0100 <merijn> ezzieyguywuf: Naah
2020-11-24 21:13:40 +0100 <dminuoso> If you have it daily, you will be annoyed very regularly that builds break
2020-11-24 21:13:45 +0100 <merijn> ezzieyguywuf: It warns you if you haven't updated in 20 days or so, and even that isn't necessarily bad
2020-11-24 21:13:46 +0100 <dminuoso> Because transitive dependencies are suddenly broken
2020-11-24 21:14:01 +0100 <dminuoso> Sure, they get fixed promptly, but it adds a lot of friction
2020-11-24 21:14:12 +0100 <dminuoso> A monthly job for this is more sensible
2020-11-24 21:14:41 +0100 <dminuoso> (With the odd additional manual invocation)
2020-11-24 21:15:22 +0100conal(~conal@66.115.157.138)
2020-11-24 21:16:19 +0100Varis(~Tadas@unaffiliated/varis)
2020-11-24 21:17:07 +0100ohhellothere(50396315@g99021.upc-g.chello.nl)
2020-11-24 21:20:01 +0100gioyik(~gioyik@186.118.238.251) (Quit: WeeChat 3.0)
2020-11-24 21:21:51 +0100rprije(~rprije@123-243-139-165.tpgi.com.au)
2020-11-24 21:22:34 +0100conal_(~conal@64.71.133.70)
2020-11-24 21:23:30 +0100AlterEgo-(~ladew@124-198-158-163.dynamic.caiway.nl) (Quit: Leaving)
2020-11-24 21:23:39 +0100hidedagger(~nate@unaffiliated/hidedagger)
2020-11-24 21:23:58 +0100conal(~conal@66.115.157.138) (Ping timeout: 260 seconds)
2020-11-24 21:24:06 +0100conal_(~conal@64.71.133.70) (Client Quit)
2020-11-24 21:24:08 +0100sondr3(~sondr3@cm-84.211.56.132.getinternet.no) (Quit: Leaving)
2020-11-24 21:24:34 +0100LKoen(~LKoen@169.244.88.92.rev.sfr.net) (Read error: Connection reset by peer)
2020-11-24 21:27:09 +0100hidedagger(~nate@unaffiliated/hidedagger) (Client Quit)
2020-11-24 21:28:02 +0100 <hekkaidekapus> Speaking of distros, Fedora has some facilities to be friendly to Haskell/Rust/Go. Debian & co. could be inspired by that.
2020-11-24 21:28:04 +0100cosimone(~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd)
2020-11-24 21:28:43 +0100jonatanb(jonatanb@gateway/vpn/protonvpn/jonatanb)
2020-11-24 21:28:51 +0100 <hekkaidekapus> For Rust, libraries as basically shipped as sources.
2020-11-24 21:29:24 +0100LKoen(~LKoen@169.244.88.92.rev.sfr.net)
2020-11-24 21:29:44 +0100 <hekkaidekapus> For Haskell, there is a Modularity repository where everything gets updated in lockstep.
2020-11-24 21:30:07 +0100 <hekkaidekapus> And you can pull conflicting versions of the same package from that repo.
2020-11-24 21:30:59 +0100 <hekkaidekapus> So, if you want binaries (or don’t want to be building stuff frequently), you just activate said repo.
2020-11-24 21:31:21 +0100 <maerwald> yeah, I'm probably going to switch to Fedora sometime soon too
2020-11-24 21:31:29 +0100danvet(~Daniel@2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa) (Ping timeout: 272 seconds)
2020-11-24 21:31:47 +0100 <dminuoso> hekkaidekapus: Btw I think I settled on list-tries. It's a very complete tries library, and I trust the author
2020-11-24 21:32:05 +0100 <hekkaidekapus> dminuoso: Cool!
2020-11-24 21:32:35 +0100zincy_(~tom@2a00:23c8:970a:3501:49e9:cdf0:19c5:ddb0)
2020-11-24 21:33:02 +0100 <hekkaidekapus> re Fedora, the base ‘base’ repositories are Stackage-based, so if you’re in the Stackage mindset, that will be enough for you.
2020-11-24 21:33:18 +0100jonatanb(jonatanb@gateway/vpn/protonvpn/jonatanb) (Ping timeout: 260 seconds)
2020-11-24 21:33:35 +0100 <hekkaidekapus> (Credits to petersen and tristanC who do the heavy lifting.)
2020-11-24 21:34:48 +0100conal(~conal@64.71.133.70)
2020-11-24 21:38:15 +0100jamm_(~jamm@unaffiliated/jamm)
2020-11-24 21:38:43 +0100Gurkenglas(~Gurkengla@unaffiliated/gurkenglas)
2020-11-24 21:39:36 +0100LKoen(~LKoen@169.244.88.92.rev.sfr.net) (Read error: Connection reset by peer)
2020-11-24 21:39:39 +0100ohhellothere(50396315@g99021.upc-g.chello.nl) (Ping timeout: 245 seconds)
2020-11-24 21:40:49 +0100livvy(~livvy@gateway/tor-sasl/livvy)
2020-11-24 21:43:14 +0100jamm_(~jamm@unaffiliated/jamm) (Ping timeout: 264 seconds)
2020-11-24 21:43:31 +0100glguy(x@freenode/staff/haskell.developer.glguy)
2020-11-24 21:44:32 +0100Franciman(~francesco@host-82-54-193-143.retail.telecomitalia.it)
2020-11-24 21:44:36 +0100texasmynsted(~texasmyns@212.102.44.39) (Ping timeout: 240 seconds)
2020-11-24 21:44:39 +0100argent0(~argent0@168.227.98.80)
2020-11-24 21:45:21 +0100geowiesnot(~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr)
2020-11-24 21:45:41 +0100jonatanb(jonatanb@gateway/vpn/protonvpn/jonatanb)
2020-11-24 21:46:14 +0100Sigyn(sigyn@freenode/utility-bot/sigyn) (Quit: i've seen things you people wouldn't believe. spam bots on fire off the shoulder of sigyn. i watched k-line beams glitter in the dark near the Tannhäuser Gate. all these moments will be lost in time, like tears in rain. time to /die)
2020-11-24 21:46:47 +0100Sigyn(sigyn@freenode/utility-bot/sigyn)
2020-11-24 21:46:47 +0100ChanServ+o Sigyn
2020-11-24 21:46:55 +0100DavidEichmann(~david@62.110.198.146.dyn.plus.net) (Remote host closed the connection)
2020-11-24 21:48:56 +0100jespada(~jespada@90.254.245.49) (Ping timeout: 240 seconds)
2020-11-24 21:49:50 +0100mputz(~Thunderbi@dslb-084-058-211-084.084.058.pools.vodafone-ip.de) (Quit: mputz)
2020-11-24 21:49:51 +0100xff0x(~fox@2001:1a81:526f:8600:829e:8d:48d6:9a13) (Ping timeout: 272 seconds)
2020-11-24 21:50:22 +0100caecilius(~caecilius@pool-108-46-151-95.nycmny.fios.verizon.net) (Quit: leaving)
2020-11-24 21:50:24 +0100Lycurgus(~niemand@98.4.114.74)
2020-11-24 21:50:32 +0100xff0x(~fox@2001:1a81:526f:8600:55b6:62c6:bb3b:dc43)
2020-11-24 21:51:06 +0100hyperisco_(~hyperisco@d192-186-117-226.static.comm.cgocable.net)
2020-11-24 21:51:06 +0100hyperisco(~hyperisco@d192-186-117-226.static.comm.cgocable.net) (Disconnected by services)
2020-11-24 21:51:17 +0100hyperisco_(~hyperisco@d192-186-117-226.static.comm.cgocable.net) (Client Quit)
2020-11-24 21:51:20 +0100Franciman(~francesco@host-82-54-193-143.retail.telecomitalia.it) (Ping timeout: 260 seconds)
2020-11-24 21:51:40 +0100hyperisco(~hyperisco@d192-186-117-226.static.comm.cgocable.net)
2020-11-24 21:51:58 +0100jespada(~jespada@90.254.245.49)
2020-11-24 21:53:04 +0100borne(~fritjof@200116b864eb5c00394a967dc8ef4e61.dip.versatel-1u1.de)
2020-11-24 21:53:12 +0100caecilius(~caecilius@pool-108-46-151-95.nycmny.fios.verizon.net)
2020-11-24 21:53:41 +0100howdoi(uid224@gateway/web/irccloud.com/x-prctgemuwlhbjxof)
2020-11-24 21:57:04 +0100 <ezzieyguywuf> shouldn't I want to know if a cabal update breaks builds? i.e. b/c I should update my cabal file (lol, so many cabals!) such that it doesn't fail?
2020-11-24 21:57:31 +0100texasmynsted(~texasmyns@212.102.45.106)
2020-11-24 22:01:28 +0100Franciman(~francesco@host-82-54-193-143.retail.telecomitalia.it)
2020-11-24 22:02:37 +0100geowiesnot(~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) (Ping timeout: 264 seconds)
2020-11-24 22:03:37 +0100 <ezzieyguywuf> aside from getArgs at GetOpt, are there other command-line flag "managers" in base?
2020-11-24 22:03:48 +0100 <ezzieyguywuf> or what are some common libraries perhaps not in base?
2020-11-24 22:04:00 +0100 <merijn> ezzieyguywuf: optparse-applicative
2020-11-24 22:04:52 +0100 <ezzieyguywuf> merijn: thanks for the recommendation I'll take a look.
2020-11-24 22:05:25 +0100 <hekkaidekapus> ezzieyguywuf: Run `cabal freeze` to lock versions your dependencies.
2020-11-24 22:06:38 +0100 <hekkaidekapus> You might also write `index-state: 2020-11-24T12:00:00Z` in cabal.project to let cabal use a specific index.
2020-11-24 22:07:30 +0100 <ezzieyguywuf> hekkaidekapus: so this supports the idea of keeping the cabal index up-to-date though, right? because it forces me to use these features as-needed to ensure my stuff works
2020-11-24 22:07:45 +0100jonatanb(jonatanb@gateway/vpn/protonvpn/jonatanb) (Ping timeout: 240 seconds)
2020-11-24 22:07:51 +0100Jesin(~Jesin@pool-72-66-101-18.washdc.fios.verizon.net) (Quit: Leaving)
2020-11-24 22:08:29 +0100 <dminuoso> +1 for optparse-applicative
2020-11-24 22:08:36 +0100 <hekkaidekapus> Yeag, `cabal update` will be harmless for the project configured that way, and it will still be able to use latest versions for other projects.
2020-11-24 22:08:40 +0100 <dminuoso> One of the sweetest libraries around, despite its quirky implementation. :p
2020-11-24 22:10:58 +0100 <ezzieyguywuf> 😍 optparse-applicative has some very nice features!
2020-11-24 22:11:19 +0100Zetagon(~leo@c151-177-52-233.bredband.comhem.se) (Remote host closed the connection)
2020-11-24 22:11:31 +0100 <fendor> is there some *nice* library to aggregate a csv file and visualise it as some simple graphs? Or am I going to be quicker and more painless with R?
2020-11-24 22:11:43 +0100 <maerwald> I found it easier designing a cli interface in shell, than in optparse-applicative :p
2020-11-24 22:11:57 +0100 <texasmynsted> dsal: What happened to your site? http://bleu.west.spy.net/~dustin/
2020-11-24 22:12:46 +0100Jesin(~Jesin@pool-72-66-101-18.washdc.fios.verizon.net)
2020-11-24 22:12:48 +0100 <merijn> maerwald: That's on you :p
2020-11-24 22:13:07 +0100 <maerwald> it's still too verbose
2020-11-24 22:13:38 +0100 <merijn> It's a bit more verbose than necessary, but it's an insignificant amount
2020-11-24 22:13:53 +0100 <maerwald> depends how big your cli interface is
2020-11-24 22:14:03 +0100 <ezzieyguywuf> "it's still too verbose" optparse-applicative?
2020-11-24 22:14:13 +0100 <merijn> Plus, for bigger/more complicated setups you want some custom wrapping anyway
2020-11-24 22:14:30 +0100 <merijn> maerwald: I'm guessing ghcup is orders of magnitude smaller than mine :p
2020-11-24 22:14:37 +0100 <aplainzetakind> Isn't Data.PQueue.Max.deleteFindMax supposed to pop a largest element from the queue?
2020-11-24 22:14:42 +0100 <dminuoso> The initial overhead is small, and you get robust parsing, a fine help screen and shell completion...
2020-11-24 22:14:45 +0100 <dminuoso> And it scales well
2020-11-24 22:15:00 +0100LKoen(~LKoen@169.244.88.92.rev.sfr.net)
2020-11-24 22:15:20 +0100 <merijn> Yeah, I'm willing to invest the tiny bit more code of optparse and be future proof for any expansion
2020-11-24 22:15:25 +0100 <dminuoso> Perhaps optparse could need some additional combinators to bootstrap a miniature cli..
2020-11-24 22:15:28 +0100 <dminuoso> That could help
2020-11-24 22:15:29 +0100 <maerwald> merijn: Main.hs (where all the parser stuff is) is 1.7kLOC
2020-11-24 22:16:00 +0100 <ezzieyguywuf> WOW!!!!
2020-11-24 22:16:02 +0100 <maerwald> most of it because brittany likes newlines
2020-11-24 22:16:07 +0100 <ezzieyguywuf> i try to keep my source files smaller than that, lol
2020-11-24 22:16:25 +0100 <dminuoso> maerwald: What's your point here?
2020-11-24 22:16:33 +0100 <dminuoso> optparse-applicative is a library, eys
2020-11-24 22:16:49 +0100 <merijn> I think I have about 2k worth of optparse parsing code, possibly more :p
2020-11-24 22:16:51 +0100 <maerwald> my point is that it's less code in shell
2020-11-24 22:17:01 +0100 <maerwald> which is an odd observation
2020-11-24 22:17:07 +0100 <merijn> maerwald: But that's for about ~50 subcommands
2020-11-24 22:17:10 +0100 <sm[m]> ezzieyguywuf: also cmdargs, docopt
2020-11-24 22:17:15 +0100 <merijn> Across 3 executables
2020-11-24 22:17:38 +0100 <merijn> I dislike cmdargs, ties your internal reprsentation to tightly to the external one
2020-11-24 22:17:52 +0100 <ezzieyguywuf> sm[m]: saw cmdargs, that's what you're using in hledger :-P, haven't seen docopt though, I'll check it out.
2020-11-24 22:18:25 +0100 <maerwald> haskell doesn't have a good alternative to optparse-applicative, but pythons click is much better
2020-11-24 22:18:29 +0100 <merijn> ezzieyguywuf: docopt (and even cmdargs) imo only scale to really small commandlines
2020-11-24 22:18:48 +0100 <merijn> oof
2020-11-24 22:18:53 +0100 <merijn> Click is godawful >.>
2020-11-24 22:18:55 +0100 <dminuoso> I found click to be frustrating
2020-11-24 22:18:57 +0100 <dminuoso> Hah
2020-11-24 22:18:59 +0100 <maerwald> it's the best
2020-11-24 22:19:02 +0100 <merijn> I suspect maerwald values very different things than I do
2020-11-24 22:19:17 +0100 <maerwald> I used it with coconut, it was just intuitive
2020-11-24 22:19:19 +0100 <merijn> optparse is super reusable, which is great :>
2020-11-24 22:19:45 +0100supercoven(~Supercove@dsl-hkibng31-54fae6-106.dhcp.inet.fi) (Ping timeout: 240 seconds)
2020-11-24 22:20:00 +0100 <glguy> Clint: neat, I got that notification :)
2020-11-24 22:20:20 +0100 <dminuoso> python click is just tons of non-obvious decorators where it's not clear how they all interact
2020-11-24 22:20:36 +0100 <maerwald> yes, you shouldn't know
2020-11-24 22:21:06 +0100 <dminuoso> yes because why would you care to understand how components that you plug in interact with each other..
2020-11-24 22:21:30 +0100 <maerwald> dminuoso: that's defined by the API
2020-11-24 22:21:34 +0100 <maerwald> you have to understand that
2020-11-24 22:21:37 +0100 <maerwald> not the internals
2020-11-24 22:21:40 +0100 <maerwald> I dont care about them
2020-11-24 22:21:41 +0100 <dminuoso> It's also very non-composable
2020-11-24 22:21:55 +0100Kaiepi(~Kaiepi@nwcsnbsc03w-47-55-225-82.dhcp-dynamic.fibreop.nb.bellaliant.net) (Remote host closed the connection)
2020-11-24 22:22:02 +0100sord937(~sord937@gateway/tor-sasl/sord937) (Quit: sord937)
2020-11-24 22:22:03 +0100Tops2(~Tobias@dyndsl-095-033-095-017.ewe-ip-backbone.de) (Read error: Connection reset by peer)
2020-11-24 22:22:22 +0100 <maerwald> that's python for you
2020-11-24 22:22:33 +0100 <Chousuke> not having to understand the internals is all fine and good while things work :P
2020-11-24 22:22:35 +0100Kaiepi(~Kaiepi@nwcsnbsc03w-47-55-225-82.dhcp-dynamic.fibreop.nb.bellaliant.net)
2020-11-24 22:22:36 +0100 <maerwald> Tried to fix that with coconut
2020-11-24 22:22:47 +0100 <maerwald> But all it did was causing pain for the next guy maintaining my crap :p
2020-11-24 22:22:47 +0100Franciman(~francesco@host-82-54-193-143.retail.telecomitalia.it) (Ping timeout: 256 seconds)
2020-11-24 22:23:03 +0100 <ezzieyguywuf> i'm eating a coconut
2020-11-24 22:23:03 +0100 <dminuoso> Let's just write a Haskell-to-Python compiler.
2020-11-24 22:23:05 +0100 <dminuoso> In Python.
2020-11-24 22:23:08 +0100 <dminuoso> For maximum pleasure
2020-11-24 22:23:28 +0100 <merijn> maerwald: Right, but I value composability :p
2020-11-24 22:23:57 +0100jonatanb(jonatanb@gateway/vpn/protonvpn/jonatanb)
2020-11-24 22:24:26 +0100 <maerwald> merijn: I value stuff that doesn't piss me off :p
2020-11-24 22:24:41 +0100 <merijn> I don't believe that for one second
2020-11-24 22:24:55 +0100 <koz_> dminuoso: Snaked for your pleasure? :P
2020-11-24 22:24:57 +0100 <merijn> You seem pissed of at technology and libraries nearly 24/7 :p
2020-11-24 22:25:11 +0100 <merijn> So if you value not being pissed off, you seem to be doing something wrong :p
2020-11-24 22:25:12 +0100LKoen(~LKoen@169.244.88.92.rev.sfr.net) (Read error: Connection reset by peer)
2020-11-24 22:25:28 +0100 <Chousuke> I don't think there's anything related to computers that doesn't piss me off at least somewhat
2020-11-24 22:26:07 +0100 <merijn> anyhoo, enough technology for tonight
2020-11-24 22:26:37 +0100 <maerwald> merijn: I don't like stuff that leaks implementation details. Because there's too much of it, I can't be bothered with all of it. Just get it out of my sight :p
2020-11-24 22:26:56 +0100LKoen(~LKoen@169.244.88.92.rev.sfr.net)
2020-11-24 22:27:18 +0100jonatanb(jonatanb@gateway/vpn/protonvpn/jonatanb) (Remote host closed the connection)
2020-11-24 22:27:53 +0100 <maerwald> coconut leaks hard too, though
2020-11-24 22:28:07 +0100 <Chousuke> An abstraction leaking implementation details is not the same thing as an abstraction that's transparent (ie. understandable) though
2020-11-24 22:28:23 +0100 <maerwald> ah, classic topic: which one is lens?
2020-11-24 22:29:37 +0100 <glguy> DigitalKiwi: What versions of things do I not support that are causing glirc to need special treatment?
2020-11-24 22:30:16 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
2020-11-24 22:30:56 +0100__monty__(~toonn@unaffiliated/toonn) (Quit: leaving)
2020-11-24 22:31:05 +0100aredirect(~aredirect@197.52.231.124)
2020-11-24 22:31:28 +0100 <aredirect> Hi I want to take another look at haskell again, completely lost on which system to use
2020-11-24 22:31:50 +0100 <aredirect> should i use cabal? haskell platform? distro packages? ghcup? stack?
2020-11-24 22:32:12 +0100 <triteraflops> most distro packages basically just use cabal anyway
2020-11-24 22:32:24 +0100 <triteraflops> I prefer distro packages because it's a one stop shop for updates
2020-11-24 22:32:25 +0100 <koz_> aredirect: What OS are you on?
2020-11-24 22:32:41 +0100 <aredirect> ubuntu, i dropped the idea of the distro packages before because of arch
2020-11-24 22:32:47 +0100 <dminuoso> aredirect: Both cabal-install and stack are fine choices. They differ slightly.
2020-11-24 22:32:50 +0100 <koz_> aredirect: Use ghcup and don't look back.
2020-11-24 22:32:51 +0100 <dminuoso> Use ghcup to install them
2020-11-24 22:33:15 +0100 <DigitalKiwi> glguy: random 1.2.0 i think
2020-11-24 22:33:19 +0100 <aredirect> can I have a system wide default installation with ghcup?
2020-11-24 22:33:25 +0100 <maerwald> aredirect: kind of
2020-11-24 22:33:31 +0100 <maerwald> but with hacks
2020-11-24 22:33:41 +0100 <aredirect> what I want is, having a system wide haskell where i can write scripts and run them
2020-11-24 22:33:45 +0100 <maerwald> it's meant to be user-wide installation, where do you want to put it?
2020-11-24 22:33:51 +0100 <aredirect> and another one that has an enviornment per project
2020-11-24 22:34:20 +0100 <aredirect> but the mos annoying thing when used stack it keeps downloading and consuming disk sizes which is in my case not that big
2020-11-24 22:34:21 +0100 <triteraflops> Ideally, pacman would have some kind of cabal integration, so that haskell applications can be searched for and installed with a pacman frontend and cabal backend
2020-11-24 22:34:31 +0100 <DigitalKiwi> and let me see i think irc-core has something too but i have to build it
2020-11-24 22:34:39 +0100conal(~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
2020-11-24 22:34:43 +0100 <dminuoso> aredirect: That sounds like a curious requirements.
2020-11-24 22:34:45 +0100 <dminuoso> What's the usecase
2020-11-24 22:35:32 +0100 <aredirect> i develop in other languages e.g python which is available cross the system and when i want to develop a complete isolated project i fallback to virtualenv
2020-11-24 22:35:32 +0100conal(~conal@64.71.133.70)
2020-11-24 22:35:48 +0100 <aredirect> but all my automation scripts work by default on the system installation outside of the venv
2020-11-24 22:35:51 +0100 <DigitalKiwi> glguy: base64-bytestring >=1.0.0.1 && <1.1 on irc-core
2020-11-24 22:35:57 +0100 <maerwald> aredirect: you can set GHCUP_INSTALL_BASE_PREFIX=/var/local for example, then it will install into /var/local/.ghcup
2020-11-24 22:36:00 +0100conal(~conal@64.71.133.70) (Client Quit)
2020-11-24 22:36:05 +0100 <maerwald> but it's up to you how you deal with file permissions
2020-11-24 22:36:07 +0100jonatanb(jonatanb@gateway/vpn/protonvpn/jonatanb)
2020-11-24 22:36:33 +0100 <aredirect> maerwald, ah don't want to ruin that i wish there was a minimal way
2020-11-24 22:36:52 +0100 <aredirect> probably can be fine with stack if it stops downloading the world and using my disk space?
2020-11-24 22:37:13 +0100 <DigitalKiwi> it's possible there are others too maybe i'm not sure but that might be it and the happy 1.2
2020-11-24 22:37:35 +0100 <maerwald> aredirect: that is quite a minimal way, no? :p
2020-11-24 22:37:43 +0100 <glguy> Oh, I regularly run 'cabal outdated' but that wasn't checking my libraries, just the top-level client
2020-11-24 22:37:52 +0100 <aredirect> and can have a stack project called globalhs on my system and be done with it but i'd want that data downloaded to be cached and reused in every new project
2020-11-24 22:38:58 +0100 <maerwald> eh?
2020-11-24 22:39:27 +0100 <maerwald> both stack and cabal share installed libs across projects
2020-11-24 22:39:44 +0100 <aredirect> hmm why then stack keeps redownloading ghc over and over?
2020-11-24 22:39:50 +0100 <maerwald> yeah... xD
2020-11-24 22:39:54 +0100michalz(~user@185.246.204.39) (Remote host closed the connection)
2020-11-24 22:40:01 +0100 <maerwald> -> cabal
2020-11-24 22:40:04 +0100 <koz_> aredirect: Because the GHC version depends on the resolver.
2020-11-24 22:40:08 +0100LKoen(~LKoen@169.244.88.92.rev.sfr.net) (Read error: Connection reset by peer)
2020-11-24 22:40:10 +0100 <DigitalKiwi> glguy: this is the one we have right nowcopying path '/nix/store/l6rch8hzai15wwcacwcj2bscqcfpcqxh-base64-bytestring-1.1.0.0' from 'https://cache.nixos.org'...
2020-11-24 22:40:31 +0100 <aredirect> is there a way to have that pinned koz_ for all of the projects?
2020-11-24 22:40:31 +0100 <maerwald> koz_: which is sad, because you can just lift that restriction and stuff still works
2020-11-24 22:40:41 +0100 <koz_> maerwald: Except when it doesn't.
2020-11-24 22:40:49 +0100 <koz_> aredirect: Always set the same resolver in your stack.yamls.
2020-11-24 22:40:56 +0100 <koz_> There may be soem kind of config as well, I dunno.
2020-11-24 22:41:02 +0100 <koz_> Stack is documented like a saddle fits a cow.
2020-11-24 22:41:34 +0100 <maerwald> right, only for cowboys
2020-11-24 22:41:52 +0100 <aredirect> i was quitefond of haskell platform but i saw warning somewhere
2020-11-24 22:42:02 +0100 <aredirect> and the main website just confuses the hell out of me
2020-11-24 22:42:04 +0100LKoen(~LKoen@169.244.88.92.rev.sfr.net)
2020-11-24 22:42:15 +0100 <maerwald> there is no haskell platfrom anymore really, except some distros have packages with that name
2020-11-24 22:42:25 +0100 <glguy> DigitalKiwi: supporting the older random needed a code change, so that won't go out until next release
2020-11-24 22:42:45 +0100knupfer(~Thunderbi@i59F7FF7E.versanet.de) (Ping timeout: 240 seconds)
2020-11-24 22:42:48 +0100 <dsal> texasmynsted: google app engine deprecated my build and shut it off. I've got around to writing a new web server.
2020-11-24 22:42:54 +0100Franciman(~francesco@host-82-54-193-143.retail.telecomitalia.it)
2020-11-24 22:43:00 +0100 <aredirect> maerwald, did you see this page? https://www.haskell.org/downloads/
2020-11-24 22:43:15 +0100 <aredirect> i swear i saw ghcup once on the website before :D
2020-11-24 22:43:32 +0100 <maerwald> aredirect: yeah, it's a never ending topic
2020-11-24 22:43:59 +0100 <aredirect> koz_, per project or globally? i don't want to keep track of which resolver i don't even know features after ghc 2010 i guess that was sthe version i used
2020-11-24 22:44:01 +0100texasmynsted(~texasmyns@212.102.45.106) (Ping timeout: 264 seconds)
2020-11-24 22:44:12 +0100 <koz_> aredirect: 'GHC 2010' is not a thing.
2020-11-24 22:44:14 +0100 <koz_> are
2020-11-24 22:44:32 +0100 <koz_> aredirect: stack.yaml is per-project. There may or may not be some global thing stack uses.
2020-11-24 22:44:40 +0100koz_points to his comment regarding how Stack is documented.
2020-11-24 22:44:53 +0100 <maerwald> aredirect: https://github.com/haskell-infra/www.haskell.org/issues/12 https://github.com/haskell-infra/www.haskell.org/issues/21
2020-11-24 22:45:11 +0100 <aredirect> ah haskell 2010 koz_ my bad
2020-11-24 22:45:12 +0100 <maerwald> (and some more)
2020-11-24 22:45:23 +0100 <koz_> aredirect: Every version of GHC supports Haskell2010.
2020-11-24 22:45:38 +0100 <koz_> (well, every version you should even remotely consider using)
2020-11-24 22:46:11 +0100conal(~conal@64.71.133.70)
2020-11-24 22:46:34 +0100 <aredirect> koz_, ah for sure i think i used to use hugs at certain point
2020-11-24 22:46:48 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 260 seconds)
2020-11-24 22:46:59 +0100 <koz_> aredirect: In that case, just pick a version and go.
2020-11-24 22:47:01 +0100 <aredirect> maerwald, indeed that page is confusing
2020-11-24 22:47:06 +0100Franciman(~francesco@host-82-54-193-143.retail.telecomitalia.it) (Remote host closed the connection)
2020-11-24 22:47:17 +0100 <koz_> I _think_ LTSes for Stack only go as high as 8.8 for now?
2020-11-24 22:47:21 +0100 <triteraflops> wait, clean isn't lazy, is it?
2020-11-24 22:47:29 +0100 <DigitalKiwi> glguy: D:
2020-11-24 22:47:40 +0100 <triteraflops> maybe that's how it gets away with using uniqueness types to do IO
2020-11-24 22:47:42 +0100 <aredirect> koz_, yeah i'd have to check a version and see how to use it everywhere :(
2020-11-24 22:47:53 +0100 <DigitalKiwi> glguy: ty, i'll put that comment in then and should appease the reviewer :D
2020-11-24 22:47:55 +0100 <aredirect> but all of this is just too much even for someone who used haskell in the past :(
2020-11-24 22:48:16 +0100 <koz_> aredirect: Tools require learning. That's pretty universal IMHO.
2020-11-24 22:48:17 +0100 <aredirect> guess I can explain monads easier than explaining the download page
2020-11-24 22:48:42 +0100 <koz_> *insert obligatory statement about monoids in the category of endofunctors*
2020-11-24 22:48:50 +0100 <koz_> *insert obligatory inquiry about what the problem is*
2020-11-24 22:48:52 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2020-11-24 22:49:09 +0100 <aredirect> koz_, sure as long as you have a clear path that's not confusing for these tooling not 4 different paths
2020-11-24 22:49:20 +0100 <aredirect> koz_, hehe it'll never get old :D
2020-11-24 22:50:01 +0100borne(~fritjof@200116b864eb5c00394a967dc8ef4e61.dip.versatel-1u1.de) (Ping timeout: 272 seconds)
2020-11-24 22:50:39 +0100ericsagnes(~ericsagne@2405:6580:0:5100:2b3f:f80d:4d07:855c) (Ping timeout: 272 seconds)
2020-11-24 22:51:38 +0100 <maerwald> aredirect: feel free to comment on those issues
2020-11-24 22:52:07 +0100 <maerwald> the infra part is a bit more bureaucratic though, I guess
2020-11-24 22:52:13 +0100aidecoe(~aidecoe@unaffiliated/aidecoe)
2020-11-24 22:52:22 +0100 <maerwald> we can't have anarchy there either, obviously
2020-11-24 22:52:55 +0100hekkaidekapus_(~tchouri@gateway/tor-sasl/hekkaidekapus)
2020-11-24 22:53:05 +0100 <aredirect> maerwald, probably we need cargo there :D
2020-11-24 22:53:43 +0100hekkaidekapus(~tchouri@gateway/tor-sasl/hekkaidekapus) (Ping timeout: 240 seconds)
2020-11-24 22:53:56 +0100Jeanne-Kamikaze(~Jeanne-Ka@66.115.189.237) (Ping timeout: 240 seconds)
2020-11-24 22:54:00 +0100borne(~fritjof@200116b864eb5c00394a967dc8ef4e61.dip.versatel-1u1.de)
2020-11-24 22:54:52 +0100Franciman(~francesco@5.170.141.159)
2020-11-24 22:55:34 +0100livvy(~livvy@gateway/tor-sasl/livvy) (Remote host closed the connection)
2020-11-24 22:55:41 +0100royal_screwup213(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed)
2020-11-24 22:56:32 +0100royal_screwup213(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2020-11-24 22:56:38 +0100royal_screwup213(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Client Quit)
2020-11-24 23:02:25 +0100ericsagnes(~ericsagne@2405:6580:0:5100:4889:2fb8:f3c5:4ca)
2020-11-24 23:06:12 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-11-24 23:07:15 +0100kritzefitz(~kritzefit@212.86.56.80) (Remote host closed the connection)
2020-11-24 23:08:36 +0100livvy(~livvy@gateway/tor-sasl/livvy)
2020-11-24 23:09:46 +0100hexfive(~hexfive@50-47-142-195.evrt.wa.frontiernet.net)
2020-11-24 23:11:05 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
2020-11-24 23:11:49 +0100texasmynsted(~texasmyns@212.102.45.123)
2020-11-24 23:12:05 +0100gproto23(~gproto23@unaffiliated/gproto23) (Ping timeout: 256 seconds)
2020-11-24 23:12:07 +0100livvy(~livvy@gateway/tor-sasl/livvy) (Remote host closed the connection)
2020-11-24 23:15:10 +0100livvy(~livvy@gateway/tor-sasl/livvy)
2020-11-24 23:17:02 +0100takuan(~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
2020-11-24 23:18:56 +0100neiluj(~jco@91-167-203-101.subs.proxad.net)
2020-11-24 23:19:01 +0100neiluj(~jco@91-167-203-101.subs.proxad.net) (Changing host)
2020-11-24 23:19:01 +0100neiluj(~jco@unaffiliated/neiluj)
2020-11-24 23:22:26 +0100christo(~chris@81.96.113.213) (Remote host closed the connection)
2020-11-24 23:25:43 +0100christo(~chris@81.96.113.213)
2020-11-24 23:26:01 +0100hackagegi-gtk 4.0.3 - Gtk bindings https://hackage.haskell.org/package/gi-gtk-4.0.3 (inaki)
2020-11-24 23:27:58 +0100christo(~chris@81.96.113.213) (Remote host closed the connection)
2020-11-24 23:33:10 +0100christo(~chris@81.96.113.213)
2020-11-24 23:33:30 +0100hackagereflex-localize 1.0.0.0 - Localization library for reflex https://hackage.haskell.org/package/reflex-localize-1.0.0.0 (NCrashed)
2020-11-24 23:34:30 +0100hackagehaskell-gi 0.24.6 - Generate Haskell bindings for GObject Introspection capable libraries https://hackage.haskell.org/package/haskell-gi-0.24.6 (inaki)
2020-11-24 23:35:30 +0100hackagereflex-localize-dom 1.0.0.0 - Helper widgets for reflex-localize https://hackage.haskell.org/package/reflex-localize-dom-1.0.0.0 (NCrashed)
2020-11-24 23:36:31 +0100hackagehaskell-gi-base 0.24.5, haskell-gi 0.24.7 (inaki): https://qbin.io/person-smoke-zz5q
2020-11-24 23:38:01 +0100christo(~chris@81.96.113.213) (Ping timeout: 264 seconds)
2020-11-24 23:38:52 +0100cosimone(~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd) (Remote host closed the connection)
2020-11-24 23:39:15 +0100cosimone(~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd)
2020-11-24 23:39:34 +0100argent0(~argent0@168.227.98.80) (Ping timeout: 246 seconds)
2020-11-24 23:41:30 +0100Varis(~Tadas@unaffiliated/varis) (Remote host closed the connection)
2020-11-24 23:42:47 +0100vicfred(~vicfred@unaffiliated/vicfred) (Quit: Leaving)
2020-11-24 23:43:46 +0100conal(~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
2020-11-24 23:44:03 +0100livvy(~livvy@gateway/tor-sasl/livvy) (Remote host closed the connection)
2020-11-24 23:44:26 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-11-24 23:46:25 +0100Francois(~francois@2a02:a03f:5ad8:f100:707f:a6cc:c4f1:c0ac)
2020-11-24 23:46:32 +0100livvy(~livvy@gateway/tor-sasl/livvy)
2020-11-24 23:48:28 +0100Varis(~Tadas@unaffiliated/varis)
2020-11-24 23:48:31 +0100kish`(~oracle@unaffiliated/oracle) (Remote host closed the connection)
2020-11-24 23:49:20 +0100francesco_(~francesco@5.170.141.159)
2020-11-24 23:49:25 +0100argent0(~argent0@168.227.98.84)
2020-11-24 23:50:08 +0100francesco_(~francesco@5.170.141.159) (Client Quit)
2020-11-24 23:50:18 +0100Franciman(~francesco@5.170.141.159) (Quit: Leaving)
2020-11-24 23:50:41 +0100htmnc(~James@2600:1700:4ca1:7640:ec8e:65af:cdd0:9671) (Quit: Leaving)
2020-11-24 23:51:28 +0100solonarv(~solonarv@astrasbourg-653-1-156-4.w90-6.abo.wanadoo.fr) (Ping timeout: 246 seconds)
2020-11-24 23:52:13 +0100olligobber(olligobber@gateway/vpn/privateinternetaccess/olligobber)
2020-11-24 23:53:09 +0100seveg(~gabriel@188-167-252-154.dynamic.chello.sk) (Quit: WeeChat 2.9)
2020-11-24 23:57:02 +0100chaosmasttter(~chaosmast@p200300c4a7107e01bc10c915608759f8.dip0.t-ipconnect.de) (Quit: WeeChat 2.9)
2020-11-24 23:58:14 +0100conal(~conal@64.71.133.70)