Home freenode/#haskell: Logs Calendar

Logs on 2020-11-24 (freenode/#haskell)

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

All times are in UTC on 2020-11-24.