2020/11/29

2020-11-29 00:00:03 +0100 <cads> shapr, ah, there's a note to test maintainers - that takes us to the project documentation site, where we learn that these are indeed the golden standard "this is what the CLI should output" style of test
2020-11-29 00:00:04 +0100whataday(~xxx@2400:8902::f03c:92ff:fe60:98d8)
2020-11-29 00:00:16 +0100 <cads> the unit tests live in the haskell module hierarchy
2020-11-29 00:00:40 +0100kritzefitz(~kritzefit@212.86.56.80) (Remote host closed the connection)
2020-11-29 00:01:02 +0100SupaYoshi(~supayoshi@213-10-140-13.fixed.kpn.net) (Quit: Goodbye!)
2020-11-29 00:01:39 +0100ChanServ(ChanServ@services.)
2020-11-29 00:01:39 +0100kornbluth.freenode.net+o ChanServ
2020-11-29 00:02:19 +0100hololeap(~hololeap@unaffiliated/hololeap)
2020-11-29 00:02:24 +0100 <texasmynsted> :-)
2020-11-29 00:02:46 +0100SupaYoshi(~supayoshi@213-10-140-13.fixed.kpn.net)
2020-11-29 00:04:29 +0100 <shapr> cads: this sounds like academia-ware
2020-11-29 00:04:52 +0100 <shapr> or perhaps written by those who speak Haskell as a tertiary language?
2020-11-29 00:05:21 +0100hackagephonetic-languages-simplified-lists-examples 0.1.0.0 - Simplified and somewhat optimized version of the phonetic-languages-examples. https://hackage.haskell.org/package/phonetic-languages-simplified-lists-examples-0.1.0.0 (OleksandrZhabenko)
2020-11-29 00:10:12 +0100mbomba(~mbomba@bras-base-toroon2719w-grc-49-142-114-9-241.dsl.bell.ca) (Quit: WeeChat 3.0)
2020-11-29 00:10:35 +0100tmciver(~tmciver@cpe-172-101-40-226.maine.res.rr.com)
2020-11-29 00:11:35 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
2020-11-29 00:12:25 +0100 <merijn> I wonder if that guy knows you're allowed to have more than 5 functions per package...
2020-11-29 00:13:13 +0100erisco(~erisco@d24-57-249-233.home.cgocable.net)
2020-11-29 00:15:17 +0100wonko7(~wonko7@2a01:e35:2ffb:7040:55f1:c3a3:cdbe:bf52) (Ping timeout: 260 seconds)
2020-11-29 00:16:46 +0100 <jackhill> win 43
2020-11-29 00:17:21 +0100hackagexcffib 0.11.0 - A cffi-based python binding for X https://hackage.haskell.org/package/xcffib-0.11.0 (TychoAndersen)
2020-11-29 00:17:24 +0100 <shapr> 43 WINS!
2020-11-29 00:17:30 +0100conal(~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
2020-11-29 00:18:08 +0100hiroaki(~hiroaki@ip4d168e73.dynamic.kabel-deutschland.de)
2020-11-29 00:18:17 +0100 <sm[m]> cads: I keep unit tests in the haskell modules under test. Files containing functional tests are in per-command subdirectories, under a subdirectory, but I'm thinking about moving these into the module directories
2020-11-29 00:20:52 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Quit: Lost terminal)
2020-11-29 00:21:24 +0100AlterEgo-(~ladew@124-198-158-163.dynamic.caiway.nl) (Quit: Leaving)
2020-11-29 00:24:41 +0100carlomagno(~cararell@148.87.23.8) (Remote host closed the connection)
2020-11-29 00:25:50 +0100shutdown_-h_now(~arjan@2001:1c06:2d0b:2312:7167:dae3:3033:6c61) (Ping timeout: 264 seconds)
2020-11-29 00:26:16 +0100exlipse(~exlipse@4e69b241.skybroadband.com) (Ping timeout: 240 seconds)
2020-11-29 00:26:23 +0100actuallybatman(~sam@S010664777dafd303.cg.shawcable.net) (Ping timeout: 265 seconds)
2020-11-29 00:26:46 +0100carlomagno(~cararell@148.87.23.5)
2020-11-29 00:27:47 +0100conal(~conal@64.71.133.70)
2020-11-29 00:34:13 +0100julm(~julm@revolt129.abo.ilico.org) (Remote host closed the connection)
2020-11-29 00:34:48 +0100falafel_(~falafel@pool-71-182-130-97.pitbpa.fios.verizon.net)
2020-11-29 00:34:58 +0100vfaronov(~vfaronov@broadband-95-84-210-78.ip.moscow.rt.ru) (Quit: vfaronov)
2020-11-29 00:35:35 +0100shutdown_-h_now(~arjan@2001:1c06:2d0b:2312:4c42:47db:3d8a:3c9a)
2020-11-29 00:39:08 +0100Deide(~Deide@217.155.19.23) (Quit: Seeee yaaaa)
2020-11-29 00:40:22 +0100shutdown_-h_now(~arjan@2001:1c06:2d0b:2312:4c42:47db:3d8a:3c9a) (Ping timeout: 260 seconds)
2020-11-29 00:42:28 +0100exlipse(~exlipse@4e69b241.skybroadband.com)
2020-11-29 00:43:42 +0100justsomeguy(~justsomeg@216.186.218.241)
2020-11-29 00:43:42 +0100justsomeguy(~justsomeg@216.186.218.241) (Changing host)
2020-11-29 00:43:42 +0100justsomeguy(~justsomeg@unaffiliated/--/x-3805311)
2020-11-29 00:46:08 +0100shutdown_-h_now(~arjan@2001:1c06:2d0b:2312:4c42:47db:3d8a:3c9a)
2020-11-29 00:47:58 +0100 <sm[m]> don't know cads, just saw your recent comment
2020-11-29 00:48:01 +0100coot(~coot@37.30.53.191.nat.umts.dynamic.t-mobile.pl)
2020-11-29 00:48:24 +0100knupfer(~Thunderbi@200116b82c34fc00092785e1f1ef8791.dip.versatel-1u1.de) (Ping timeout: 244 seconds)
2020-11-29 00:48:25 +0100hekkaidekapus_(~tchouri@gateway/tor-sasl/hekkaidekapus)
2020-11-29 00:49:09 +0100falafel_(~falafel@pool-71-182-130-97.pitbpa.fios.verizon.net) (Ping timeout: 256 seconds)
2020-11-29 00:50:23 +0100hekkaidekapus(~tchouri@gateway/tor-sasl/hekkaidekapus) (Ping timeout: 240 seconds)
2020-11-29 00:50:53 +0100hekkaidekapus_(~tchouri@gateway/tor-sasl/hekkaidekapus) (Remote host closed the connection)
2020-11-29 00:50:56 +0100acarrico(~acarrico@dhcp-68-142-39-249.greenmountainaccess.net) (Ping timeout: 240 seconds)
2020-11-29 00:51:17 +0100hekkaidekapus_(~tchouri@gateway/tor-sasl/hekkaidekapus)
2020-11-29 00:54:47 +0100falafel_(~falafel@pool-71-182-130-97.pitbpa.fios.verizon.net)
2020-11-29 01:01:07 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2020-11-29 01:02:07 +0100aneksteind(~anekstein@pool-108-7-199-207.bstnma.fios.verizon.net)
2020-11-29 01:02:48 +0100coot(~coot@37.30.53.191.nat.umts.dynamic.t-mobile.pl) (Quit: coot)
2020-11-29 01:03:09 +0100cosimone_(~cosimone@5.170.241.230)
2020-11-29 01:03:25 +0100falafel_(~falafel@pool-71-182-130-97.pitbpa.fios.verizon.net) (Ping timeout: 240 seconds)
2020-11-29 01:03:31 +0100 <aneksteind> does there exist a generalization of `Either`, something like `OneOf a b c d` ... that can have an arbitrary number of constructors?
2020-11-29 01:04:17 +0100cosimone(~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd) (Ping timeout: 260 seconds)
2020-11-29 01:04:33 +0100cosimone_cosimone
2020-11-29 01:04:48 +0100 <dminuoso> aneksteind: Well Either is that already.
2020-11-29 01:04:56 +0100 <dminuoso> Since you can do `Either (Either Int String) Char` and so forth
2020-11-29 01:05:37 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 246 seconds)
2020-11-29 01:05:39 +0100elfets(~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de) (Quit: Leaving)
2020-11-29 01:05:58 +0100 <dminuoso> Or just plain ADTs.
2020-11-29 01:06:31 +0100 <dminuoso> That is, `Either (Either Int String) Char` is equivalent to `data T = T1 Int | T2 String | T3 Char`
2020-11-29 01:06:43 +0100 <dminuoso> (Or the better term here is isomorphic)
2020-11-29 01:07:03 +0100mikevdg(73bd80f5@115-189-128-245.mobile.spark.co.nz)
2020-11-29 01:07:58 +0100acarrico(~acarrico@68.142.39.249)
2020-11-29 01:09:33 +0100 <sm[m]> I'm not missing a capitalize function in base, am I ?
2020-11-29 01:09:36 +0100 <nshepperd> i think aneksteind is asking for anonymous cotuples, the dual of (a,b,c,d)
2020-11-29 01:09:49 +0100 <dminuoso> Well, (a,b,c,d) is not generalized either.
2020-11-29 01:10:01 +0100 <dminuoso> We just have all these tuple constructors hacked in manually...
2020-11-29 01:11:04 +0100 <nshepperd> sure
2020-11-29 01:11:19 +0100 <nshepperd> it's non generalised with fancy uniform syntax
2020-11-29 01:11:50 +0100 <erisco> aneksteind, you can get hacking with variants and row types, unadvisable without a high payoff
2020-11-29 01:11:53 +0100 <dminuoso> Even if we had some fancy uniform syntax for coproducts, pattern matching wouldn't be as pretty
2020-11-29 01:12:58 +0100mikevdg(73bd80f5@115-189-128-245.mobile.spark.co.nz) (Remote host closed the connection)
2020-11-29 01:13:27 +0100 <aneksteind> where can I look into variants (is that similar to C++ variants?) I'm mostly curious what can be done, this isn't for anything in particular
2020-11-29 01:14:02 +0100 <nshepperd> there's unboxed sums but that syntax feels a bit janky
2020-11-29 01:14:10 +0100 <aneksteind> I found this: https://hackage.haskell.org/package/haskus-utils-variant
2020-11-29 01:14:26 +0100 <nshepperd> https://gitlab.haskell.org/ghc/ghc/-/wikis/unpacked-sum-types
2020-11-29 01:14:56 +0100 <dminuoso> Gah that wiki is so awfully slow
2020-11-29 01:15:06 +0100dminuosohates gitlab with a passion
2020-11-29 01:17:54 +0100 <erisco> aneksteind, there seem to be a few packages floating around for it
2020-11-29 01:18:01 +0100mputz(~Thunderbi@dslb-084-058-211-084.084.058.pools.vodafone-ip.de) (Quit: mputz)
2020-11-29 01:18:45 +0100irc_user(uid423822@gateway/web/irccloud.com/x-bjmhyxzylfubvsgp)
2020-11-29 01:21:26 +0100 <koz_> nshepperd: "NOTE (osa): This part is not yet implemented, but the patch is trivial and I'm going to submit it soon)"
2020-11-29 01:21:26 +0100chkno(~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net) (Read error: Connection reset by peer)
2020-11-29 01:21:28 +0100koz_laughs.
2020-11-29 01:21:36 +0100chkno(~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net)
2020-11-29 01:25:12 +0100jchia__(~jchia@58.32.37.146) (Ping timeout: 256 seconds)
2020-11-29 01:26:27 +0100acidjnk_new(~acidjnk@p200300d0c719ff59c0fa403c32c1f5ec.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
2020-11-29 01:27:28 +0100 <aneksteind> found this as well for those curious: https://github.com/i-am-tom/learn-me-a-haskell/blob/master/src/OneOf.hs
2020-11-29 01:27:34 +0100 <Uniaika> koz_: hahaha
2020-11-29 01:28:52 +0100 <nshepperd> ah yes, the mythical trivial patch
2020-11-29 01:29:10 +0100 <Uniaika> nshepperd: that is arriving as soon as you have time
2020-11-29 01:29:15 +0100 <Uniaika> we've all done that
2020-11-29 01:30:25 +0100p-core(~Thunderbi@2001:718:1e03:5128:2ab7:7f35:48a1:8515) (Remote host closed the connection)
2020-11-29 01:30:35 +0100mivael(c16e4caa@193.110.76.170) (Quit: ::::: see you, bye :::::)
2020-11-29 01:31:21 +0100DTZUZU_(~DTZUZU@205.ip-149-56-132.net)
2020-11-29 01:31:37 +0100wayne(~wayne@unaffiliated/wayne) (Remote host closed the connection)
2020-11-29 01:32:42 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-11-29 01:33:25 +0100DTZUZU(~DTZUZU@207.81.171.116) (Ping timeout: 240 seconds)
2020-11-29 01:37:16 +0100sh9(~sh9@softbank060116136158.bbtec.net) (Ping timeout: 240 seconds)
2020-11-29 01:38:01 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds)
2020-11-29 01:41:16 +0100acarrico(~acarrico@68.142.39.249) (Ping timeout: 240 seconds)
2020-11-29 01:42:29 +0100mputz(~Thunderbi@dslb-084-058-211-084.084.058.pools.vodafone-ip.de)
2020-11-29 01:42:33 +0100Inoperable(~PLAYER_1@fancydata.science) (Excess Flood)
2020-11-29 01:43:42 +0100acarrico(~acarrico@dhcp-68-142-39-249.greenmountainaccess.net)
2020-11-29 01:45:48 +0100Inoperable(~PLAYER_1@fancydata.science)
2020-11-29 01:46:57 +0100mputz(~Thunderbi@dslb-084-058-211-084.084.058.pools.vodafone-ip.de) (Ping timeout: 256 seconds)
2020-11-29 01:53:05 +0100sh9(~sh9@softbank060116136158.bbtec.net)
2020-11-29 01:55:39 +0100Tuplanolla(~Tuplanoll@91-159-68-239.elisa-laajakaista.fi) (Quit: Leaving.)
2020-11-29 02:00:30 +0100frdg(~nick@pool-71-184-143-249.bstnma.fios.verizon.net)
2020-11-29 02:01:39 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
2020-11-29 02:03:47 +0100AlterEgo-(~ladew@124-198-158-163.dynamic.caiway.nl)
2020-11-29 02:05:45 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 240 seconds)
2020-11-29 02:06:03 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-11-29 02:09:27 +0100LKoen(~LKoen@169.244.88.92.rev.sfr.net)
2020-11-29 02:10:45 +0100geowiesnot(~user@87-89-181-157.abo.bbox.fr) (Ping timeout: 256 seconds)
2020-11-29 02:12:00 +0100AndreasK(sid320732@gateway/web/irccloud.com/x-jisuwtkhbrktjxky) (Quit: Connection closed for inactivity)
2020-11-29 02:17:25 +0100cosimone(~cosimone@5.170.241.230) (Quit: cosimone)
2020-11-29 02:17:33 +0100acarrico(~acarrico@dhcp-68-142-39-249.greenmountainaccess.net) (Ping timeout: 256 seconds)
2020-11-29 02:20:48 +0100mbomba(~mbomba@bras-base-toroon2719w-grc-49-142-114-9-241.dsl.bell.ca)
2020-11-29 02:25:41 +0100texasmyn_(~texasmyns@212.102.45.106)
2020-11-29 02:26:05 +0100texasmynsted(~texasmyns@212.102.45.103) (Ping timeout: 240 seconds)
2020-11-29 02:27:16 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2020-11-29 02:29:17 +0100joaoh82(~joaoh82@ip-213-127-88-241.ip.prioritytelecom.net) (Remote host closed the connection)
2020-11-29 02:30:17 +0100joaoh82(~joaoh82@ip-213-127-88-241.ip.prioritytelecom.net)
2020-11-29 02:33:01 +0100unlink__(~unlink2@p200300ebcf179a00278fd81c0246cc89.dip0.t-ipconnect.de) (Remote host closed the connection)
2020-11-29 02:33:14 +0100unlink__(~unlink2@p200300ebcf179a00278fd81c0246cc89.dip0.t-ipconnect.de)
2020-11-29 02:33:16 +0100_linker_(~linker@2a02:a31a:a041:9a80:51cd:d8f1:9cea:4020) (Remote host closed the connection)
2020-11-29 02:35:07 +0100joaoh82(~joaoh82@ip-213-127-88-241.ip.prioritytelecom.net) (Ping timeout: 256 seconds)
2020-11-29 02:38:40 +0100Lord_of_Life(~Lord@46.217.217.219)
2020-11-29 02:40:13 +0100Lord_of_Life_(~Lord@46.217.216.13) (Ping timeout: 256 seconds)
2020-11-29 02:40:18 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
2020-11-29 02:42:41 +0100 <MarcelineVQ> hey you
2020-11-29 02:42:46 +0100 <MarcelineVQ> good job today
2020-11-29 02:43:00 +0100 <MarcelineVQ> it was a tough day but you got through it
2020-11-29 02:43:10 +0100texasmyn_(~texasmyns@212.102.45.106) (Ping timeout: 265 seconds)
2020-11-29 02:44:21 +0100iqubic(~user@2601:602:9500:4870:71ac:d28d:5123:4cbd)
2020-11-29 02:44:59 +0100conal(~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
2020-11-29 02:45:28 +0100aneksteind(~anekstein@pool-108-7-199-207.bstnma.fios.verizon.net) ()
2020-11-29 02:46:06 +0100conal(~conal@64.71.133.70)
2020-11-29 02:46:06 +0100conal(~conal@64.71.133.70) (Client Quit)
2020-11-29 02:47:20 +0100hackagepolysemy-resume 0.1.0.1 - Polysemy error tracking https://hackage.haskell.org/package/polysemy-resume-0.1.0.1 (tek)
2020-11-29 02:48:41 +0100conal(~conal@64.71.133.70)
2020-11-29 02:49:10 +0100triteraflops(~triterafl@host-208-96-90-136.public.eastlink.ca)
2020-11-29 02:52:08 +0100cole-h(~cole-h@c-73-48-197-220.hsd1.ca.comcast.net)
2020-11-29 02:52:14 +0100a-kiwi3(61664b96@gateway/web/cgi-irc/kiwiirc.com/ip.97.102.75.150)
2020-11-29 02:52:20 +0100Volt_(~Volt_@c-73-145-164-70.hsd1.mi.comcast.net)
2020-11-29 02:54:14 +0100wayne(~wayne@unaffiliated/wayne)
2020-11-29 02:57:27 +0100livvy(~livvy@gateway/tor-sasl/livvy)
2020-11-29 02:58:20 +0100rcdilorenzo(~rcdiloren@cpe-76-182-87-188.nc.res.rr.com)
2020-11-29 02:58:30 +0100hidedagger(~nate@unaffiliated/hidedagger) (Ping timeout: 260 seconds)
2020-11-29 03:00:23 +0100reallymemorable(~quassel@ip68-9-215-56.ri.ri.cox.net)
2020-11-29 03:00:39 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
2020-11-29 03:00:42 +0100jchia__(~jchia@45.63.70.29)
2020-11-29 03:01:43 +0100jchia__(~jchia@45.63.70.29) (Remote host closed the connection)
2020-11-29 03:02:44 +0100jchia__(~jchia@45.63.70.29)
2020-11-29 03:03:46 +0100jchia__(~jchia@45.63.70.29) (Remote host closed the connection)
2020-11-29 03:03:47 +0100 <iqubic> jle`: It seems that your advent-of-code-api library has broken. I'm trying to compile it with Cabal and GHC 8.10.2 and I'm getting this error: https://dpaste.com/A64ZXSQZS
2020-11-29 03:04:45 +0100jchia__(~jchia@45.63.70.29)
2020-11-29 03:04:51 +0100a-kiwi3(61664b96@gateway/web/cgi-irc/kiwiirc.com/ip.97.102.75.150) ()
2020-11-29 03:05:18 +0100 <MarcelineVQ> jle`: you monster
2020-11-29 03:05:30 +0100 <iqubic> What's the issue now?
2020-11-29 03:06:30 +0100jchia__(~jchia@45.63.70.29) (Remote host closed the connection)
2020-11-29 03:06:41 +0100joaj(~joaj@2001:818:e326:8200:5273:55b7:3a86:e6ca) (Ping timeout: 272 seconds)
2020-11-29 03:06:53 +0100jchia__(~jchia@58.32.37.146)
2020-11-29 03:07:21 +0100 <Ariakenom> MarcelineVQ: hey
2020-11-29 03:07:26 +0100 <Ariakenom> you even encouraged others
2020-11-29 03:07:30 +0100joaj(~joaj@138.104.115.89.rev.vodafone.pt)
2020-11-29 03:07:43 +0100 <Ariakenom> you wrecked today!
2020-11-29 03:10:41 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2020-11-29 03:11:28 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-11-29 03:12:16 +0100 <iqubic> From what I can tell, some package updated, and now jle` has a broken package
2020-11-29 03:16:29 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2020-11-29 03:18:02 +0100 <ezzieyguywuf> can you all recommend any packages for handling configuration files?
2020-11-29 03:18:09 +0100 <ezzieyguywuf> or you you typically just roll your own?
2020-11-29 03:18:56 +0100 <ezzieyguywuf> s/you you/do you /
2020-11-29 03:21:24 +0100Ariakenom(~Ariakenom@h-98-128-229-104.NA.cust.bahnhof.se) (Quit: Leaving)
2020-11-29 03:21:56 +0100livvy_(~livvy@gateway/tor-sasl/livvy)
2020-11-29 03:22:12 +0100livvy(~livvy@gateway/tor-sasl/livvy) (Remote host closed the connection)
2020-11-29 03:22:55 +0100acarrico(~acarrico@dhcp-68-142-39-249.greenmountainaccess.net)
2020-11-29 03:23:26 +0100Gurkenglas(~Gurkengla@unaffiliated/gurkenglas)
2020-11-29 03:23:39 +0100reallymemorable(~quassel@ip68-9-215-56.ri.ri.cox.net) (Quit: http://quassel-irc.org - Chat comfortably. Anywhere.)
2020-11-29 03:25:49 +0100reallymemorable(~quassel@ip68-9-215-56.ri.ri.cox.net)
2020-11-29 03:26:01 +0100ambidextrose(~fut-learn@mobile-166-171-123-173.mycingular.net)
2020-11-29 03:26:22 +0100 <koz_> ezzieyguywuf: Depends on format.
2020-11-29 03:27:19 +0100 <dsal> ezzieyguywuf: It's not a recommendation, but I typically just write the thing I want to express into a file, then I write a parser for that thing that made sense to me.
2020-11-29 03:27:25 +0100 <dsal> I used dhall once.
2020-11-29 03:27:38 +0100xff0x(~fox@2001:1a81:5212:df00:d7cf:4a87:a54b:9a9b) (Ping timeout: 264 seconds)
2020-11-29 03:27:40 +0100ambidextrose(~fut-learn@mobile-166-171-123-173.mycingular.net) (Client Quit)
2020-11-29 03:27:46 +0100conal(~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
2020-11-29 03:28:38 +0100 <ezzieyguywuf> dsal: I was thinking of something along those lines honestly
2020-11-29 03:28:51 +0100revprez_stg(~revprez_s@pool-108-49-213-40.bstnma.fios.verizon.net) (Quit: Lost terminal)
2020-11-29 03:29:18 +0100Digitteknohippie(~user@fsf/member/digit) (Ping timeout: 260 seconds)
2020-11-29 03:29:19 +0100conal(~conal@64.71.133.70)
2020-11-29 03:29:24 +0100xff0x(~fox@2001:1a81:524c:7b00:8105:569c:1b26:2c3d)
2020-11-29 03:29:41 +0100conal(~conal@64.71.133.70) (Client Quit)
2020-11-29 03:30:50 +0100 <ezzieyguywuf> koz_: I don't have a set format. mostly just "git yur data into my code"
2020-11-29 03:31:18 +0100 <koz_> ezzieyguywuf: Then just pick one. There's a few conf-like thingoes floating around, or you can use like, YAML, or TOML, or JSON, or w/e.
2020-11-29 03:31:48 +0100 <koz_> (why do all these formats have four-letter acronyms rofl)
2020-11-29 03:32:50 +0100 <ezzieyguywuf> I've heard of yaml and json
2020-11-29 03:33:34 +0100 <hololeap> i've seen toml around in my system config files
2020-11-29 03:34:27 +0100 <ezzieyguywuf> maybe i'll try that
2020-11-29 03:34:31 +0100 <ezzieyguywuf> thanks for the tips y'all
2020-11-29 03:34:43 +0100 <koz_> I think there's a Haskell package for TOML parsing?
2020-11-29 03:34:45 +0100koz_shruggoes.
2020-11-29 03:34:54 +0100 <koz_> Dhall is an option, but a pretty nuclear one.
2020-11-29 03:35:18 +0100 <koz_> (it's a heavy dep, and I'm _still_ not 100% clear on what it does or doesn't do because it keeps moving around and the docs are lacking)
2020-11-29 03:35:56 +0100Chi1thangoo(~Chi1thang@87.112.60.168) (Ping timeout: 240 seconds)
2020-11-29 03:36:10 +0100 <ezzieyguywuf> koz_: I like to avoid heavy deps, haven't learned lens yet for that reason
2020-11-29 03:36:29 +0100 <koz_> Hmm.
2020-11-29 03:36:44 +0100 <koz_> Someone (I think it was glguy?) wrote something for parsing a conf-like format, but I forget.
2020-11-29 03:36:49 +0100 <koz_> It was pretty lightweight IIRC.
2020-11-29 03:37:12 +0100 <nshepperd> you can use a plain old ini file
2020-11-29 03:37:16 +0100 <ezzieyguywuf> I see some configparser-clones
2020-11-29 03:37:20 +0100 <ezzieyguywuf> but toml sounds nice.
2020-11-29 03:37:22 +0100 <glguy> Yeah, "config-value" has minimal dependencies
2020-11-29 03:37:41 +0100 <koz_> That was the one.
2020-11-29 03:38:13 +0100 <glguy> "config-schema" has a couple more but it's still pretty light. (It's a helper for making it easy to process configurations)
2020-11-29 03:39:04 +0100 <glguy> There's a live demo https://glguy.net/config-demo/
2020-11-29 03:39:33 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
2020-11-29 03:39:35 +0100LKoen(~LKoen@169.244.88.92.rev.sfr.net) (Quit: “It’s only logical. First you learn to talk, then you learn to think. Too bad it’s not the other way round.”)
2020-11-29 03:39:59 +0100 <ezzieyguywuf> 4 dependencies, nice. https://hackage.haskell.org/package/toml-parser-0.1.0.0
2020-11-29 03:40:12 +0100 <ezzieyguywuf> lol, one of which is base.
2020-11-29 03:40:21 +0100 <koz_> ezzieyguywuf: Those are all boot packages.
2020-11-29 03:40:24 +0100 <koz_> So it's actually 0. :P
2020-11-29 03:40:40 +0100 <ezzieyguywuf> but also v 0.1.0.0
2020-11-29 03:40:42 +0100 <ezzieyguywuf> so *shrug*
2020-11-29 03:41:03 +0100 <koz_> glguy: config-schema is great and so are you.
2020-11-29 03:41:09 +0100 <ezzieyguywuf> hey it's his!
2020-11-29 03:41:19 +0100 <ezzieyguywuf> glguy made it (the toml parser I linked)
2020-11-29 03:41:57 +0100 <ezzieyguywuf> glguy: isyour toml parser good to go? repo looks stale and the version number suggests to me perhaps its incomplete?
2020-11-29 03:42:02 +0100 <glguy> I need to fix a bug in that toml parser that was pointed out here
2020-11-29 03:42:29 +0100 <koz_> ezzieyguywuf: Sub 1.0 version numbers mean basically nothing.
2020-11-29 03:42:34 +0100 <ezzieyguywuf> glguy: is it one of the two issues listed on github?
2020-11-29 03:42:36 +0100 <glguy> I don't use it for anything, I prefer the config-value stuff I made for my own work
2020-11-29 03:42:44 +0100 <koz_> (vector is sub-1.0 for example, and I doubt anyone would seriously suggest it's somehow incomplete)
2020-11-29 03:44:15 +0100machinedgod(~machinedg@135-23-192-217.cpe.pppoe.ca) (Ping timeout: 256 seconds)
2020-11-29 03:44:27 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-11-29 03:44:42 +0100 <glguy> Sub-1 doesn't mean anything special in pvp
2020-11-29 03:45:09 +0100 <iqubic> So jle`'s Advent Of Code API library is not compiling for me. I'm getting this error: https://dpaste.com/A64ZXSQZS
2020-11-29 03:45:19 +0100 <iqubic> Anyone know what's going on there?
2020-11-29 03:45:39 +0100ddellacosta(dd@gateway/vpn/mullvad/ddellacosta)
2020-11-29 03:45:51 +0100hackagetweet-hs 1.0.2.2 - Command-line tool for twitter https://hackage.haskell.org/package/tweet-hs-1.0.2.2 (vmchale)
2020-11-29 03:47:56 +0100 <hololeap> can you run megaparsec "in reverse"? i'd like to grab the extentions of some files, and some have two-part extensions. if it parsed the string in reverse, it could save me a headache.
2020-11-29 03:48:44 +0100 <koz_> hololeap: Two-part meaning something like .tar.gz?
2020-11-29 03:49:16 +0100 <hololeap> koz_: correct, and some of the filename bodies have '.' in them, so System.Posix.Files is getting a little confused
2020-11-29 03:49:36 +0100 <hololeap> rather, System.FilePath.Posix
2020-11-29 03:49:52 +0100acarrico(~acarrico@dhcp-68-142-39-249.greenmountainaccess.net) (Ping timeout: 272 seconds)
2020-11-29 03:51:06 +0100 <ezzieyguywuf> or reeverse the string is try to parse gz.rat.
2020-11-29 03:51:15 +0100 <koz_> zg.rat :P
2020-11-29 03:51:17 +0100conal(~conal@64.71.133.70)
2020-11-29 03:51:22 +0100 <ezzieyguywuf> lol yea
2020-11-29 03:51:25 +0100 <hololeap> i know i could do someting like `parse (string (reverse ".tar.gz") <|> string (reverse ".log")) f (reverse s)`
2020-11-29 03:51:28 +0100 <koz_> And you'd have to re-reverse (verse?) it again.
2020-11-29 03:51:41 +0100 <ezzieyguywuf> lol, verse.
2020-11-29 03:51:46 +0100wei2912(~wei2912@unaffiliated/wei2912)
2020-11-29 03:52:59 +0100 <ezzieyguywuf> the config-value stuff looks really neat, per the live demo.
2020-11-29 03:53:04 +0100 <ezzieyguywuf> but also seems like a lot of work, lol.
2020-11-29 03:53:21 +0100 <koz_> ezzieyguywuf: In what sense? To use, or to implement?
2020-11-29 03:53:56 +0100m0rphism(~m0rphism@HSI-KBW-095-208-098-207.hsi5.kabel-badenwuerttemberg.de) (Ping timeout: 240 seconds)
2020-11-29 03:54:35 +0100 <ezzieyguywuf> use.
2020-11-29 03:54:48 +0100 <ezzieyguywuf> i.e. b/c of the schema thingy.
2020-11-29 03:54:57 +0100 <ezzieyguywuf> i mean, once you learn it it's probs not that hard
2020-11-29 03:55:16 +0100 <koz_> ezzieyguywuf: You don't have to use config-schema though?
2020-11-29 03:55:35 +0100 <ezzieyguywuf> koz_: oh forrill? maybe I misunderstood tho point of the live demo then
2020-11-29 03:56:21 +0100 <koz_> ezzieyguywuf: http://hackage.haskell.org/package/config-value-0.8/docs/Config.html#v:parse
2020-11-29 03:56:59 +0100 <koz_> config-schema makes it more user-friendly and safe, but you can use just that to get 'whatever the hell', and take it apart by hand if you so wish.
2020-11-29 03:57:04 +0100joaoh82(~joaoh82@ip-213-127-88-241.ip.prioritytelecom.net)
2020-11-29 03:57:36 +0100joaj(~joaj@138.104.115.89.rev.vodafone.pt) (Ping timeout: 240 seconds)
2020-11-29 03:58:03 +0100 <ezzieyguywuf> hrm, I'll take a deeper look.
2020-11-29 04:01:08 +0100Volt_(~Volt_@c-73-145-164-70.hsd1.mi.comcast.net) (Quit: )
2020-11-29 04:01:12 +0100 <ezzieyguywuf> blahh, but config-schema makes it user-friendly and safe, why would I avoid.
2020-11-29 04:01:24 +0100 <ezzieyguywuf> lol, ok I'll spend moar than 2 seconds on this
2020-11-29 04:01:33 +0100 <ezzieyguywuf> I am, after all, on my adhd meds
2020-11-29 04:05:20 +0100conal(~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
2020-11-29 04:06:23 +0100conal(~conal@64.71.133.70)
2020-11-29 04:07:33 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2020-11-29 04:07:37 +0100 <glguy> ezzieyguywuf, just ping me if you have questions about how to use either
2020-11-29 04:07:58 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
2020-11-29 04:08:20 +0100 <glguy> If you end up using the config-schema stuff I have examples in https://hackage.haskell.org/package/config-schema-1.2.1.0/docs/Config-Schema-Spec.html
2020-11-29 04:09:13 +0100joaoh82(~joaoh82@ip-213-127-88-241.ip.prioritytelecom.net) (Ping timeout: 264 seconds)
2020-11-29 04:09:18 +0100 <ezzieyguywuf> glguy: thanks I appreciate the offer.
2020-11-29 04:10:38 +0100conal(~conal@64.71.133.70) (Client Quit)
2020-11-29 04:13:51 +0100 <ezzieyguywuf> glguy: what file extension do you use for conf files? lol.
2020-11-29 04:13:51 +0100conal(~conal@64.71.133.70)
2020-11-29 04:13:59 +0100 <glguy> .cfg :)
2020-11-29 04:14:04 +0100 <ezzieyguywuf> nice.
2020-11-29 04:14:33 +0100 <glguy> I have vim syntax highlighting, but that's about it
2020-11-29 04:15:56 +0100 <ezzieyguywuf> glguy: yea I saw that, that's what had me wondering about file extension
2020-11-29 04:16:08 +0100 <glguy> I put this at the bottom so vim picks it up -- vim: filetype=config-value
2020-11-29 04:17:05 +0100justsomeguyhas a random thought -- syntax highlighting emphasizes the wrong things: keywords and punctuation rather than names.
2020-11-29 04:17:51 +0100 <glguy> That probably doesn't apply to a configuration language
2020-11-29 04:18:04 +0100 <ezzieyguywuf> justanotheruser: I've been using nofrils colorscheme in vim for a few months now, pretty happy
2020-11-29 04:18:16 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
2020-11-29 04:18:28 +0100 <ezzieyguywuf> glguy: vim recognises that at the bottom of the file?! I didn't know vim could do that...
2020-11-29 04:19:27 +0100 <glguy> https://ibb.co/26yfm2y example from my IRC client configuration
2020-11-29 04:20:04 +0100 <glguy> highlighting helps notice escapes in string literals, distinguish strings from atoms, etc
2020-11-29 04:21:07 +0100 <ezzieyguywuf> altought I modified it to highlight strings https://i.imgur.com/yaAppbE.png
2020-11-29 04:21:32 +0100 <iqubic> I wish I knew why this fails to build with GHC 8.10.2 https://hackage.haskell.org/package/advent-of-code-api
2020-11-29 04:21:58 +0100 <glguy> iqubic, that packages doesn't list any package bounds; it's intended to decay and fail to build
2020-11-29 04:22:11 +0100 <iqubic> Really?
2020-11-29 04:22:34 +0100 <iqubic> So, will I just have to wait for jle` to come around and fix it?
2020-11-29 04:23:02 +0100 <glguy> or guess at the bounds and submit a PR
2020-11-29 04:23:12 +0100 <iqubic> Hmm, that sounds difficult.
2020-11-29 04:25:07 +0100 <iqubic> I was planning on using this to download my data for AOC, as I did last year, but that doesn't look like it will work.
2020-11-29 04:26:05 +0100 <iqubic> AOC = Advent of Code. I'm planning on making a toolkit of functions for use this year, and I wanted this to be part of it, like it was last year.
2020-11-29 04:28:55 +0100 <iqubic> Now, seeing as that might not be working this year, I'm going to ask a different question: what does readFile return? I know it's an IO String, but does that string contain a trailing new line or not?
2020-11-29 04:31:17 +0100 <iqubic> jle`: Do you have any plans on updating you AoC-API that's on Hackage anytime soon?
2020-11-29 04:31:35 +0100 <iqubic> glguy: Are you going to be creating a haskell leaderboard this year?
2020-11-29 04:31:41 +0100ambidextrose(~fut-learn@mobile-166-171-122-120.mycingular.net)
2020-11-29 04:32:27 +0100rayyyy(~nanoz@gateway/tor-sasl/nanoz)
2020-11-29 04:33:18 +0100ambidextrose(~fut-learn@mobile-166-171-122-120.mycingular.net) (Client Quit)
2020-11-29 04:33:33 +0100 <glguy> It's the same one every year
2020-11-29 04:33:58 +0100 <glguy> 43100-84040706
2020-11-29 04:34:11 +0100 <iqubic> Do I need to do anything special to join it for this year, if I was on the leaderboard last year?
2020-11-29 04:34:17 +0100 <glguy> nuh uh
2020-11-29 04:34:32 +0100 <glguy> You're still there
2020-11-29 04:34:43 +0100 <iqubic> Oh, you can just see that?
2020-11-29 04:35:09 +0100 <iqubic> s/that/me/
2020-11-29 04:37:03 +0100lagothrix(~lagothrix@unaffiliated/lagothrix) (Killed (adams.freenode.net (Nickname regained by services)))
2020-11-29 04:37:11 +0100lagothrix(~lagothrix@unaffiliated/lagothrix)
2020-11-29 04:39:24 +0100kupi(uid212005@gateway/web/irccloud.com/x-hiccaslramtbqzdd)
2020-11-29 04:39:48 +0100Wuzzy(~Wuzzy@p549c9976.dip0.t-ipconnect.de) (Quit: Wuzzy)
2020-11-29 04:39:49 +0100reallymemorable(~quassel@ip68-9-215-56.ri.ri.cox.net) (Quit: http://quassel-irc.org - Chat comfortably. Anywhere.)
2020-11-29 04:39:55 +0100 <kupi> is it a good decision to write this function? if' :: a -> a -> Bool -> a
2020-11-29 04:40:14 +0100 <glguy> :t Data.Bool.bool
2020-11-29 04:40:15 +0100 <lambdabot> a -> a -> Bool -> a
2020-11-29 04:40:27 +0100 <kupi> thanks
2020-11-29 04:40:33 +0100 <glguy> kupi, 1) it's already defined 2) it generally leads to less-readable code
2020-11-29 04:41:03 +0100theDon(~td@muedsl-82-207-238-090.citykom.de) (Ping timeout: 272 seconds)
2020-11-29 04:41:14 +0100 <kupi> what else you recommend when I >>= a Monad Bool?
2020-11-29 04:42:30 +0100theDon(~td@94.134.91.51)
2020-11-29 04:43:08 +0100 <glguy> except in perhaps the most trivial cases: do usefulName <- something; if usefulName then this else that
2020-11-29 04:43:29 +0100trepanger(~z@ics141-225.icsincorporated.com)
2020-11-29 04:45:00 +0100hughjfchen(81221413@129.34.20.19)
2020-11-29 04:46:06 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-11-29 04:46:06 +0100hughjfchen(81221413@129.34.20.19) (Remote host closed the connection)
2020-11-29 04:47:31 +0100 <solonarv> if you don't want to name the thing you can turn on LambdaCase and write: something >>= \case True -> this; False -> that
2020-11-29 04:48:29 +0100 <kupi> or something >>= \case True -> this; _ -> that
2020-11-29 04:48:36 +0100andi-(~andi-@NixOS/user/andi-) (Remote host closed the connection)
2020-11-29 04:49:29 +0100caeciliusphilopsos
2020-11-29 04:50:19 +0100lxsameer(~lxsameer@unaffiliated/lxsameer) (Ping timeout: 246 seconds)
2020-11-29 04:51:49 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds)
2020-11-29 04:53:57 +0100 <kupi> but I prefer >>= bool this that
2020-11-29 04:55:34 +0100andi-(~andi-@NixOS/user/andi-)
2020-11-29 04:58:09 +0100lxsameer(~lxsameer@unaffiliated/lxsameer)
2020-11-29 04:59:18 +0100joaoh82(~joaoh82@ip-213-127-88-241.ip.prioritytelecom.net)
2020-11-29 04:59:30 +0100joaoh82(~joaoh82@ip-213-127-88-241.ip.prioritytelecom.net) (Remote host closed the connection)
2020-11-29 05:00:05 +0100joaoh82(~joaoh82@ip-213-127-88-241.ip.prioritytelecom.net)
2020-11-29 05:02:18 +0100trepanger(~z@ics141-225.icsincorporated.com) (Quit: leaving)
2020-11-29 05:03:03 +0100urodna(~urodna@unaffiliated/urodna) (Quit: urodna)
2020-11-29 05:04:33 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2020-11-29 05:04:36 +0100alx741(~alx741@181.196.69.215) (Ping timeout: 240 seconds)
2020-11-29 05:05:18 +0100mbomba(~mbomba@bras-base-toroon2719w-grc-49-142-114-9-241.dsl.bell.ca) (Quit: WeeChat 3.0)
2020-11-29 05:06:30 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
2020-11-29 05:09:52 +0100 <ezzieyguywuf> glguy: so I hvaen't gotten to config-schema yet, but I made a basic config file, and parsed it succesfully. but I'm at a bit of a loss as to what to do next. This `Value Position` data I have seems very handy, but how do I interogate it? i.e. "give my the list in section 2"
2020-11-29 05:10:58 +0100 <glguy> You either write functions to take apart the Value type and find what you wnt
2020-11-29 05:11:04 +0100 <glguy> or you use the ones I provide for you in config-schema
2020-11-29 05:11:19 +0100 <ezzieyguywuf> ah hah! config-schema rears its head!
2020-11-29 05:11:21 +0100 <ezzieyguywuf> thanks
2020-11-29 05:12:22 +0100actuallybatman(~sam@S010664777dafd303.cg.shawcable.net)
2020-11-29 05:13:04 +0100 <glguy> ezzieyguywuf, but on its own you interrogate with pattern matching
2020-11-29 05:14:05 +0100 <glguy> There are some helpers defined for if you're using lens: https://hackage.haskell.org/package/config-value-0.8/docs/Config-Lens.html
2020-11-29 05:14:28 +0100 <ezzieyguywuf> glguy: I don't really gr0k lens at the moment
2020-11-29 05:14:36 +0100 <glguy> Well, then ignore that
2020-11-29 05:16:44 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2020-11-29 05:17:16 +0100darjeeling_(~darjeelin@122.245.217.23) (Ping timeout: 240 seconds)
2020-11-29 05:17:44 +0100alx741(~alx741@186.178.110.99)
2020-11-29 05:19:38 +0100 <koz_> ezzieyguywuf: Pattern matching in general gets you surprisingly far with everything.
2020-11-29 05:20:56 +0100jedws(~jedws@pa49-181-235-217.pa.nsw.optusnet.com.au)
2020-11-29 05:23:05 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-11-29 05:24:55 +0100actuallybatman(~sam@S010664777dafd303.cg.shawcable.net) (Quit: leaving)
2020-11-29 05:25:03 +0100marek(~mmahut@209.250.249.245) (Ping timeout: 260 seconds)
2020-11-29 05:26:09 +0100 <glguy> Prelude Config.Schema Config Data.Functor.Alt> let spec :: ValueSpec [Int]; spec = listSpec (0 <$ atomSpec "default" <!> numSpec) in case parse "[1,default,4]" of Right v -> print (loadValue spec v) >> print (generateDocs spec)
2020-11-29 05:26:10 +0100 <glguy> Right [1,0,4]
2020-11-29 05:26:10 +0100 <glguy> Top-level configuration file format:
2020-11-29 05:26:11 +0100 <glguy> list of (`default` or integral number)
2020-11-29 05:30:33 +0100marek(~mmahut@209.250.249.245)
2020-11-29 05:33:01 +0100 <ezzieyguywuf> the schema stuff seems to pretty much document itself, after reading the examples
2020-11-29 05:33:23 +0100rayyyy(~nanoz@gateway/tor-sasl/nanoz) (Ping timeout: 240 seconds)
2020-11-29 05:33:47 +0100 <glguy> If you'll tell me anything that seems poorly explained I'd use that to improve the explanations
2020-11-29 05:35:02 +0100 <ezzieyguywuf> glguy: I'll let you know
2020-11-29 05:35:18 +0100vg(~vg@139.59.59.230) (Read error: Connection reset by peer)
2020-11-29 05:35:36 +0100vg(~vg@139.59.59.230)
2020-11-29 05:35:43 +0100actuallybatman(~sam@S010664777dafd303.cg.shawcable.net)
2020-11-29 05:35:45 +0100conal(~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
2020-11-29 05:35:52 +0100 <MarcelineVQ> glguy: hey, good job. you're a great guy, doing all your helpfuol stiff all the time
2020-11-29 05:36:17 +0100 <glguy> That's nice of you to say, MarcelineVQ.
2020-11-29 05:36:33 +0100 <MarcelineVQ> you're worth it
2020-11-29 05:37:22 +0100JJ15(~JJ@94.197.17.236.threembb.co.uk) (Ping timeout: 256 seconds)
2020-11-29 05:38:09 +0100nek0(~nek0@mail.nek0.eu) (Quit: The Lounge - https://thelounge.chat)
2020-11-29 05:38:14 +0100 <koz_> MarcelineVQ, the L'Oreal rep. :P
2020-11-29 05:39:25 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
2020-11-29 05:41:23 +0100DirefulSalt(DirefulSal@gateway/vpn/privateinternetaccess/direfulsalt)
2020-11-29 05:43:15 +0100erisco(~erisco@d24-57-249-233.home.cgocable.net) (Ping timeout: 256 seconds)
2020-11-29 05:44:14 +0100ddellacosta(dd@gateway/vpn/mullvad/ddellacosta) (Ping timeout: 256 seconds)
2020-11-29 05:45:50 +0100 <MarcelineVQ> l' gariet frucitis o la config
2020-11-29 05:46:12 +0100 <MarcelineVQ> zhuehuee'
2020-11-29 05:47:38 +0100 <koz_> I think MarcelineVQ is malfunctioning.
2020-11-29 05:48:28 +0100 <MarcelineVQ> wwww
2020-11-29 05:48:36 +0100acidjnk_new(~acidjnk@p200300d0c719ff597d005cd8d9846e4e.dip0.t-ipconnect.de)
2020-11-29 05:49:07 +0100tomboy64(~tomboy64@gateway/tor-sasl/tomboy64) (Remote host closed the connection)
2020-11-29 05:49:13 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2020-11-29 05:51:18 +0100tomboy64(~tomboy64@gateway/tor-sasl/tomboy64)
2020-11-29 05:56:56 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
2020-11-29 05:58:55 +0100solonarv(~solonarv@anancy-651-1-197-136.w109-217.abo.wanadoo.fr) (Ping timeout: 265 seconds)
2020-11-29 05:59:39 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
2020-11-29 06:03:27 +0100olligobber(olligobber@gateway/vpn/privateinternetaccess/olligobber)
2020-11-29 06:04:51 +0100mbomba(~mbomba@bras-base-toroon2719w-grc-49-142-114-9-241.dsl.bell.ca)
2020-11-29 06:06:49 +0100vg(~vg@139.59.59.230) (Ping timeout: 264 seconds)
2020-11-29 06:08:52 +0100petersen(~petersen@redhat/juhp)
2020-11-29 06:09:51 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2020-11-29 06:09:56 +0100xpika(~alan@2001:8003:5d32:1f00:a5ad:52a6:3658:edb9)
2020-11-29 06:11:28 +0100 <xpika> does anyone know a library that handles creations of Lists of Lists that makes it easy to apply breakpoints?
2020-11-29 06:11:42 +0100 <xpika> > let single = (\y ys -> (\(x:xs)->(y:x):xs) ys) ; break = [("":)] in foldr ($) [""] (map single "hello"++break++map single "world")
2020-11-29 06:11:45 +0100 <lambdabot> ["hello","world"]
2020-11-29 06:13:29 +0100 <xpika> perhaps could be used with the writer monad eg. tall (single 1) ; tell break
2020-11-29 06:15:21 +0100hackagestore 0.7.8 - Fast binary serialization https://hackage.haskell.org/package/store-0.7.8 (MichaelSloan)
2020-11-29 06:15:41 +0100 <koz_> xpika: What do you mean by 'breakpoints' here?
2020-11-29 06:16:21 +0100hackagestore-core 0.4.4.4 - Fast and lightweight binary serialization https://hackage.haskell.org/package/store-core-0.4.4.4 (MichaelSloan)
2020-11-29 06:16:22 +0100 <xpika> koz_: the boundaries between lists
2020-11-29 06:17:20 +0100mbomba(~mbomba@bras-base-toroon2719w-grc-49-142-114-9-241.dsl.bell.ca) (Quit: WeeChat 3.0)
2020-11-29 06:17:27 +0100Zao_(~Zao_@185.204.1.185) (Remote host closed the connection)
2020-11-29 06:17:35 +0100 <xpika> koz_: I don't mean debug breakpoints if that's what you were thinking
2020-11-29 06:17:44 +0100 <koz_> xpika: Yeah, I was a bit confused there.
2020-11-29 06:18:24 +0100irc_user(uid423822@gateway/web/irccloud.com/x-bjmhyxzylfubvsgp) (Quit: Connection closed for inactivity)
2020-11-29 06:18:28 +0100jedws(~jedws@pa49-181-235-217.pa.nsw.optusnet.com.au) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-11-29 06:18:57 +0100 <xpika> char 'a' ; char 'b' ; break ; char '1' ; break ; char '4'
2020-11-29 06:18:58 +0100 <xpika> => ["ab","1",4"]
2020-11-29 06:19:53 +0100 <koz_> Are you dealing with general lists? Or are you really dealing with lists of strings? Do you care that it's expressly _lists_?
2020-11-29 06:20:16 +0100 <xpika> anything that I can convert to a list would be fine
2020-11-29 06:20:45 +0100trepanger(~z@ics141-225.icsincorporated.com)
2020-11-29 06:21:14 +0100remexre(~nathan@207-153-38-50.fttp.usinternet.com) (Ping timeout: 272 seconds)
2020-11-29 06:23:07 +0100 <koz_> Assuming the 'lists of strings' case, you could work with some wrapper around Seq Builder, then write some ops around that?
2020-11-29 06:23:23 +0100 <koz_> If it's general stuff, Seq (Seq a) maybe?
2020-11-29 06:23:30 +0100ambidextrose(~fut-learn@mobile-166-171-122-147.mycingular.net)
2020-11-29 06:25:05 +0100 <xpika> Yeah I could roll my own. But I'm interested if others made a library to do what seems very basic.
2020-11-29 06:25:33 +0100 <koz_> It's a pretty niche thing honestly.
2020-11-29 06:25:40 +0100 <koz_> I've yet to ever see need for such a thing.
2020-11-29 06:29:56 +0100Saukk(~Saukk@2001:998:f9:2914:1c59:9bb5:b94c:4)
2020-11-29 06:30:11 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-11-29 06:31:25 +0100petersen(~petersen@redhat/juhp) (Ping timeout: 256 seconds)
2020-11-29 06:31:35 +0100philopsos(~caecilius@gateway/tor-sasl/caecilius) (Quit: leaving)
2020-11-29 06:31:51 +0100philopsos(~caecilius@gateway/tor-sasl/caecilius)
2020-11-29 06:35:37 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds)
2020-11-29 06:37:25 +0100Kaiepi(~Kaiepi@nwcsnbsc03w-47-55-225-82.dhcp-dynamic.fibreop.nb.bellaliant.net) (Ping timeout: 240 seconds)
2020-11-29 06:37:58 +0100Kaiepi(~Kaiepi@nwcsnbsc03w-47-55-225-82.dhcp-dynamic.fibreop.nb.bellaliant.net)
2020-11-29 06:41:44 +0100remexre(~nathan@207-153-38-50.fttp.usinternet.com)
2020-11-29 06:49:25 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 264 seconds)
2020-11-29 06:49:28 +0100pavonia(~user@unaffiliated/siracusa) (Quit: Bye!)
2020-11-29 06:50:07 +0100cads(~cads@ip-64-72-99-232.lasvegas.net) (Ping timeout: 256 seconds)
2020-11-29 06:50:53 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2020-11-29 06:53:03 +0100 <xpika> > let single = (\y ys -> (\(x:xs)->(y:x):xs) ys) ; break = ([]:) in foldr ($) [[]] (concatMap (\x -> if odd x then [single x ,break] else [single x]) [1..10])
2020-11-29 06:53:06 +0100 <lambdabot> [[1],[2,3],[4,5],[6,7],[8,9],[10]]
2020-11-29 06:53:07 +0100petersen(~petersen@redhat/juhp)
2020-11-29 06:54:21 +0100hackageth-utilities 0.2.4.1 - Collection of useful functions for use with Template Haskell https://hackage.haskell.org/package/th-utilities-0.2.4.1 (MichaelSloan)
2020-11-29 06:55:51 +0100hackagecalamity 0.1.22.1 - A library for writing discord bots in haskell https://hackage.haskell.org/package/calamity-0.1.22.1 (nitros12)
2020-11-29 07:00:42 +0100 <xpika> > let single = (\y ys -> (\(x:xs)->(y:x):xs) ys) ; break = (\xs -> if head xs /= [] then []:xs else xs) in foldr ($) [[]] (concatMap (\x -> if rem x 5 == 0 || rem x 3 == 0 then [break,single "fizzOrbuzz",break ] else [single (show x)]) [1..16])
2020-11-29 07:00:45 +0100 <lambdabot> [["1","2"],["fizzOrbuzz"],["4"],["fizzOrbuzz"],["fizzOrbuzz"],["7","8"],["fi...
2020-11-29 07:01:30 +0100alp(~alp@2a01:e0a:58b:4920:85ab:9e1c:e4ae:787d)
2020-11-29 07:02:26 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-11-29 07:02:41 +0100conal(~conal@64.71.133.70)
2020-11-29 07:03:13 +0100pieguy128(~pieguy128@bras-base-mtrlpq5031w-grc-39-70-27-244-102.dsl.bell.ca) (Quit: ZNC 1.7.5 - https://znc.in)
2020-11-29 07:04:10 +0100drbean(~drbean@TC210-63-209-156.static.apol.com.tw)
2020-11-29 07:05:17 +0100 <jle`> iqubic: it works for ghc 8.8 :)
2020-11-29 07:05:28 +0100 <jle`> but you're welcome to submit a pr too :)
2020-11-29 07:05:41 +0100 <iqubic> I'm not going to do that.
2020-11-29 07:05:47 +0100 <iqubic> I know what I'll be doing.
2020-11-29 07:07:43 +0100conal(~conal@64.71.133.70) (Ping timeout: 260 seconds)
2020-11-29 07:07:55 +0100 <iqubic> I'll just downgrade to 8.8. Is there any easy way to get cabal to do that?
2020-11-29 07:08:00 +0100actuallybatman(~sam@S010664777dafd303.cg.shawcable.net) ()
2020-11-29 07:08:17 +0100 <jle`> hm, i looked at the error and it seems like it's more likely a servant version mismatch
2020-11-29 07:08:26 +0100 <jle`> iqubic: yeah, cabal just uses whatever GHC is in your PATH
2020-11-29 07:08:37 +0100 <iqubic> Cool. That's what I like to hear.
2020-11-29 07:08:38 +0100 <jle`> so if you have GHC 8.8 in your path then it'll use that atuomatically
2020-11-29 07:08:44 +0100 <glguy> You'd do: cabal configure -w ghc-8.8
2020-11-29 07:08:45 +0100 <jle`> but it looks like the problem is probably a servant update that broke it
2020-11-29 07:09:08 +0100 <iqubic> Now I just have to tell Nix to use GHC 8.8 instead of 8.10.2. That's not too big a deal.
2020-11-29 07:09:17 +0100stree(~stree@50-108-97-52.adr01.mskg.mi.frontiernet.net) (Quit: Caught exception)
2020-11-29 07:09:35 +0100stree(~stree@50-108-97-52.adr01.mskg.mi.frontiernet.net)
2020-11-29 07:09:53 +0100 <jle`> looks like it's using servant 0.16
2020-11-29 07:09:58 +0100cole-h(~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) (Ping timeout: 246 seconds)
2020-11-29 07:09:59 +0100cads(~cads@ip-64-72-99-232.lasvegas.net)
2020-11-29 07:10:05 +0100 <jle`> so if you use servant 0.16.x with ghc 8.10 it should be ok too
2020-11-29 07:10:25 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
2020-11-29 07:10:36 +0100 <jle`> i wonder what changed
2020-11-29 07:11:21 +0100 <iqubic> Oh, it should? Is there a way to get a particular Servant version?
2020-11-29 07:11:37 +0100 <siraben> What should I use to derive Arbitrary instances?
2020-11-29 07:11:46 +0100 <siraben> I have a tree and want to generate arbitrary trees for use in QuickCheck
2020-11-29 07:11:47 +0100 <jle`> iqubic: you can specify in your cabal file or package.yaml
2020-11-29 07:12:15 +0100 <iqubic> I'm not sure how to do that? Can you tell me what I should add to my .cabal file?
2020-11-29 07:14:22 +0100wei2912(~wei2912@unaffiliated/wei2912) (Remote host closed the connection)
2020-11-29 07:14:25 +0100 <jle`> 'servant ==0.16.2' where you are listing your servant dependency, i think
2020-11-29 07:14:26 +0100 <xpika> ok question: A HTML table (without rowspans) has an equal number of fields per row. Would a list of fixed length Vectors be a good option for constructing a table like this safely?
2020-11-29 07:15:01 +0100 <jle`> xpika: it depends on what sort of operations you'd want to do, i think. but yeah, having something like [Vector n a] would keep each row the same length
2020-11-29 07:15:03 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 256 seconds)
2020-11-29 07:15:28 +0100 <iqubic> jle`: I'm not listing a servant dependency, I'm letting Cabal get that for me.
2020-11-29 07:16:07 +0100 <jle`> ah hm. you can add that in as a dep then. but also i guess i should have made stricter upper bounds for the library D:
2020-11-29 07:16:39 +0100 <iqubic> Are you going to update the library, or not?
2020-11-29 07:17:09 +0100darjeeling_(~darjeelin@112.16.171.8)
2020-11-29 07:17:49 +0100 <iqubic> Also, will your OCR library be broken too, or not.
2020-11-29 07:17:51 +0100Amras(~Amras@unaffiliated/amras)
2020-11-29 07:17:52 +0100 <iqubic> ?
2020-11-29 07:18:21 +0100hughjfchen(81221413@129.34.20.19)
2020-11-29 07:19:04 +0100 <ambidextrose> keep rockin' that single-quote, iqubic
2020-11-29 07:19:17 +0100 <koz_> siraben: You can just write the instance by hand, surely?
2020-11-29 07:19:17 +0100ambidextrose(~fut-learn@mobile-166-171-122-147.mycingular.net) ()
2020-11-29 07:19:19 +0100 <iqubic> What single quote?
2020-11-29 07:19:35 +0100 <siraben> koz_: `arbitrary = oneof [pure Leaf, Node <$> arbitrary <*> arbitrary <*> arbitrary]`
2020-11-29 07:19:36 +0100 <siraben> yeah
2020-11-29 07:19:45 +0100 <koz_> siraben: That's gonna have issues.
2020-11-29 07:19:50 +0100 <jle`> the ocr library doesn't use servant, so i think it should be fine. but i haven't tested all the bounds for all the deps
2020-11-29 07:19:52 +0100 <koz_> Mostly because it'll possibly loop forever.
2020-11-29 07:19:56 +0100 <siraben> koz_: why?
2020-11-29 07:20:02 +0100 <siraben> data Tree = Node Int Tree Tree | Leaf deriving Show
2020-11-29 07:20:13 +0100 <koz_> Because a possible path through that Arbitrary instance is 'Node for all eternity'.
2020-11-29 07:20:16 +0100 <koz_> So it'll never stop.
2020-11-29 07:20:38 +0100 <koz_> So you need to bound its depth, probably by using resize.
2020-11-29 07:20:47 +0100 <koz_> (`div` 2) is a good way to do that.
2020-11-29 07:21:04 +0100 <koz_> Every time you make a recursive call to 'arbitrary', ensure you wrap it in 'resize'.
2020-11-29 07:21:12 +0100hidedagger(~nate@unaffiliated/hidedagger)
2020-11-29 07:21:37 +0100 <koz_> And also check for the size (by using getSize) before you recurse - if you're at 0 or lower, ensure you get a Leaf.
2020-11-29 07:23:57 +0100vg(~vg@139.59.59.230)
2020-11-29 07:24:44 +0100 <siraben> koz_: ok
2020-11-29 07:25:23 +0100miuchan(2d880087@45.136.0.135)
2020-11-29 07:27:10 +0100 <siraben> koz_: s <- getSize then
2020-11-29 07:27:12 +0100 <siraben> `if s <= 0 then pure Leaf else Node <$> arbitrary <*> resize (s `div` 2) arbitrary <*> resize (s `div` 2) arbitrary`
2020-11-29 07:27:14 +0100 <siraben> Right?
2020-11-29 07:27:41 +0100 <koz_> Almost.
2020-11-29 07:28:05 +0100 <koz_> In the 'else' arm, you want to use oneOf to pick between Leaf and Node.
2020-11-29 07:28:15 +0100 <koz_> Otherwise you end up with a tree that's perfectly balanced every time.
2020-11-29 07:28:34 +0100adm(~adm@117.223.63.167)
2020-11-29 07:28:42 +0100 <siraben> koz_: Ah, I see.
2020-11-29 07:28:57 +0100 <siraben> How do I force shrinking of the tests to make the smallest counterexample?
2020-11-29 07:29:35 +0100 <koz_> Did you define 'shrink'?
2020-11-29 07:29:46 +0100 <koz_> If you didn't define the shrink method, nothing gets shrunk.
2020-11-29 07:30:04 +0100 <siraben> Ah
2020-11-29 07:30:20 +0100 <siraben> How do I define shrink?
2020-11-29 07:30:36 +0100phaul(~phaul@ruby/staff/phaul) (Ping timeout: 240 seconds)
2020-11-29 07:30:38 +0100 <siraben> Oh it's in the arbitrary class
2020-11-29 07:30:43 +0100 <koz_> Leaf is not shrinkable.
2020-11-29 07:30:46 +0100philopsos(~caecilius@gateway/tor-sasl/caecilius) (Quit: leaving)
2020-11-29 07:30:54 +0100 <koz_> Node shrinks to its subtrees.
2020-11-29 07:31:07 +0100philopsos(~caecilius@gateway/tor-sasl/caecilius)
2020-11-29 07:31:43 +0100 <siraben> Nice, works great.
2020-11-29 07:31:47 +0100 <siraben> `shrink Leaf = []; shrink (Node x l r) = [Leaf] ++ [l, r] ++ [Node x' l' r' | (x', l', r') <- shrink (x, l, r)]`
2020-11-29 07:32:02 +0100 <koz_> Nah, you don't want to shrink Node to Leaf like that.
2020-11-29 07:32:08 +0100 <koz_> It's not a shrink - you're inventing data.
2020-11-29 07:32:24 +0100 <koz_> shrink (Node _ l r) = [l, r] is fine.
2020-11-29 07:32:41 +0100 <siraben> Interesting, the QuickCheck docs uses this tree example
2020-11-29 07:33:09 +0100 <iqubic> jle`: Are you going to update the AoC-API to have strict bounds, or should I just make the required modifications on my end?
2020-11-29 07:33:11 +0100 <siraben> Hm, using that for shrink seems to produce worse results
2020-11-29 07:33:21 +0100 <koz_> siraben: In what sense?
2020-11-29 07:33:36 +0100 <siraben> koz_: longer counterexamples after quickCheck
2020-11-29 07:33:40 +0100 <koz_> Hmm.
2020-11-29 07:33:44 +0100adm(~adm@117.223.63.167) (Remote host closed the connection)
2020-11-29 07:33:49 +0100 <koz_> Well, in that case, use your original.
2020-11-29 07:33:56 +0100 <koz_> I guess it's a more aggressive search
2020-11-29 07:34:08 +0100 <siraben> taking away [Leaf] ++ doesn't seem to make a difference though
2020-11-29 07:34:10 +0100adm(~adm@117.223.63.167)
2020-11-29 07:34:32 +0100 <koz_> I always thought 'shrink' was meant to be a reduction, rather than a search.
2020-11-29 07:34:34 +0100adm(~adm@117.223.63.167) (Remote host closed the connection)
2020-11-29 07:34:39 +0100 <koz_> But I guess a search _would_ produce better results.
2020-11-29 07:34:40 +0100adm(~adm@117.223.63.167)
2020-11-29 07:35:04 +0100 <siraben> I wish I could pretty print trees...
2020-11-29 07:35:44 +0100 <koz_> siraben: Like, define a prettyprinter, pass that into (a variant of) forAll?
2020-11-29 07:35:49 +0100 <siraben> Ah there's already Data.Trees, d'oh
2020-11-29 07:35:53 +0100 <koz_> (there's one letting you specify the string conversion)
2020-11-29 07:36:31 +0100bitmagie(~Thunderbi@200116b806516200c8ecaee7ade9dd01.dip.versatel-1u1.de)
2020-11-29 07:36:39 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
2020-11-29 07:38:00 +0100phaul(~phaul@ruby/staff/phaul)
2020-11-29 07:39:49 +0100nkatte_(~nkatte@2804:14c:7982:10c9:4e1d:96ff:fe53:98e1) (Quit: nkatte_)
2020-11-29 07:40:04 +0100hughjfchen(81221413@129.34.20.19) (Ping timeout: 245 seconds)
2020-11-29 07:40:53 +0100 <jle`> iqubic: i might be updating it to make it work with 0.18, it seems like i was just doing a small thing unsafe before
2020-11-29 07:41:15 +0100 <iqubic> Ah. I see. It's fine if you don't update it.
2020-11-29 07:41:46 +0100Tario(~Tario@201.192.165.173) (Read error: Connection reset by peer)
2020-11-29 07:43:23 +0100cads(~cads@ip-64-72-99-232.lasvegas.net) (Ping timeout: 256 seconds)
2020-11-29 07:44:31 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 256 seconds)
2020-11-29 07:45:59 +0100alp(~alp@2a01:e0a:58b:4920:85ab:9e1c:e4ae:787d) (Ping timeout: 272 seconds)
2020-11-29 07:46:45 +0100adm(~adm@117.223.63.167) (Remote host closed the connection)
2020-11-29 07:46:54 +0100hackplan(~hackplan@2408:8221:4b1e:80d0:8041:ecd2:ffb8:82bc)
2020-11-29 07:48:10 +0100hackplan(~hackplan@2408:8221:4b1e:80d0:8041:ecd2:ffb8:82bc) (Client Quit)
2020-11-29 07:48:12 +0100adm(~adm@117.223.63.167)
2020-11-29 07:48:19 +0100gproto23(~gproto23@unaffiliated/gproto23)
2020-11-29 07:49:23 +0100hackplan(~miuchan@2408:8221:4b1e:80d0:8041:ecd2:ffb8:82bc)
2020-11-29 07:49:27 +0100gproto23(~gproto23@unaffiliated/gproto23) (Client Quit)
2020-11-29 07:49:49 +0100gproto23(~gproto23@unaffiliated/gproto23)
2020-11-29 07:53:21 +0100hackageadvent-of-code-api 0.2.7.1 - Advent of Code REST API bindings and servant API https://hackage.haskell.org/package/advent-of-code-api-0.2.7.1 (jle)
2020-11-29 07:57:26 +0100urek(~urek@2804:7f1:e10a:5ac1:9da8:e4f6:9638:96bd) (Quit: urek)
2020-11-29 07:57:59 +0100christo(~chris@81.96.113.213) (Remote host closed the connection)
2020-11-29 07:58:45 +0100kupi(uid212005@gateway/web/irccloud.com/x-hiccaslramtbqzdd) (Quit: Connection closed for inactivity)
2020-11-29 07:58:46 +0100petersen(~petersen@redhat/juhp) (Ping timeout: 272 seconds)
2020-11-29 07:59:38 +0100adm(~adm@117.223.63.167) (Remote host closed the connection)
2020-11-29 07:59:56 +0100coot(~coot@37.30.53.191.nat.umts.dynamic.t-mobile.pl)
2020-11-29 07:59:58 +0100adm(~adm@117.223.63.167)
2020-11-29 08:01:19 +0100philopsos(~caecilius@gateway/tor-sasl/caecilius) (Quit: leaving)
2020-11-29 08:04:36 +0100philopsos(~caecilius@gateway/tor-sasl/caecilius)
2020-11-29 08:07:05 +0100 <iqubic> Oh, you just updated it.
2020-11-29 08:07:11 +0100gproto23(~gproto23@unaffiliated/gproto23) (Ping timeout: 256 seconds)
2020-11-29 08:07:27 +0100 <iqubic> jle`: Does this now work with 8.10.2?
2020-11-29 08:08:52 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-11-29 08:08:59 +0100jamm_(~jamm@unaffiliated/jamm)
2020-11-29 08:09:45 +0100andyrtr1(~andyrtr@195.140.213.38)
2020-11-29 08:09:59 +0100larou(5eae2591@gateway/web/cgi-irc/kiwiirc.com/ip.94.174.37.145) (Quit: Connection closed)
2020-11-29 08:10:56 +0100adm(~adm@117.223.63.167) (Remote host closed the connection)
2020-11-29 08:11:09 +0100Rudd0(~Rudd0@185.189.115.103) (Ping timeout: 256 seconds)
2020-11-29 08:13:59 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2020-11-29 08:16:16 +0100darjeeling_(~darjeelin@112.16.171.8) (Ping timeout: 240 seconds)
2020-11-29 08:20:24 +0100jsomedon(~jsomedon@111.197.236.178)
2020-11-29 08:20:52 +0100 <iqubic> Actually, that the wrong question. The question should be: does this now work with the latest servant API, to which the answer is "Yes"
2020-11-29 08:21:12 +0100xff0x(~fox@2001:1a81:524c:7b00:8105:569c:1b26:2c3d) (Ping timeout: 260 seconds)
2020-11-29 08:21:34 +0100xff0x(~fox@2001:1a81:524c:7b00:4922:8a11:2fad:afb4)
2020-11-29 08:23:07 +0100jsomedon(~jsomedon@111.197.236.178) (Client Quit)
2020-11-29 08:23:10 +0100hidedagger(~nate@unaffiliated/hidedagger) (Quit: WeeChat 2.9)
2020-11-29 08:23:19 +0100 <jle`> hooray :D
2020-11-29 08:24:16 +0100joaoh82(~joaoh82@ip-213-127-88-241.ip.prioritytelecom.net) (Ping timeout: 240 seconds)
2020-11-29 08:24:18 +0100adm(~adm@117.223.63.167)
2020-11-29 08:24:33 +0100mbomba(~mbomba@bras-base-toroon2719w-grc-49-142-114-9-241.dsl.bell.ca)
2020-11-29 08:24:35 +0100bitmagie(~Thunderbi@200116b806516200c8ecaee7ade9dd01.dip.versatel-1u1.de) (Quit: bitmagie)
2020-11-29 08:25:22 +0100takuan(~takuan@178-116-218-225.access.telenet.be)
2020-11-29 08:25:27 +0100alp(~alp@2a01:e0a:58b:4920:c928:701f:1376:41b8)
2020-11-29 08:26:37 +0100electricityZZZZ(~electrici@108-216-157-17.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2020-11-29 08:27:03 +0100electricityZZZZ(~electrici@108-216-157-17.lightspeed.sntcca.sbcglobal.net)
2020-11-29 08:30:58 +0100 <iqubic> I don't actually know if it works. I haven't tested it. I'm just going by what your commit messages say. I trust you to have tested the thing before releasing it.
2020-11-29 08:31:54 +0100petersen(~petersen@redhat/juhp)
2020-11-29 08:32:03 +0100philopsos(~caecilius@gateway/tor-sasl/caecilius) (Ping timeout: 240 seconds)
2020-11-29 08:32:06 +0100Digit(~user@fsf/member/digit)
2020-11-29 08:35:19 +0100danvet(~Daniel@2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa)
2020-11-29 08:36:43 +0100tomboy64(~tomboy64@gateway/tor-sasl/tomboy64) (Ping timeout: 240 seconds)
2020-11-29 08:37:31 +0100philopsos(~caecilius@gateway/tor-sasl/caecilius)
2020-11-29 08:38:33 +0100tomboy64(~tomboy64@gateway/tor-sasl/tomboy64)
2020-11-29 08:39:39 +0100christo(~chris@81.96.113.213)
2020-11-29 08:40:54 +0100philopsos(~caecilius@gateway/tor-sasl/caecilius) (Remote host closed the connection)
2020-11-29 08:41:37 +0100triteraflops(~triterafl@host-208-96-90-136.public.eastlink.ca) (Ping timeout: 264 seconds)
2020-11-29 08:42:34 +0100philopsos(~caecilius@gateway/tor-sasl/caecilius)
2020-11-29 08:44:17 +0100johnw(~johnw@haskell/developer/johnw)
2020-11-29 08:48:25 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-11-29 08:48:43 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2020-11-29 08:49:43 +0100philopsos(~caecilius@gateway/tor-sasl/caecilius) (Ping timeout: 240 seconds)
2020-11-29 08:53:18 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 260 seconds)
2020-11-29 08:59:16 +0100joaoh82(~joaoh82@ip-213-127-88-241.ip.prioritytelecom.net)
2020-11-29 09:00:16 +0100jamm_(~jamm@unaffiliated/jamm) (Remote host closed the connection)
2020-11-29 09:01:01 +0100jamm_(~jamm@unaffiliated/jamm)
2020-11-29 09:01:16 +0100jamm_(~jamm@unaffiliated/jamm) (Remote host closed the connection)
2020-11-29 09:01:32 +0100jamm_(~jamm@unaffiliated/jamm)
2020-11-29 09:01:37 +0100jamm_(~jamm@unaffiliated/jamm) (Remote host closed the connection)
2020-11-29 09:02:17 +0100Saukk(~Saukk@2001:998:f9:2914:1c59:9bb5:b94c:4) (Remote host closed the connection)
2020-11-29 09:03:47 +0100jamm_(~jamm@unaffiliated/jamm)
2020-11-29 09:05:39 +0100vicfred(~vicfred@unaffiliated/vicfred) (Quit: Leaving)
2020-11-29 09:06:34 +0100vicfred(~vicfred@unaffiliated/vicfred)
2020-11-29 09:07:03 +0100alp(~alp@2a01:e0a:58b:4920:c928:701f:1376:41b8) (Ping timeout: 272 seconds)
2020-11-29 09:07:12 +0100nek0(~nek0@mail.nek0.eu)
2020-11-29 09:07:39 +0100vicfred(~vicfred@unaffiliated/vicfred) (Max SendQ exceeded)
2020-11-29 09:08:11 +0100vicfred(~vicfred@unaffiliated/vicfred)
2020-11-29 09:08:57 +0100jamm_(~jamm@unaffiliated/jamm) (Ping timeout: 272 seconds)
2020-11-29 09:09:13 +0100joaoh82(~joaoh82@ip-213-127-88-241.ip.prioritytelecom.net) (Ping timeout: 264 seconds)
2020-11-29 09:12:03 +0100christo(~chris@81.96.113.213) (Remote host closed the connection)
2020-11-29 09:12:22 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
2020-11-29 09:13:03 +0100triteraflops(~triterafl@host-208-96-90-136.public.eastlink.ca)
2020-11-29 09:16:58 +0100christo(~chris@81.96.113.213)
2020-11-29 09:17:37 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 264 seconds)
2020-11-29 09:22:25 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
2020-11-29 09:28:35 +0100Amras(~Amras@unaffiliated/amras) (Ping timeout: 272 seconds)
2020-11-29 09:29:51 +0100Amras(~Amras@unaffiliated/amras)
2020-11-29 09:32:01 +0100Lord_of_Life(~Lord@46.217.217.219) (Changing host)
2020-11-29 09:32:01 +0100Lord_of_Life(~Lord@unaffiliated/lord-of-life/x-0885362)
2020-11-29 09:39:26 +0100asheshambasta(~user@ptr-e1lysauiv50il654lwl.18120a2.ip6.access.telenet.be)
2020-11-29 09:40:48 +0100raichoo(~raichoo@dslb-092-073-220-084.092.073.pools.vodafone-ip.de)
2020-11-29 09:41:15 +0100oxide(~lambda@unaffiliated/mclaren) (Ping timeout: 260 seconds)
2020-11-29 09:41:36 +0100cads(~cads@ip-64-72-99-232.lasvegas.net)
2020-11-29 09:41:56 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-11-29 09:42:25 +0100alp(~alp@2a01:e0a:58b:4920:449d:95d8:faaa:919f)
2020-11-29 09:43:43 +0100jpds(~jpds@gateway/tor-sasl/jpds) (Ping timeout: 240 seconds)
2020-11-29 09:45:01 +0100aarvar(~foewfoiew@50.35.43.33) (Ping timeout: 246 seconds)
2020-11-29 09:45:26 +0100jpds(~jpds@gateway/tor-sasl/jpds)
2020-11-29 09:47:20 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2020-11-29 09:56:02 +0100christo(~chris@81.96.113.213) (Remote host closed the connection)
2020-11-29 09:57:41 +0100philopsos(~caecilius@gateway/tor-sasl/caecilius)
2020-11-29 09:58:03 +0100mbomba(~mbomba@bras-base-toroon2719w-grc-49-142-114-9-241.dsl.bell.ca) (Ping timeout: 260 seconds)
2020-11-29 10:00:13 +0100Tuplanolla(~Tuplanoll@91-159-68-239.elisa-laajakaista.fi)
2020-11-29 10:00:25 +0100cads(~cads@ip-64-72-99-232.lasvegas.net) (Ping timeout: 240 seconds)
2020-11-29 10:01:05 +0100Sheilong(uid293653@gateway/web/irccloud.com/x-jxbrpiggxmywaele) (Quit: Connection closed for inactivity)
2020-11-29 10:08:21 +0100hackageede 0.3.0.0 - Templating language with similar syntax and features to Liquid or Jinja2. https://hackage.haskell.org/package/ede-0.3.0.0 (BrendanHay)
2020-11-29 10:14:03 +0100shangxiao(~davids@101.181.159.140)
2020-11-29 10:19:23 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-11-29 10:21:42 +0100da39a3ee5e6b4b0d(~da39a3ee5@2403:6200:8876:9156:94db:6381:b8e1:921c)
2020-11-29 10:24:53 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2020-11-29 10:26:23 +0100livvy_(~livvy@gateway/tor-sasl/livvy) (Ping timeout: 240 seconds)
2020-11-29 10:27:13 +0100toorevitimirp(~tooreviti@117.182.183.16)
2020-11-29 10:27:50 +0100raichoo(~raichoo@dslb-092-073-220-084.092.073.pools.vodafone-ip.de) (Quit: Lost terminal)
2020-11-29 10:28:46 +0100em1n(~user@2401:4900:33a0:9423:35c5:7032:f69d:635c)
2020-11-29 10:29:00 +0100mputz(~Thunderbi@dslb-084-058-211-084.084.058.pools.vodafone-ip.de)
2020-11-29 10:30:40 +0100wonko7(~wonko7@2a01:e35:2ffb:7040:55f1:c3a3:cdbe:bf52)
2020-11-29 10:31:09 +0100ddere(uid110888@gateway/web/irccloud.com/x-ummpgtznmkpsetvj)
2020-11-29 10:33:56 +0100triteraflops(~triterafl@host-208-96-90-136.public.eastlink.ca) (Ping timeout: 265 seconds)
2020-11-29 10:34:03 +0100triteraflops(~triterafl@host-208-96-90-136.public.eastlink.ca)
2020-11-29 10:35:11 +0100knupfer(~Thunderbi@200116b82c7f88004886d9fffe889d05.dip.versatel-1u1.de)
2020-11-29 10:35:13 +0100knupfer(~Thunderbi@200116b82c7f88004886d9fffe889d05.dip.versatel-1u1.de) (Client Quit)
2020-11-29 10:35:28 +0100knupfer(~Thunderbi@i5E86B463.versanet.de)
2020-11-29 10:36:38 +0100hnOsmium0001(uid453710@gateway/web/irccloud.com/x-jbnazvtdsyymenum) (Quit: Connection closed for inactivity)
2020-11-29 10:37:59 +0100vicfred(~vicfred@unaffiliated/vicfred) (Quit: Leaving)
2020-11-29 10:39:05 +0100asheshambasta(~user@ptr-e1lysauiv50il654lwl.18120a2.ip6.access.telenet.be) ("ERC (IRC client for Emacs 28.0.50)")
2020-11-29 10:40:05 +0100drbean(~drbean@TC210-63-209-156.static.apol.com.tw) (Ping timeout: 240 seconds)
2020-11-29 10:41:24 +0100em1n(~user@2401:4900:33a0:9423:35c5:7032:f69d:635c) (Ping timeout: 240 seconds)
2020-11-29 10:45:08 +0100notzmv(~user@unaffiliated/zmv) (Ping timeout: 256 seconds)
2020-11-29 10:46:12 +0100joaoh82(~joaoh82@ip-213-127-88-241.ip.prioritytelecom.net)
2020-11-29 10:47:07 +0100mbomba(~mbomba@bras-base-toroon2719w-grc-49-142-114-9-241.dsl.bell.ca)
2020-11-29 10:47:25 +0100mbomba(~mbomba@bras-base-toroon2719w-grc-49-142-114-9-241.dsl.bell.ca) (Client Quit)
2020-11-29 10:47:34 +0100notzmv(~user@unaffiliated/zmv)
2020-11-29 10:49:44 +0100benjamin-l(~benjamin@2601:1c0:8800:67e0:fa16:54ff:febc:2e60) (Quit: WeeChat 2.9)
2020-11-29 10:49:59 +0100benjamin-l(~benjamin@2601:1c0:8800:67e0:fa16:54ff:febc:2e60)
2020-11-29 10:50:04 +0100LKoen(~LKoen@169.244.88.92.rev.sfr.net)
2020-11-29 10:50:28 +0100joaoh82(~joaoh82@ip-213-127-88-241.ip.prioritytelecom.net) (Ping timeout: 246 seconds)
2020-11-29 10:55:12 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-11-29 11:00:21 +0100benjamin-l(~benjamin@2601:1c0:8800:67e0:fa16:54ff:febc:2e60) (Quit: WeeChat 3.0)
2020-11-29 11:00:38 +0100benjamin-l(~benjamin@2601:1c0:8800:67e0:fa16:54ff:febc:2e60)
2020-11-29 11:01:03 +0100rprije(~rprije@14-202-129-120.static.tpgi.com.au)
2020-11-29 11:04:29 +0100Rudd0(~Rudd0@185.189.115.108)
2020-11-29 11:05:05 +0100darjeeling_(~darjeelin@122.245.217.23)
2020-11-29 11:14:21 +0100alp(~alp@2a01:e0a:58b:4920:449d:95d8:faaa:919f) (Ping timeout: 272 seconds)
2020-11-29 11:14:21 +0100hackageimplicit-hie 0.1.2.5 - Auto generate hie-bios cradles & hie.yaml https://hackage.haskell.org/package/implicit-hie-0.1.2.5 (Avi_Dessauer)
2020-11-29 11:15:44 +0100miuchan(2d880087@45.136.0.135) (Remote host closed the connection)
2020-11-29 11:16:12 +0100acidjnk_new(~acidjnk@p200300d0c719ff597d005cd8d9846e4e.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
2020-11-29 11:18:39 +0100mputz(~Thunderbi@dslb-084-058-211-084.084.058.pools.vodafone-ip.de) (Quit: mputz)
2020-11-29 11:20:26 +0100hackplan(~miuchan@2408:8221:4b1e:80d0:8041:ecd2:ffb8:82bc) (Ping timeout: 264 seconds)
2020-11-29 11:21:34 +0100mputz(~Thunderbi@dslb-084-058-211-084.084.058.pools.vodafone-ip.de)
2020-11-29 11:22:59 +0100marek(~mmahut@209.250.249.245) (Ping timeout: 260 seconds)
2020-11-29 11:23:26 +0100marek(~mmahut@209.250.249.245)
2020-11-29 11:23:43 +0100hackplan(~miuchan@2408:8221:4b1e:80d0:8041:ecd2:ffb8:82bc)
2020-11-29 11:29:08 +0100benjamin-l(~benjamin@2601:1c0:8800:67e0:fa16:54ff:febc:2e60) (Quit: WeeChat 3.0)
2020-11-29 11:29:16 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
2020-11-29 11:29:24 +0100benjamin-l(~benjamin@2601:1c0:8800:67e0:fa16:54ff:febc:2e60)
2020-11-29 11:29:35 +0100Varis(~Tadas@unaffiliated/varis) (Remote host closed the connection)
2020-11-29 11:33:01 +0100tomboy64(~tomboy64@gateway/tor-sasl/tomboy64) (Remote host closed the connection)
2020-11-29 11:33:31 +0100tomboy64(~tomboy64@gateway/tor-sasl/tomboy64)
2020-11-29 11:34:03 +0100oish(~charlie@228.25.169.217.in-addr.arpa)
2020-11-29 11:36:38 +0100hexfive(~hexfive@50-47-142-195.evrt.wa.frontiernet.net) (Quit: i must go. my people need me.)
2020-11-29 11:36:52 +0100conal(~conal@64.71.133.70)
2020-11-29 11:36:54 +0100conal(~conal@64.71.133.70) (Client Quit)
2020-11-29 11:38:00 +0100Franciman(~francesco@host-82-54-193-143.retail.telecomitalia.it)
2020-11-29 11:43:39 +0100Sgeo(~Sgeo@ool-18b982ad.dyn.optonline.net) (Read error: Connection reset by peer)
2020-11-29 11:44:27 +0100fendor(~fendor@178.115.128.128.wireless.dyn.drei.com)
2020-11-29 11:45:46 +0100alp(~alp@2a01:e0a:58b:4920:89fd:4813:7f86:5e18)
2020-11-29 11:47:43 +0100vg(~vg@139.59.59.230) (Ping timeout: 260 seconds)
2020-11-29 11:55:19 +0100adm(~adm@117.223.63.167) (Remote host closed the connection)
2020-11-29 11:55:26 +0100Varis(~Tadas@unaffiliated/varis)
2020-11-29 11:56:39 +0100adm(~adm@117.223.63.167)
2020-11-29 11:59:01 +0100wei2912(~wei2912@unaffiliated/wei2912)
2020-11-29 11:59:29 +0100geowiesnot(~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr)
2020-11-29 11:59:35 +0100joaj(~joaj@2001:818:e326:8200:5273:55b7:3a86:e6ca)
2020-11-29 12:01:20 +0100adm(~adm@117.223.63.167) (Ping timeout: 272 seconds)
2020-11-29 12:03:04 +0100da39a3ee5e6b4b0d(~da39a3ee5@2403:6200:8876:9156:94db:6381:b8e1:921c) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-11-29 12:03:16 +0100phaul(~phaul@ruby/staff/phaul) (Ping timeout: 240 seconds)
2020-11-29 12:04:21 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-11-29 12:07:02 +0100sh9(~sh9@softbank060116136158.bbtec.net) (Ping timeout: 272 seconds)
2020-11-29 12:09:34 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2020-11-29 12:09:51 +0100phaul(~phaul@ruby/staff/phaul)
2020-11-29 12:10:05 +0100alp(~alp@2a01:e0a:58b:4920:89fd:4813:7f86:5e18) (Ping timeout: 272 seconds)
2020-11-29 12:10:45 +0100sh9(~sh9@softbank060116136158.bbtec.net)
2020-11-29 12:14:03 +0100philopsos(~caecilius@gateway/tor-sasl/caecilius) (Ping timeout: 240 seconds)
2020-11-29 12:15:14 +0100phaul(~phaul@ruby/staff/phaul) (Ping timeout: 256 seconds)
2020-11-29 12:15:46 +0100phaul(~phaul@ruby/staff/phaul)
2020-11-29 12:21:25 +0100marek(~mmahut@209.250.249.245) (Ping timeout: 240 seconds)
2020-11-29 12:21:29 +0100benjamin-l(~benjamin@2601:1c0:8800:67e0:fa16:54ff:febc:2e60) (Ping timeout: 272 seconds)
2020-11-29 12:21:37 +0100marek(~mmahut@209.250.249.245)
2020-11-29 12:25:20 +0100joaoh82(~joaoh82@ip-213-127-88-241.ip.prioritytelecom.net)
2020-11-29 12:26:04 +0100hackplan(~miuchan@2408:8221:4b1e:80d0:8041:ecd2:ffb8:82bc) (Ping timeout: 240 seconds)
2020-11-29 12:26:40 +0100tolt(~weechat-h@li219-154.members.linode.com) (Quit: WeeChat 2.9)
2020-11-29 12:26:50 +0100alp(~alp@2a01:e0a:58b:4920:e556:aa6f:40c2:461e)
2020-11-29 12:26:58 +0100jamm_(~jamm@unaffiliated/jamm)
2020-11-29 12:30:08 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-11-29 12:30:36 +0100tolt(~weechat-h@li219-154.members.linode.com)
2020-11-29 12:31:50 +0100jamm_(~jamm@unaffiliated/jamm) (Ping timeout: 264 seconds)
2020-11-29 12:33:36 +0100Gurkenglas(~Gurkengla@unaffiliated/gurkenglas) (Ping timeout: 240 seconds)
2020-11-29 12:35:48 +0100f-a(~f-a@151.68.155.243)
2020-11-29 12:37:16 +0100theorbtwo(~theorb@cpc81822-swin19-2-0-cust3.3-1.cable.virginm.net) (Ping timeout: 256 seconds)
2020-11-29 12:39:34 +0100joaoh82(~joaoh82@ip-213-127-88-241.ip.prioritytelecom.net) (Remote host closed the connection)
2020-11-29 12:40:07 +0100joaoh82(~joaoh82@157-131-134-210.dedicated.static.sonic.net)
2020-11-29 12:40:36 +0100phaul(~phaul@ruby/staff/phaul) (Ping timeout: 240 seconds)
2020-11-29 12:41:10 +0100hackplan(~miuchan@2408:8221:4b1e:80d0:1c28:9d6f:fae6:d558)
2020-11-29 12:41:48 +0100rprije(~rprije@14-202-129-120.static.tpgi.com.au) (Ping timeout: 256 seconds)
2020-11-29 12:42:02 +0100da39a3ee5e6b4b0d(~da39a3ee5@2403:6200:8876:9156:94db:6381:b8e1:921c)
2020-11-29 12:43:26 +0100gehmehgeh(~ircuser1@gateway/tor-sasl/gehmehgeh)
2020-11-29 12:43:43 +0100oish(~charlie@228.25.169.217.in-addr.arpa) (Ping timeout: 256 seconds)
2020-11-29 12:44:39 +0100geowiesnot(~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) (Ping timeout: 260 seconds)
2020-11-29 12:45:25 +0100mputz(~Thunderbi@dslb-084-058-211-084.084.058.pools.vodafone-ip.de) (Ping timeout: 256 seconds)
2020-11-29 12:45:44 +0100phaul(~phaul@ruby/staff/phaul)
2020-11-29 12:45:47 +0100joaoh82(~joaoh82@157-131-134-210.dedicated.static.sonic.net) ()
2020-11-29 12:45:57 +0100oish(~charlie@228.25.169.217.in-addr.arpa)
2020-11-29 12:45:59 +0100DirefulSalt(DirefulSal@gateway/vpn/privateinternetaccess/direfulsalt) (Remote host closed the connection)
2020-11-29 12:46:33 +0100DirefulSalt(DirefulSal@gateway/vpn/privateinternetaccess/direfulsalt)
2020-11-29 12:46:36 +0100sh91(~sh9@softbank060116136158.bbtec.net)
2020-11-29 12:46:46 +0100vg_(~vg@139.59.59.230)
2020-11-29 12:46:52 +0100vg_(~vg@139.59.59.230) (Remote host closed the connection)
2020-11-29 12:47:01 +0100petersen(~petersen@redhat/juhp) (Ping timeout: 246 seconds)
2020-11-29 12:47:16 +0100vg_(~vg@139.59.59.230)
2020-11-29 12:47:25 +0100sh9(~sh9@softbank060116136158.bbtec.net) (Ping timeout: 240 seconds)
2020-11-29 12:48:54 +0100vg_(~vg@139.59.59.230) (Client Quit)
2020-11-29 12:52:31 +0100wonko7(~wonko7@2a01:e35:2ffb:7040:55f1:c3a3:cdbe:bf52) (Ping timeout: 272 seconds)
2020-11-29 12:54:46 +0100__monty__(~toonn@unaffiliated/toonn)
2020-11-29 12:54:51 +0100SupaYoshi(~supayoshi@213-10-140-13.fixed.kpn.net) (Quit: Goodbye!)
2020-11-29 12:56:15 +0100SupaYoshi(~supayoshi@213-10-140-13.fixed.kpn.net)
2020-11-29 12:56:56 +0100petersen(~petersen@redhat/juhp)
2020-11-29 13:00:12 +0100adm(~adm@117.223.63.167)
2020-11-29 13:04:11 +0100Franciman(~francesco@host-82-54-193-143.retail.telecomitalia.it) (Quit: Leaving)
2020-11-29 13:04:36 +0100adm(~adm@117.223.63.167) (Ping timeout: 240 seconds)
2020-11-29 13:05:03 +0100JJ15(~JJ@94.197.17.236.threembb.co.uk)
2020-11-29 13:05:11 +0100darjeeling_(~darjeelin@122.245.217.23) (Ping timeout: 260 seconds)
2020-11-29 13:05:18 +0100olligobber(olligobber@gateway/vpn/privateinternetaccess/olligobber) (Ping timeout: 260 seconds)
2020-11-29 13:05:25 +0100Franciman(~francesco@host-82-54-193-143.retail.telecomitalia.it)
2020-11-29 13:06:10 +0100Iolen(~Iolen@82.131.38.59.cable.starman.ee)
2020-11-29 13:07:04 +0100darjeeling_(~darjeelin@122.245.217.23)
2020-11-29 13:07:15 +0100 <Iolen> ░▓░▓░▓░▓░▓░▓░▓░▓░▓░ Hello ..... ░▓░▓░▓░▓░▓░▓░▓░▓░▓░
2020-11-29 13:07:40 +0100lpy(~nyd@unaffiliated/elysian) (Quit: lpy)
2020-11-29 13:08:13 +0100muzzle(~user@2001:a62:1506:3101:844e:2920:a6de:5dd4)
2020-11-29 13:10:43 +0100muzzle(~user@2001:a62:1506:3101:844e:2920:a6de:5dd4) (Remote host closed the connection)
2020-11-29 13:10:47 +0100vg_(~vg@139.59.59.230)
2020-11-29 13:10:49 +0100vg_(~vg@139.59.59.230) (Remote host closed the connection)
2020-11-29 13:11:32 +0100pavonia(~user@unaffiliated/siracusa)
2020-11-29 13:12:38 +0100 <Iolen> ░▓░▓░▓░▓░▓░▓░▓░▓░▓░ Everyone invited to new chat place at: http://iaaaaa.mywebcommunity.org/
2020-11-29 13:12:38 +0100 <Iolen> Thank You for attention ! ░▓░▓░▓░▓░▓░▓░▓░▓░▓░
2020-11-29 13:14:07 +0100 <__monty__> ,where mods
2020-11-29 13:14:54 +0100 <__monty__> @ops
2020-11-29 13:14:54 +0100 <lambdabot> Maybe you meant: pl oeis docs
2020-11-29 13:15:31 +0100 <__monty__> Anyone remember the correct command?
2020-11-29 13:15:34 +0100 <__monty__> @where ops
2020-11-29 13:15:34 +0100 <lambdabot> byorgey Cale conal copumpkin dcoutts dibblego dolio edwardk geekosaur glguy jmcarthur johnw mniip monochrom quicksilver shachaf shapr ski
2020-11-29 13:15:42 +0100 <__monty__> Success \o/
2020-11-29 13:15:49 +0100 <siraben> it's a bot, spammed multiple channels
2020-11-29 13:16:06 +0100 <f-a> yup, multiple people reporting on #freenode
2020-11-29 13:16:30 +0100 <dcoutts> hmm, I don't seem to have my op rights
2020-11-29 13:16:55 +0100Ariakenom(~Ariakenom@h-98-128-229-104.NA.cust.bahnhof.se)
2020-11-29 13:17:45 +0100 <__monty__> dcoutts: You can always have chanserv op you if you have the correct flags.
2020-11-29 13:19:12 +0100SupaYoshi(~supayoshi@213-10-140-13.fixed.kpn.net) (Quit: Goodbye!)
2020-11-29 13:21:03 +0100petersen(~petersen@redhat/juhp) (Ping timeout: 260 seconds)
2020-11-29 13:23:46 +0100petersen(~petersen@redhat/juhp)
2020-11-29 13:24:10 +0100m0rphism(~m0rphism@HSI-KBW-095-208-098-207.hsi5.kabel-badenwuerttemberg.de)
2020-11-29 13:24:48 +0100jonatanb(~jonatanb@83.24.220.252.ipv4.supernova.orange.pl)
2020-11-29 13:26:05 +0100awk(~mnrmnaugh@unaffiliated/mnrmnaugh) (Ping timeout: 240 seconds)
2020-11-29 13:26:06 +0100drbean(~drbean@TC210-63-209-81.static.apol.com.tw)
2020-11-29 13:27:08 +0100dcoutts(~duncan@33.14.75.194.dyn.plus.net) (Quit: Leaving)
2020-11-29 13:27:23 +0100dcoutts(~dcoutts@33.14.75.194.dyn.plus.net)
2020-11-29 13:27:23 +0100dcoutts(~dcoutts@33.14.75.194.dyn.plus.net) (Changing host)
2020-11-29 13:27:23 +0100dcoutts(~dcoutts@unaffiliated/dcoutts)
2020-11-29 13:27:50 +0100ChanServ+o dcoutts
2020-11-29 13:27:54 +0100 <dcoutts> yay
2020-11-29 13:28:04 +0100IolendcouttsIolen
2020-11-29 13:28:08 +0100ChanServ-o dcoutts
2020-11-29 13:30:20 +0100ggole(~ggole@2001:8003:8119:7200:69c3:3fe:81:8dbf)
2020-11-29 13:33:45 +0100jzl(~jzl@unaffiliated/jzl) (Remote host closed the connection)
2020-11-29 13:33:56 +0100jonatanb(~jonatanb@83.24.220.252.ipv4.supernova.orange.pl) (Ping timeout: 240 seconds)
2020-11-29 13:34:26 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds)
2020-11-29 13:36:52 +0100hackageede 0.3.1.0 - Templating language with similar syntax and features to Liquid or Jinja2. https://hackage.haskell.org/package/ede-0.3.1.0 (BrendanHay)
2020-11-29 13:39:50 +0100DirefulSalt(DirefulSal@gateway/vpn/privateinternetaccess/direfulsalt) (Remote host closed the connection)
2020-11-29 13:40:05 +0100rayyyy(~nanoz@gateway/tor-sasl/nanoz)
2020-11-29 13:40:22 +0100geowiesnot(~user@87-89-181-157.abo.bbox.fr)
2020-11-29 13:42:33 +0100alp(~alp@2a01:e0a:58b:4920:e556:aa6f:40c2:461e) (Ping timeout: 272 seconds)
2020-11-29 13:49:25 +0100avdb(~avdb@ip-81-11-215-86.dsl.scarlet.be)
2020-11-29 13:49:59 +0100 <avdb> Am I allowed to ask people to make my spaghetti code better? I wrote a small program but there's a lot of repetition and I don't know how to make it shorter ...
2020-11-29 13:50:27 +0100darjeeling_(~darjeelin@122.245.217.23) (Ping timeout: 260 seconds)
2020-11-29 13:51:07 +0100 <f-a> avdb: sure, but maybe run hlint first
2020-11-29 13:51:31 +0100 <avdb> I use ALE but it doesn't detect anything
2020-11-29 13:51:34 +0100 <avdb> http://codepad.org/nIz9DRYA
2020-11-29 13:51:56 +0100 <avdb> ALE is a collection of linters including hlint right?
2020-11-29 13:52:39 +0100 <f-a> no idea what ALE is to be honest
2020-11-29 13:53:04 +0100 <avdb> https://github.com/dense-analysis/ale
2020-11-29 13:53:53 +0100contiver(~contiver@84-115-65-38.wifi.dynamic.surfer.at)
2020-11-29 13:54:12 +0100 <f-a> ok
2020-11-29 13:54:30 +0100 <f-a> instead of guards, why not pattern match?
2020-11-29 13:54:34 +0100iqubic`(~user@2601:602:9500:4870:ed6c:ae7b:1487:9d5a)
2020-11-29 13:54:58 +0100 <f-a> also is `seconds` really a parameter?
2020-11-29 13:54:58 +0100chkno(~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net) (Read error: Connection reset by peer)
2020-11-29 13:55:12 +0100 <f-a> *really needed
2020-11-29 13:55:16 +0100chkno(~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net)
2020-11-29 13:55:18 +0100SupaYoshi(~supayoshi@213-10-140-13.fixed.kpn.net)
2020-11-29 13:55:35 +0100 <avdb> It's indeed probably possible to make it point-free
2020-11-29 13:55:51 +0100 <avdb> Can I add the numbers to the data types instead of the function?
2020-11-29 13:56:10 +0100 <f-a> of course
2020-11-29 13:56:40 +0100 <avdb> Wasn't sure if pattern matching would work, just `ageOn Mars = undefined`?
2020-11-29 13:56:56 +0100 <avdb> If I do that I'm still writing out the function multiple times
2020-11-29 13:57:04 +0100 <f-a> data Plantet = PlanetTag Float and data PlanetTag = Mars | …
2020-11-29 13:57:33 +0100 <f-a> pattern matching would work, yeah
2020-11-29 13:57:41 +0100 <avdb> Wait let me first fix the pattern matching
2020-11-29 13:58:01 +0100 <f-a> what does ageOn computes, exactly?
2020-11-29 13:58:50 +0100iqubic(~user@2601:602:9500:4870:71ac:d28d:5123:4cbd) (Ping timeout: 264 seconds)
2020-11-29 13:59:05 +0100 <f-a> (to rephrase, why `ageOn :: Planet -> Float -> Float` instead of `ageOn :: Planet -> Float`)
2020-11-29 14:01:13 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-11-29 14:05:32 +0100 <avdb> "Given an age in seconds, calculate how old someone would be on the following planets"
2020-11-29 14:05:58 +0100 <f-a> oh, now I see
2020-11-29 14:06:02 +0100 <avdb> No idea, I'm on Exercism and they recommended to use "ageOn :: Planet -> Float -> Float"
2020-11-29 14:06:14 +0100 <f-a> ok
2020-11-29 14:06:23 +0100 <avdb> You need to first calculate someone's age on earth and convert it to the other planets if necessary
2020-11-29 14:07:03 +0100darjeeling_(~darjeelin@122.245.217.23)
2020-11-29 14:07:09 +0100 <f-a> I would probably write
2020-11-29 14:07:28 +0100 <f-a> where earthAge = seconds * 3155760
2020-11-29 14:07:44 +0100 <f-a> and put `earthAge` in planet == Earth = earthAge rather
2020-11-29 14:08:20 +0100adm(~adm@117.223.63.167)
2020-11-29 14:08:27 +0100 <avdb> I can't make it point-free by the way
2020-11-29 14:08:30 +0100 <avdb> I don't know why
2020-11-29 14:08:34 +0100 <avdb> This is what I currently have
2020-11-29 14:08:37 +0100awk(~mnrmnaugh@unaffiliated/mnrmnaugh)
2020-11-29 14:08:39 +0100 <f-a> do you *need* to make it pointfree?
2020-11-29 14:08:59 +0100 <avdb> http://codepad.org/OTevDnrJ
2020-11-29 14:09:10 +0100 <avdb> I don't need to I just want it to be shorter
2020-11-29 14:09:17 +0100contiver(~contiver@84-115-65-38.wifi.dynamic.surfer.at) (Ping timeout: 256 seconds)
2020-11-29 14:10:02 +0100 <avdb> Do where bindings work with pattern matching?
2020-11-29 14:10:48 +0100 <f-a> why `(*) 0.2408467 $ ageOn Earth`
2020-11-29 14:11:00 +0100 <f-a> instead of `0.24 * ageOn Earth`?
2020-11-29 14:11:44 +0100 <f-a> and no, where spans over guards but not patterns. But you can be crafty like this
2020-11-29 14:12:06 +0100 <avdb> So I can't pattern match anymore?
2020-11-29 14:12:16 +0100 <avdb> If I use where
2020-11-29 14:12:16 +0100 <f-a> you can with a case … of
2020-11-29 14:12:18 +0100 <f-a> one second
2020-11-29 14:14:13 +0100 <f-a> http://www.ariis.it/link/t/paste21061-0 there, something like this
2020-11-29 14:14:28 +0100 <f-a> emh, bar the typos
2020-11-29 14:14:47 +0100alp(~alp@2a01:e0a:58b:4920:3b:6ea2:53ef:78a2)
2020-11-29 14:15:47 +0100andyrtr1(~andyrtr@195.140.213.38) (Remote host closed the connection)
2020-11-29 14:16:21 +0100 <avdb> Is that the *best* possible solution?
2020-11-29 14:17:39 +0100 <f-a> it is clear, it is not redundant. You *have* to write those 84.016846 numbers down somewhere in your program, whether inside a function or in a helper function or in a datatype
2020-11-29 14:18:03 +0100 <avdb> There is improvement so I will stick with your solution, in real projects it's probably better to work with a database for such stuff
2020-11-29 14:18:07 +0100 <avdb> Right?
2020-11-29 14:18:40 +0100 <f-a> you can have an helper function like
2020-11-29 14:18:40 +0100delbmuts_(52874ce6@ppp-82-135-76-230.dynamic.mnet-online.de)
2020-11-29 14:18:41 +0100 <f-a> factor :: Planet -> Float
2020-11-29 14:18:41 +0100 <f-a> factor Mercury = 13
2020-11-29 14:18:44 +0100 <f-a>
2020-11-29 14:19:21 +0100 <f-a> and then ageOn becomes
2020-11-29 14:19:22 +0100 <f-a> ageOn p a = let ageEarth = a * 2 in ageEarth * factor p
2020-11-29 14:19:24 +0100 <avdb> You mean to make it easier to separate data from the function?
2020-11-29 14:19:43 +0100 <avdb> That's even better imo
2020-11-29 14:19:57 +0100 <f-a> or even use an assoc list. My point is, *somewhere* the data has to be written
2020-11-29 14:20:04 +0100 <avdb> assoc?
2020-11-29 14:20:07 +0100 <avdb> Never heard of that before
2020-11-29 14:20:16 +0100 <f-a> sorry, it is just a
2020-11-29 14:20:30 +0100 <f-a> [(Pluto, 18), (Earth, 1) …] list
2020-11-29 14:20:49 +0100ddere(uid110888@gateway/web/irccloud.com/x-ummpgtznmkpsetvj) (Quit: Connection closed for inactivity)
2020-11-29 14:20:53 +0100 <avdb> Oh yea exactly what I first thought when I started the exercise, it's just that I'm bad with ADT :P
2020-11-29 14:21:09 +0100 <f-a> but it was just a thought, the helper function is better (GHC can warn you if you miss a constructor, etc.)
2020-11-29 14:21:53 +0100 <f-a> just relax and remember that one of the strong points of Haskell is easy refactoring
2020-11-29 14:22:14 +0100 <f-a> if you come up later with a more elegant solution, you can refactor easily thanks to types, inference
2020-11-29 14:23:43 +0100alp(~alp@2a01:e0a:58b:4920:3b:6ea2:53ef:78a2) (Ping timeout: 272 seconds)
2020-11-29 14:24:14 +0100f-a_(~f-a@151.82.219.112)
2020-11-29 14:26:01 +0100da39a3ee5e6b4b0d(~da39a3ee5@2403:6200:8876:9156:94db:6381:b8e1:921c) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-11-29 14:26:16 +0100f-a(~f-a@151.68.155.243) (Ping timeout: 240 seconds)
2020-11-29 14:26:28 +0100f-a_(~f-a@151.82.219.112) (Client Quit)
2020-11-29 14:28:07 +0100christo(~chris@81.96.113.213)
2020-11-29 14:30:24 +0100Saukk(~Saukk@2001:998:f9:2914:1c59:9bb5:b94c:4)
2020-11-29 14:30:25 +0100 <avdb> Alright, I just used a factor helper function and it looks much better now since it's a one line function
2020-11-29 14:30:56 +0100 <avdb> I installed GHC and Cabal with ghcup, any idea how I can install Stack?
2020-11-29 14:30:56 +0100gentauro(~gentauro@unaffiliated/gentauro) (Read error: Connection reset by peer)
2020-11-29 14:31:18 +0100gentauro(~gentauro@unaffiliated/gentauro)
2020-11-29 14:31:37 +0100 <Sose> avdb: I've installed ghc and cabal with ghcup and just used Stack's own install script for Stack and everything seems to work fine
2020-11-29 14:33:42 +0100zaquest(~notzaques@5.128.210.178) (Read error: Connection reset by peer)
2020-11-29 14:33:43 +0100 <avdb> Sose: Thanks, but can Stack update itself?>
2020-11-29 14:33:56 +0100awk(~mnrmnaugh@unaffiliated/mnrmnaugh) (Ping timeout: 240 seconds)
2020-11-29 14:34:02 +0100urodna(~urodna@unaffiliated/urodna)
2020-11-29 14:34:15 +0100zaquest(~notzaques@5.128.210.178)
2020-11-29 14:34:16 +0100 <Sose> I think it can with `stack upgrade`
2020-11-29 14:34:35 +0100 <Sose> pretty new to haskell myself and I just installed everything recently so I haven't had the need to upgrade much :)
2020-11-29 14:34:35 +0100chkno(~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net) (Read error: Connection reset by peer)
2020-11-29 14:35:03 +0100chkno(~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net)
2020-11-29 14:35:52 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds)
2020-11-29 14:38:47 +0100jonatanb(~jonatanb@83.24.220.252.ipv4.supernova.orange.pl)
2020-11-29 14:42:08 +0100drbean(~drbean@TC210-63-209-81.static.apol.com.tw) (Ping timeout: 260 seconds)
2020-11-29 14:42:37 +0100z0k(~user@101.50.127.33) (Quit: WeeChat 3.0)
2020-11-29 14:44:53 +0100HarveyPwca(~HarveyPwc@c-98-220-98-201.hsd1.il.comcast.net) (Quit: Leaving)
2020-11-29 14:46:53 +0100rcdilorenzo(~rcdiloren@cpe-76-182-87-188.nc.res.rr.com) (Quit: rcdilorenzo)
2020-11-29 14:47:01 +0100vg(~vg@139.59.59.230)
2020-11-29 14:47:09 +0100rcdilorenzo(~rcdiloren@cpe-76-182-87-188.nc.res.rr.com)
2020-11-29 14:47:13 +0100vg(~vg@139.59.59.230) (Remote host closed the connection)
2020-11-29 14:47:28 +0100vg(~vg@139.59.59.230)
2020-11-29 14:47:30 +0100urek(~urek@2804:7f1:e10a:5ac1:558c:16f8:858a:ffa6)
2020-11-29 14:49:50 +0100jonatanb(~jonatanb@83.24.220.252.ipv4.supernova.orange.pl) (Remote host closed the connection)
2020-11-29 14:51:24 +0100rcdilorenzo(~rcdiloren@cpe-76-182-87-188.nc.res.rr.com) (Client Quit)
2020-11-29 14:51:40 +0100rcdilorenzo(~rcdiloren@cpe-76-182-87-188.nc.res.rr.com)
2020-11-29 14:52:22 +0100 <delbmuts_> Hi again, is there a function "Reader Int a -> (ResourceT IO) a"? I'd like to get rid of the "undefined" in https://paste.debian.net/hidden/2b257950 but don't know how. Thanks.
2020-11-29 14:54:05 +0100darjeeling_(~darjeelin@122.245.217.23) (Ping timeout: 240 seconds)
2020-11-29 14:56:48 +0100 <frdg> `toHtml :: blaze-markup-0.8.2.5:Text.Blaze.ToMarkup a => a -> Html` What is the best way to go about finding a type that satisfies this constraint? Is there something like `:type` in ghci where I can enter a constraint and get back Types that satisfy it?
2020-11-29 14:57:14 +0100 <dminuoso> delbmuts_: That looks like a strange thing to do.
2020-11-29 14:57:25 +0100 <dminuoso> delbmuts_: What's the intention?
2020-11-29 14:57:47 +0100christo(~chris@81.96.113.213) (Remote host closed the connection)
2020-11-29 14:58:14 +0100 <ski> delbmuts_> :t transPipe
2020-11-29 14:58:34 +0100 <dminuoso> Also, your binding `server = ws` shouldn't check, right?
2020-11-29 14:59:10 +0100christo(~chris@81.96.113.213)
2020-11-29 14:59:52 +0100 <delbmuts_> dminuoso: I'd like to access my custom servant `State` in the WebSocket function.
2020-11-29 15:00:20 +0100 <dminuoso> so far so good.
2020-11-29 15:00:21 +0100 <delbmuts_> dminuoso: AFAICT ghc isn't complaining.
2020-11-29 15:01:10 +0100 <dminuoso> ah hold on, ServerT is a tyfam right
2020-11-29 15:03:12 +0100 <dminuoso> type ServerT (WebSocketConduit i o) m = ConduitT i o (ResourceT IO) ()
2020-11-29 15:03:14 +0100 <dminuoso> I see
2020-11-29 15:03:16 +0100 <delbmuts_> ski: transPipe :: Monad m => (forall a. m a -> n a) -> ConduitT i o m r -> ConduitT i o n r -- https://hackage.haskell.org/package/conduit-1.3.4/docs/Data-Conduit.html#v:transPipe
2020-11-29 15:03:27 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-11-29 15:05:54 +0100Deide(~Deide@217.155.19.23)
2020-11-29 15:06:36 +0100 <delbmuts_> The fact that `m` does not appear on the right side bugs me a little.
2020-11-29 15:06:45 +0100 <dminuoso> delbmuts_: Why not just add ResourceT to your AppM?
2020-11-29 15:06:59 +0100 <dminuoso> Then you can just use transPipe the same way as hoistServer
2020-11-29 15:08:10 +0100 <delbmuts_> Around or inside the ReaderT? (Would that matter?) I think I tried it, but I'll try again. :)
2020-11-29 15:08:18 +0100 <dminuoso> I guess your main mistake is presuming that there's no ResourceT in your version of conduit
2020-11-29 15:08:22 +0100darjeeling_(~darjeelin@122.245.217.23)
2020-11-29 15:08:57 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
2020-11-29 15:08:57 +0100 <dminuoso> (I mean it seems like you're trying to throw away your MonadResource interface for no good reason)
2020-11-29 15:09:24 +0100 <dminuoso> Well, so servant-websockets assumes your monad to be
2020-11-29 15:09:28 +0100 <dminuoso> ConduitT i o (ResourceT IO) ()
2020-11-29 15:10:02 +0100 <dminuoso> You get to provide a natural transformation `m ~> n`, with n ~ ResourceT IO, so it must be:
2020-11-29 15:10:10 +0100 <dminuoso> m ~> ResourceT IO
2020-11-29 15:10:12 +0100 <dminuoso> If you had
2020-11-29 15:10:37 +0100 <dminuoso> yourPipe :: ReaderT State (ResourceT IO) ()
2020-11-29 15:11:12 +0100 <dminuoso> Then you could trivially write `ReaderT State (ResourceT IO) ~> ResourceT IO` with just `flip runReaderT ($)`
2020-11-29 15:11:41 +0100Saukk(~Saukk@2001:998:f9:2914:1c59:9bb5:b94c:4) (Remote host closed the connection)
2020-11-29 15:12:20 +0100SupaYoshi(~supayoshi@213-10-140-13.fixed.kpn.net) (Quit: Goodbye!)
2020-11-29 15:12:29 +0100vg(~vg@139.59.59.230) (Quit: vg)
2020-11-29 15:12:57 +0100vg(~vg@139.59.59.230)
2020-11-29 15:13:00 +0100elfets(~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de)
2020-11-29 15:13:01 +0100SupaYoshi(~supayoshi@213-10-140-13.fixed.kpn.net)
2020-11-29 15:14:13 +0100contiver(~contiver@84-115-64-11.wifi.dynamic.surfer.at)
2020-11-29 15:14:36 +0100 <delbmuts_> dminuoso: I'll need some time to digest that. Thank you! :)
2020-11-29 15:15:20 +0100berberman(~berberman@unaffiliated/berberman)
2020-11-29 15:15:39 +0100berberman_(~berberman@unaffiliated/berberman) (Ping timeout: 272 seconds)
2020-11-29 15:16:03 +0100SupaYoshi(~supayoshi@213-10-140-13.fixed.kpn.net) (Client Quit)
2020-11-29 15:16:51 +0100hackagehnix-store-core 0.3.0.0 - Core effects for interacting with the Nix store. https://hackage.haskell.org/package/hnix-store-core-0.3.0.0 (imalsogreg)
2020-11-29 15:18:07 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
2020-11-29 15:20:50 +0100 <avdb> Sorry if this is a stupid question, but what's the best resource to understand Monads? I read the Haskell Wiki article on how it works and checked Computerphile's video on it but I don't think I fully get it yet.
2020-11-29 15:22:05 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 240 seconds)
2020-11-29 15:23:31 +0100AlterEgo-(~ladew@124-198-158-163.dynamic.caiway.nl) (Ping timeout: 256 seconds)
2020-11-29 15:23:44 +0100wonko7(~wonko7@2a01:e35:2ffb:7040:55f1:c3a3:cdbe:bf52)
2020-11-29 15:26:31 +0100 <ski> delbmuts_ : `transPipe trans' can't possibly work, with that signature of `trans'
2020-11-29 15:27:08 +0100 <[exa]> avdb: you actually hit the most problematic problem of monads, explaining them is problematic. it's only going to be better now. :D
2020-11-29 15:27:23 +0100 <[exa]> avdb: anyway, what did you try so far
2020-11-29 15:27:25 +0100 <ski> oh, actually, it can .. sorry, i misread
2020-11-29 15:27:51 +0100hackagehnix-store-core 0.3.0.1 - Core effects for interacting with the Nix store. https://hackage.haskell.org/package/hnix-store-core-0.3.0.1 (imalsogreg)
2020-11-29 15:28:10 +0100erisco(~erisco@d24-57-249-233.home.cgocable.net)
2020-11-29 15:30:22 +0100 <[exa]> avdb: one thing that helps (with practical intuition) is to checkout the "monad DSLs" like IO. Get how the `IO ()` in types work, try to explain the differences between say "map vs mapM" and "if vs when" etc, and looking how the thing is constructed from >>= and >> using the 'do' notation.
2020-11-29 15:31:20 +0100hackagehnix-store-remote 0.3.0.0 - Remote hnix store https://hackage.haskell.org/package/hnix-store-remote-0.3.0.0 (srk)
2020-11-29 15:32:24 +0100 <[exa]> avdb: and then there's the technical path, going from Functor (and fmap) to Applicative (with pure + <*>), where the jump to Monad (with >>=) becomes quite natural
2020-11-29 15:32:25 +0100awk(~mnrmnaugh@unaffiliated/mnrmnaugh)
2020-11-29 15:33:56 +0100hpc(~juzz@ip98-169-35-13.dc.dc.cox.net) (Ping timeout: 240 seconds)
2020-11-29 15:34:40 +0100 <Sose> avdb: I'm at the point where I'm starting to slowly "get them"... reading about monads didn't really help me at all in the beginning. it was doing exercises and writing functor/applicative/monad instances and using them that started the process of having some understanding of them. I don't know what's the general opinion on http://mightybyte.github.io/monad-challenges/ as a resource but I found it quite enlightening
2020-11-29 15:34:40 +0100 <Sose> personally. no reading, just code exercises and some tips to guide you.. after doing those reading about monads makes more sense also
2020-11-29 15:37:22 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-11-29 15:37:42 +0100wei2912(~wei2912@unaffiliated/wei2912) (Remote host closed the connection)
2020-11-29 15:38:15 +0100contiver(~contiver@84-115-64-11.wifi.dynamic.surfer.at) (Ping timeout: 256 seconds)
2020-11-29 15:38:51 +0100ralu(~ralu@static.211.245.203.116.clients.your-server.de)
2020-11-29 15:39:18 +0100darjeeling_(~darjeelin@122.245.217.23) (Ping timeout: 260 seconds)
2020-11-29 15:40:14 +0100Cotillion(~Cotillion@185.163.110.116)
2020-11-29 15:40:52 +0100 <avdb> [exa]: I found a blog that used pictures to explain Functors (Maybe, Just, Nothing, etc.) a while ago, but stopped because I thought they had nothing to do with monads
2020-11-29 15:40:58 +0100Franciman(~francesco@host-82-54-193-143.retail.telecomitalia.it) (Ping timeout: 246 seconds)
2020-11-29 15:41:26 +0100 <avdb> Sose: After that I tried a tutorial that constructed Monad but the code was outdated :(
2020-11-29 15:42:13 +0100ambidextrose(~fut-learn@mobile-166-171-122-170.mycingular.net)
2020-11-29 15:42:58 +0100hpc(~juzz@ip98-169-35-13.dc.dc.cox.net)
2020-11-29 15:43:24 +0100da39a3ee5e6b4b0d(~da39a3ee5@171.5.161.165)
2020-11-29 15:43:38 +0100sondr3(~sondr3@cm-84.211.56.132.getinternet.no)
2020-11-29 15:44:57 +0100mputz(~Thunderbi@dslb-084-058-211-084.084.058.pools.vodafone-ip.de)
2020-11-29 15:49:18 +0100 <ambidextrose> what's the best haskell book to read for someone who really does not understand all the type system notation?
2020-11-29 15:50:12 +0100 <avdb> ambidextrose: I'm currently reading "Haskell: Programming from first principles" ...
2020-11-29 15:50:40 +0100 <avdb> I tried "Real World Haskell" as well but it was a disaster since it throws you directly into the pool without warning
2020-11-29 15:50:41 +0100 <erisco> if you literally just want to know about the notation there is the haskell report 2010 and the ghc user guide
2020-11-29 15:50:44 +0100 <ambidextrose> avdb, i looked at that one, it seemed good
2020-11-29 15:50:54 +0100 <ambidextrose> erisco, i might try those two
2020-11-29 15:51:23 +0100geekosaur(ae68c070@cpe-174-104-192-112.neo.res.rr.com)
2020-11-29 15:52:38 +0100LKoen(~LKoen@169.244.88.92.rev.sfr.net) (Remote host closed the connection)
2020-11-29 15:52:41 +0100 <sondr3> We used Programming in Haskell for our FP course at Uni (https://www.cs.nott.ac.uk/~pszgmh/pih.html), and I really enjoyed it. One of my favorite programming books
2020-11-29 15:52:57 +0100darjeeling_(~darjeelin@115.215.41.204)
2020-11-29 15:52:58 +0100 <ski> PIH is often recommended/lauded in here
2020-11-29 15:53:06 +0100vg(~vg@139.59.59.230) (Quit: vg)
2020-11-29 15:53:15 +0100 <sondr3> Short and to the point, builds up gradually and has tons of exercises that really help you grasp concepts
2020-11-29 15:53:21 +0100 <sondr3> I can imagine :)
2020-11-29 15:53:22 +0100vg(~vg@139.59.59.230)
2020-11-29 15:53:34 +0100vg(~vg@139.59.59.230) (Remote host closed the connection)
2020-11-29 15:53:47 +0100vg(~vg@139.59.59.230)
2020-11-29 15:54:24 +0100 <tomjaguarpaw> Is there a version of trace that doesn't update its thunk once it is evaluated? I would like to use such a thing to probe properties of various containers.
2020-11-29 15:55:04 +0100 <avdb> sondr3: Is that the university of Computerphile?
2020-11-29 15:55:19 +0100 <ambidextrose> sondr3, i might look at that one too
2020-11-29 15:55:36 +0100 <Uniaika> tomjaguarpaw: not that I know of
2020-11-29 15:55:50 +0100 <sondr3> avdb: Yeah, the author of the book is in quite a few of their videos
2020-11-29 15:56:00 +0100ambidextrosewishes he'd done his research project in 2015 in haskell and not python
2020-11-29 15:56:10 +0100 <tomjaguarpaw> ambidextrose: Don't we all?
2020-11-29 15:56:41 +0100 <ambidextrose> i've been trying to learn haskell for 10 years just by reading other peoples' code from time to time and enough is enough. i've seen what the RTS can do, it's pretty insane
2020-11-29 15:56:52 +0100 <ambidextrose> i'm going to stop writing in anything else
2020-11-29 15:58:43 +0100 <ambidextrose> also decided to try switching to archlinux since my research system had a virus in systemd
2020-11-29 15:59:10 +0100 <sondr3> That's a new one, fair warning; Haskell on Arch is somewhat painful
2020-11-29 15:59:16 +0100 <geekosaur> arch + haskell = pain though; at least, avoid arch's haskell packages
2020-11-29 15:59:21 +0100ziman(~ziman@c25-5.condornet.sk) (Ping timeout: 272 seconds)
2020-11-29 15:59:23 +0100 <ambidextrose> i think i'm going to switch to something that uses sysvinit... i can't understand the attitude of arch users
2020-11-29 15:59:39 +0100 <ambidextrose> systemd is awful: every ubuntu i have has viruses in systemd
2020-11-29 15:59:52 +0100JJ15(~JJ@94.197.17.236.threembb.co.uk) (Ping timeout: 246 seconds)
2020-11-29 16:00:00 +0100 <sondr3> Void Linux was really nice when I used it but NixOS is awesome
2020-11-29 16:00:17 +0100 <ambidextrose> everyone's using nix but tbh i think the idea skirts the real issue of package management and language design
2020-11-29 16:00:49 +0100 <ambidextrose> something like hoogle/agda could be checking/proving/downloading types instead of cabal, hackage, or nix
2020-11-29 16:01:01 +0100 <ambidextrose> the type system could do the work of package management
2020-11-29 16:01:39 +0100 <sondr3> No idea how a type system would be able to do dependency resolution :P
2020-11-29 16:02:25 +0100maerwald(~maerwald@mail.hasufell.de) (Quit: gone)
2020-11-29 16:04:19 +0100da39a3ee5e6b4b0d(~da39a3ee5@171.5.161.165) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-11-29 16:04:34 +0100 <sondr3> Unrelatec, I'm parsing different kinds of numbers with megaparsec, is there a way to do this `(try (lexeme pComplex) <|> try (lexeme pRational) <|> try (lexeme pDouble) <|> try (lexeme integer)` with less repetition?
2020-11-29 16:04:53 +0100knupfer(~Thunderbi@i5E86B463.versanet.de) (Ping timeout: 256 seconds)
2020-11-29 16:05:03 +0100maerwald(~maerwald@5.45.98.221)
2020-11-29 16:05:10 +0100 <ambidextrose> sondr3, the types are the dependencies
2020-11-29 16:05:20 +0100da39a3ee5e6b4b0d(~da39a3ee5@171.5.161.165)
2020-11-29 16:06:06 +0100da39a3ee5e6b4b0d(~da39a3ee5@171.5.161.165) (Client Quit)
2020-11-29 16:06:18 +0100 <xerox_> :t asum
2020-11-29 16:06:20 +0100 <lambdabot> (Foldable t, Alternative f) => t (f a) -> f a
2020-11-29 16:07:21 +0100hackageurbit-api 0.2.0.0 - Talk to Urbit from Haskell https://hackage.haskell.org/package/urbit-api-0.2.0.0 (bsima)
2020-11-29 16:08:19 +0100 <xerox_> asum . map (try . lexeme)
2020-11-29 16:08:34 +0100Entertainment(~entertain@104.246.132.210)
2020-11-29 16:08:52 +0100Chi1thangoo(~Chi1thang@87.112.60.168)
2020-11-29 16:11:05 +0100 <sondr3> xerox_: thanks, much better
2020-11-29 16:11:19 +0100 <xerox_> 👍
2020-11-29 16:11:32 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2020-11-29 16:12:25 +0100adm(~adm@117.223.63.167) (Remote host closed the connection)
2020-11-29 16:14:19 +0100Entertainment(~entertain@104.246.132.210) ()
2020-11-29 16:16:49 +0100adm(~adm@117.223.63.167)
2020-11-29 16:17:08 +0100ambidextrose(~fut-learn@mobile-166-171-122-170.mycingular.net) (Quit: leaving)
2020-11-29 16:18:13 +0100Wamanuz(~wamanuz@78-70-34-81-no84.tbcn.telia.com) (Remote host closed the connection)
2020-11-29 16:18:41 +0100 <[exa]> avdb: oh well, the functor hierarchy... technically "Functors" are kindof overloaded containers ("boxes") that have a clearly defined way of transforming the elements inside, with `fmap`. (e.g. list is a functor, using normal `map`). Then you add functionality -- Applicative allows you to reasonably merge a box of functions with a box of parameters (to get a box of results). Monads additionally allow
2020-11-29 16:18:47 +0100 <[exa]> fusing boxes with functions that produce more boxes from their contents. Demonstration:
2020-11-29 16:23:20 +0100SupaYoshi(~supayoshi@213-10-140-13.fixed.kpn.net)
2020-11-29 16:24:21 +0100petersen(~petersen@redhat/juhp) (Ping timeout: 265 seconds)
2020-11-29 16:24:57 +0100oatsgrogu
2020-11-29 16:25:48 +0100 <[exa]> (I'm writing a gist, decided that I'm telling this to so many people that gist shall help)
2020-11-29 16:26:27 +0100 <avdb> How do I match calling a function without arguments with guards?
2020-11-29 16:26:53 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-11-29 16:27:06 +0100 <Rembane> avdb: f | ... = ...
2020-11-29 16:27:09 +0100 <avdb> i.e. if I have foobar x and somebody calls foobar without arguments I want to return something
2020-11-29 16:27:16 +0100 <Rembane> avdb: foobar x | ... = ...
2020-11-29 16:27:24 +0100urek__(~urek@2804:7f1:e10a:5ac1:8db3:3757:9c7d:4898)
2020-11-29 16:27:26 +0100 <Rembane> avdb: Wait a minute, without arguments?
2020-11-29 16:27:26 +0100 <avdb> Rembane: Three dots?
2020-11-29 16:27:29 +0100 <avdb> Yes
2020-11-29 16:27:36 +0100oish(~charlie@228.25.169.217.in-addr.arpa) (Ping timeout: 240 seconds)
2020-11-29 16:27:36 +0100 <Rembane> avdb: Why would they do that? And what's the type of x?
2020-11-29 16:27:43 +0100 <avdb> [Char]
2020-11-29 16:28:01 +0100 <Rembane> avdb: They can give you the empty string as argument.
2020-11-29 16:28:08 +0100 <avdb> null x didn't work
2020-11-29 16:28:22 +0100 <Rembane> avdb: foobar "" = error "You have given me the empty string."
2020-11-29 16:28:33 +0100 <avdb> Oh wait I see why
2020-11-29 16:28:36 +0100 <avdb> Nvm
2020-11-29 16:28:40 +0100 <Rembane> No worries, good luck!
2020-11-29 16:28:47 +0100 <geekosaur> avdb, you can't do that trivially. There's a typeclass hack that can sort of do it, but you're trying to defeat partial application which is deeply baked into Haskell
2020-11-29 16:29:07 +0100urek(~urek@2804:7f1:e10a:5ac1:558c:16f8:858a:ffa6) (Ping timeout: 272 seconds)
2020-11-29 16:29:39 +0100 <merijn> hmm
2020-11-29 16:29:52 +0100 <merijn> Publishing new docs to Hackage doesn't seem to override the current ones?
2020-11-29 16:31:52 +0100groguoats
2020-11-29 16:32:29 +0100contiver(~contiver@84-115-64-36.wifi.dynamic.surfer.at)
2020-11-29 16:33:58 +0100 <erisco> my string is empty; my stack has overflow'n; my core has been dumped
2020-11-29 16:36:19 +0100 <avdb> geekosaur: Nevermind, the problem is with running last x on an empty list, is there a safer alternative function?
2020-11-29 16:38:02 +0100 <hpc> not really - the best you can do is do something that doesn't require getting the last element of a list
2020-11-29 16:38:28 +0100 <hpc> or write something that's [a] -> Maybe a
2020-11-29 16:38:37 +0100cole-h(~cole-h@c-73-48-197-220.hsd1.ca.comcast.net)
2020-11-29 16:38:54 +0100 <hpc> (and then still have to figure out what to do with Nothing)
2020-11-29 16:42:36 +0100 <avdb> Sigh, fixed it by reordering the guards instead of making my fuctions safer.
2020-11-29 16:42:55 +0100LKoen(~LKoen@169.244.88.92.rev.sfr.net)
2020-11-29 16:43:07 +0100Tario(~Tario@201.192.165.173)
2020-11-29 16:43:22 +0100 <erisco> > let f = getLast . foldMap (Last . Just) in (f [1,2,3], f [])
2020-11-29 16:43:25 +0100 <lambdabot> (Just 3,Nothing)
2020-11-29 16:43:31 +0100 <erisco> I am sure there is some lens shenanigans
2020-11-29 16:44:06 +0100vg(~vg@139.59.59.230) (Quit: vg)
2020-11-29 16:44:20 +0100vg(~vg@139.59.59.230)
2020-11-29 16:44:28 +0100 <erisco> avdb, imo that is the wrong kind of safeness
2020-11-29 16:44:36 +0100vg(~vg@139.59.59.230) (Remote host closed the connection)
2020-11-29 16:44:50 +0100vg(~vg@139.59.59.230)
2020-11-29 16:44:52 +0100mputz(~Thunderbi@dslb-084-058-211-084.084.058.pools.vodafone-ip.de) (Quit: mputz)
2020-11-29 16:45:10 +0100 <erisco> there is a sort of security safeness of what happens if there is a bug in the program
2020-11-29 16:45:27 +0100 <avdb> erisco: Wdym? I'm currently trying to test my work with stack but every time I run "stack test" in a different folder it starts installing ghc-tinfo6
2020-11-29 16:45:30 +0100 <erisco> but that is already taken care of
2020-11-29 16:46:02 +0100 <avdb> erisco: It's actually the base case, testing if the string was empty before proceeding, so that I can't run into problems with last
2020-11-29 16:46:43 +0100 <erisco> > let f = alaf Last foldMap Just in (f [1,2,3], f [])
2020-11-29 16:46:45 +0100 <lambdabot> (Just 3,Nothing)
2020-11-29 16:47:18 +0100mputz(~Thunderbi@dslb-084-058-211-084.084.058.pools.vodafone-ip.de)
2020-11-29 16:47:19 +0100 <avdb> What?
2020-11-29 16:47:50 +0100Tario(~Tario@201.192.165.173) (Read error: Connection reset by peer)
2020-11-29 16:48:47 +0100 <merijn> :t Last
2020-11-29 16:48:49 +0100 <lambdabot> Maybe a -> Last a
2020-11-29 16:48:49 +0100 <erisco> I made some inferences of what you meant by "make my functions safer"... perhaps too much of a leap
2020-11-29 16:49:05 +0100 <merijn> erisco: Seems less confusing to avoid alaf :p
2020-11-29 16:49:13 +0100 <merijn> :t foldMap (Last . Just)
2020-11-29 16:49:15 +0100 <lambdabot> Foldable t => t a -> Last a
2020-11-29 16:49:24 +0100 <merijn> > foldMap (Last . Just) []
2020-11-29 16:49:27 +0100 <lambdabot> Last {getLast = Nothing}
2020-11-29 16:49:31 +0100 <avdb> I can't use Functors yet
2020-11-29 16:49:33 +0100 <erisco> I am pointing out that "safety" from a memory security standpoint is already a nonissue here
2020-11-29 16:49:34 +0100 <merijn> > foldMap (Last . Just) [1..5]
2020-11-29 16:49:36 +0100 <lambdabot> Last {getLast = Just 5}
2020-11-29 16:50:26 +0100wonko7(~wonko7@2a01:e35:2ffb:7040:55f1:c3a3:cdbe:bf52) (Ping timeout: 264 seconds)
2020-11-29 16:50:27 +0100 <erisco> and if the point is to be arbitrarily defined for empty lists regardless of whether it makes sense or not, that isn't really an admirable notion either, in my opinion
2020-11-29 16:51:14 +0100mputz(~Thunderbi@dslb-084-058-211-084.084.058.pools.vodafone-ip.de) (Client Quit)
2020-11-29 16:51:20 +0100 <erisco> avdb, no functors required… my first example uses Foldable and the second uses Foldable dressed up with lens
2020-11-29 16:52:12 +0100 <erisco> > foldMap f [a,b,c]
2020-11-29 16:52:14 +0100 <lambdabot> error:
2020-11-29 16:52:14 +0100 <lambdabot> • Ambiguous type variable ‘a0’ arising from a use of ‘show_M195412351796...
2020-11-29 16:52:14 +0100 <lambdabot> prevents the constraint ‘(Show a0)’ from being solved.
2020-11-29 16:52:40 +0100 <erisco> hm, well anyways you can think of it as f a <> f b <> f c
2020-11-29 16:53:09 +0100 <erisco> then you just have to figure what Monoid can give you the result you're after, in this case Last
2020-11-29 16:53:57 +0100 <erisco> > foldMap f [a,b,c] :: Expr
2020-11-29 16:54:00 +0100 <lambdabot> f a <> f b <> f c <> mempty
2020-11-29 16:54:15 +0100jamm_(~jamm@unaffiliated/jamm)
2020-11-29 16:55:29 +0100sorki(~sorki@gateway/tor-sasl/sorki)
2020-11-29 16:56:21 +0100hackagexcffib 0.11.1 - A cffi-based python binding for X https://hackage.haskell.org/package/xcffib-0.11.1 (TychoAndersen)
2020-11-29 16:56:24 +0100sorki(~sorki@gateway/tor-sasl/sorki) (Remote host closed the connection)
2020-11-29 16:57:39 +0100 <erisco> can also go through Alternative
2020-11-29 16:58:23 +0100sorki(~sorki@gateway/tor-sasl/sorki)
2020-11-29 16:58:51 +0100 <erisco> > let f = foldr (flip(<|>).pure) empty in [f [1,2,3], f []] :: [Maybe Int]
2020-11-29 16:58:53 +0100 <lambdabot> [Just 3,Nothing]
2020-11-29 16:58:57 +0100jamm_(~jamm@unaffiliated/jamm) (Ping timeout: 260 seconds)
2020-11-29 16:59:10 +0100 <erisco> > let f = foldl (flip((<|>).pure)) empty in [f [1,2,3], f []] :: [Maybe Int]
2020-11-29 16:59:12 +0100 <lambdabot> [Just 3,Nothing]
2020-11-29 17:00:43 +0100 <erisco> not sure what the cuter formulations of that are
2020-11-29 17:01:21 +0100boxscape(54a35f37@gateway/web/cgi-irc/kiwiirc.com/ip.84.163.95.55)
2020-11-29 17:02:18 +0100hekkaidekapus_(~tchouri@gateway/tor-sasl/hekkaidekapus) (Remote host closed the connection)
2020-11-29 17:02:31 +0100 <fendor> If I want to show some students how to write a rest service, which library is a good start? I would currently just go with servant and the servant cookbook, as I think the latter is a really helpful resource
2020-11-29 17:02:33 +0100 <boxscape> hmm `(forall a . P a -> Q a, forall a . Q a -> P a)` is equivalent to `forall a . (P a -> Q a, Q a -> P a)`, right?
2020-11-29 17:02:50 +0100hekkaidekapus_(~tchouri@gateway/tor-sasl/hekkaidekapus)
2020-11-29 17:03:28 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2020-11-29 17:04:42 +0100ziman(~ziman@c25-5.condornet.sk)
2020-11-29 17:05:06 +0100jonatanb(~jonatanb@83.24.220.252.ipv4.supernova.orange.pl)
2020-11-29 17:05:12 +0100 <maerwald> fendor: I don't think servant is a good start
2020-11-29 17:05:37 +0100 <maerwald> if those aren't advanced haskellers at least
2020-11-29 17:05:46 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2020-11-29 17:06:18 +0100 <fendor> two months course so far. So, no, they are not
2020-11-29 17:06:29 +0100 <maerwald> then I'd pick snap or scotty
2020-11-29 17:07:02 +0100 <fendor> snap really confuses me... I always found servant to be simpler than snap, as you can just copy examples
2020-11-29 17:07:15 +0100 <fendor> scotty seems like a great idea though
2020-11-29 17:08:25 +0100IamfromSpace(617897dd@97-120-151-221.ptld.qwest.net)
2020-11-29 17:09:46 +0100jonatanb(~jonatanb@83.24.220.252.ipv4.supernova.orange.pl) (Ping timeout: 272 seconds)
2020-11-29 17:11:02 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 272 seconds)
2020-11-29 17:15:17 +0100kupi(uid212005@gateway/web/irccloud.com/x-fqbnyydqsnaerben)
2020-11-29 17:15:17 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2020-11-29 17:15:31 +0100colby(~colby@cpe-24-208-40-120.new.res.rr.com)
2020-11-29 17:15:37 +0100colbycjenn
2020-11-29 17:16:06 +0100contiver(~contiver@84-115-64-36.wifi.dynamic.surfer.at) (Ping timeout: 272 seconds)
2020-11-29 17:16:33 +0100Franciman(~francesco@host-82-54-193-143.retail.telecomitalia.it)
2020-11-29 17:18:23 +0100Tario(~Tario@201.192.165.173)
2020-11-29 17:18:31 +0100 <tomjaguarpaw> Is there a version of $! that is infixl 9, so it more closely matches function application?
2020-11-29 17:24:33 +0100 <boxscape> this seems kind of weird http://ix.io/2FWN
2020-11-29 17:24:34 +0100 <boxscape> to be fair it's using ImpredicativeTypes, for all I know it might be different with quick look impredicativity
2020-11-29 17:25:09 +0100 <boxscape> or maybe it actually makes perfect sense if you think about it, I'm not really sure yet
2020-11-29 17:25:31 +0100IamfromSpace(617897dd@97-120-151-221.ptld.qwest.net) (Remote host closed the connection)
2020-11-29 17:26:11 +0100solonarv(~solonarv@anancy-651-1-197-136.w109-217.abo.wanadoo.fr)
2020-11-29 17:29:22 +0100vg(~vg@139.59.59.230) (Quit: vg)
2020-11-29 17:29:46 +0100vg(~vg@139.59.59.230)
2020-11-29 17:31:05 +0100cosimone(~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd)
2020-11-29 17:31:32 +0100sorki(~sorki@gateway/tor-sasl/sorki) (Remote host closed the connection)
2020-11-29 17:32:04 +0100JJ15(~JJ@94.197.17.236.threembb.co.uk)
2020-11-29 17:33:15 +0100cosimone(~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd) (Client Quit)
2020-11-29 17:33:54 +0100sorki(~sorki@gateway/tor-sasl/sorki)
2020-11-29 17:34:33 +0100texasmynsted(~texasmyns@212.102.45.106)
2020-11-29 17:34:46 +0100vg(~vg@139.59.59.230) (Ping timeout: 256 seconds)
2020-11-29 17:36:39 +0100 <delbmuts_> Now it compiles, but does not work as I would expect, i.e., the servant endpoint does not output the state. Still, progress. :) https://paste.debian.net/hidden/70b56d6e
2020-11-29 17:37:07 +0100 <delbmuts_> s ki: thanks for having a look
2020-11-29 17:38:33 +0100LKoen(~LKoen@169.244.88.92.rev.sfr.net) (Remote host closed the connection)
2020-11-29 17:38:41 +0100bitmapper(uid464869@gateway/web/irccloud.com/x-jnheqdjklwmeetne) (Quit: Connection closed for inactivity)
2020-11-29 17:39:28 +0100 <delbmuts_> dminuoso: TBH, I don't get how to use `trans'` (`flip runReaderT ($)`) in above code.
2020-11-29 17:41:35 +0100 <merijn> boxscape: "Doesn't work with ImpredicativeTypes" in any GHC pre 9.0
2020-11-29 17:41:51 +0100 <merijn> boxscape: ImpredicativeTypes is "not even broken" in any older GHCs
2020-11-29 17:42:04 +0100 <boxscape> hm, okay
2020-11-29 17:42:19 +0100Tario(~Tario@201.192.165.173) (Read error: Connection reset by peer)
2020-11-29 17:42:25 +0100 <boxscape> so you would expect it to compile with a working version of IP?
2020-11-29 17:42:28 +0100 <boxscape> uh
2020-11-29 17:42:29 +0100 <boxscape> IT
2020-11-29 17:43:22 +0100 <merijn> boxscape: GHC 9.0 (or is it 9.2?) will have a redone version of ImpredicativeTypes that has, you know, some actual defined semantics
2020-11-29 17:43:33 +0100Sheilong(uid293653@gateway/web/irccloud.com/x-ubahtloahdzifjhq)
2020-11-29 17:44:46 +0100 <boxscape> looks like it's been merged into master
2020-11-29 17:45:18 +0100Wamanuz(~wamanuz@78-70-34-81-no84.tbcn.telia.com)
2020-11-29 17:45:28 +0100conal(~conal@64.71.133.70)
2020-11-29 17:46:17 +0100jonatanb(~jonatanb@83.24.220.252.ipv4.supernova.orange.pl)
2020-11-29 17:47:36 +0100cosimone(~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd)
2020-11-29 17:47:47 +0100 <dminuoso> delbmuts_: That should be ($a) for some choice of a.
2020-11-29 17:48:17 +0100 <dminuoso> err sorry
2020-11-29 17:48:23 +0100 <dminuoso> just `flip runReaderT a`
2020-11-29 17:48:45 +0100JJ15(~JJ@94.197.17.236.threembb.co.uk) (Read error: Connection reset by peer)
2020-11-29 17:49:06 +0100JJ15(~JJ@94.197.17.236.threembb.co.uk)
2020-11-29 17:49:41 +0100dxld(~dxld@80-109-136-248.cable.dynamic.surfer.at) (Remote host closed the connection)
2020-11-29 17:49:43 +0100cole-h(~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) (Ping timeout: 256 seconds)
2020-11-29 17:49:55 +0100LKoen(~LKoen@169.244.88.92.rev.sfr.net)
2020-11-29 17:50:07 +0100conal(~conal@64.71.133.70) (Ping timeout: 246 seconds)
2020-11-29 17:50:41 +0100cads(~cads@ip-64-72-99-232.lasvegas.net)
2020-11-29 17:51:07 +0100fendor_(~fendor@91.141.2.60.wireless.dyn.drei.com)
2020-11-29 17:51:08 +0100jonatanb(~jonatanb@83.24.220.252.ipv4.supernova.orange.pl) (Ping timeout: 260 seconds)
2020-11-29 17:51:11 +0100SupaYoshi(~supayoshi@213-10-140-13.fixed.kpn.net) (Quit: Goodbye!)
2020-11-29 17:52:17 +0100reaverb(~reaverb@071-008-105-088.res.spectrum.com)
2020-11-29 17:53:11 +0100juuandyy(~juuandyy@90.166.144.65)
2020-11-29 17:53:20 +0100SupaYoshi(~supayoshi@213-10-140-13.fixed.kpn.net)
2020-11-29 17:54:06 +0100fendor(~fendor@178.115.128.128.wireless.dyn.drei.com) (Ping timeout: 272 seconds)
2020-11-29 17:56:06 +0100fendor_fendor
2020-11-29 17:56:58 +0100hololeap(~hololeap@unaffiliated/hololeap) (Ping timeout: 260 seconds)
2020-11-29 17:59:19 +0100SupaYoshi(~supayoshi@213-10-140-13.fixed.kpn.net) (Read error: Connection reset by peer)
2020-11-29 17:59:21 +0100SupaYoshii(~supayoshi@213-10-140-13.fixed.kpn.net)
2020-11-29 18:01:28 +0100geowiesnot(~user@87-89-181-157.abo.bbox.fr) (Ping timeout: 256 seconds)
2020-11-29 18:01:57 +0100Tario(~Tario@201.192.165.173)
2020-11-29 18:04:24 +0100cosimone(~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd) (Remote host closed the connection)
2020-11-29 18:04:44 +0100ephemient(uid407513@gateway/web/irccloud.com/x-pfymqtqxpsoxkvkd)
2020-11-29 18:04:45 +0100cosimone(~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd)
2020-11-29 18:04:57 +0100polyphem(~p0lyph3m@2a02:810d:640:776c:76d7:55f6:f85b:c889)
2020-11-29 18:08:08 +0100philopsos(~caecilius@gateway/tor-sasl/caecilius)
2020-11-29 18:10:41 +0100geowiesnot(~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr)
2020-11-29 18:11:35 +0100cosimone(~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd) (Remote host closed the connection)
2020-11-29 18:11:58 +0100cosimone(~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd)
2020-11-29 18:17:51 +0100 <avdb> Is there a way to define a list of all symbols, like you can with [0..9] for all numbers?
2020-11-29 18:18:11 +0100reaverb(~reaverb@071-008-105-088.res.spectrum.com) (Quit: Leaving)
2020-11-29 18:18:38 +0100tabemann(~tabemann@2600:1700:7990:24e0:70d3:975d:bfb3:7240) (Ping timeout: 264 seconds)
2020-11-29 18:18:50 +0100 <Rembane> avdb: [0..] gets you all numbers, but I don't know if that's what you want.
2020-11-29 18:19:02 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 256 seconds)
2020-11-29 18:19:23 +0100 <monochrom> generate all characters, then use isSymbol or something to filter it
2020-11-29 18:22:59 +0100oish(~charlie@228.25.169.217.in-addr.arpa)
2020-11-29 18:23:18 +0100cosimone(~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd) (Remote host closed the connection)
2020-11-29 18:25:54 +0100 <avdb> monochrom: I totally forgot about those functions ...
2020-11-29 18:27:49 +0100oish(~charlie@228.25.169.217.in-addr.arpa) (Ping timeout: 264 seconds)
2020-11-29 18:27:56 +0100oish(~charlie@128.127.104.126)
2020-11-29 18:29:15 +0100alp(~alp@88.126.45.36)
2020-11-29 18:29:21 +0100hackagecsound-expression-dynamic 0.3.6 - dynamic core for csound-expression library https://hackage.haskell.org/package/csound-expression-dynamic-0.3.6 (AntonKholomiov)
2020-11-29 18:30:21 +0100hackagecsound-expression 5.3.4, csound-expression-typed 0.2.4 (AntonKholomiov): https://qbin.io/sussex-head-e181
2020-11-29 18:30:32 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
2020-11-29 18:31:22 +0100george_____t(5c06804c@host-92-6-128-76.as43234.net)
2020-11-29 18:33:22 +0100hackagecsound-expression-opcodes 0.0.5.0 - opcodes for the library csound-expression https://hackage.haskell.org/package/csound-expression-opcodes-0.0.5.0 (AntonKholomiov)
2020-11-29 18:33:27 +0100jonatanb(~jonatanb@83.24.220.252.ipv4.supernova.orange.pl)
2020-11-29 18:33:52 +0100george_____t(5c06804c@host-92-6-128-76.as43234.net) (Remote host closed the connection)
2020-11-29 18:34:52 +0100hackagecsound-sampler 0.0.10.0 - A musical sampler based on Csound https://hackage.haskell.org/package/csound-sampler-0.0.10.0 (AntonKholomiov)
2020-11-29 18:34:53 +0100justsomeguy(~justsomeg@unaffiliated/--/x-3805311) ()
2020-11-29 18:35:13 +0100 <delbmuts_> Looks like my test client wasn't working as I'd expected. :) https://paste.debian.net/hidden/1de4954a/ Thanks all.
2020-11-29 18:35:52 +0100hackagecsound-catalog 0.7.4 - a gallery of Csound instruments. https://hackage.haskell.org/package/csound-catalog-0.7.4 (AntonKholomiov)
2020-11-29 18:36:51 +0100hackagecsound-controllers 0.1.1.0 - https://hackage.haskell.org/package/csound-controllers-0.1.1.0 (AntonKholomiov)
2020-11-29 18:40:07 +0100jonatanb(~jonatanb@83.24.220.252.ipv4.supernova.orange.pl) (Remote host closed the connection)
2020-11-29 18:40:56 +0100 <Squarism> Has anyone managed to set up an editor that handles basic type inspection? If so, what editor / approach have you been using?
2020-11-29 18:40:56 +0100triteraflops(~triterafl@host-208-96-90-136.public.eastlink.ca) (Read error: Connection reset by peer)
2020-11-29 18:41:34 +0100triteraflops(~triterafl@host-208-96-90-136.public.eastlink.ca)
2020-11-29 18:42:15 +0100avdb(~avdb@ip-81-11-215-86.dsl.scarlet.be) (Read error: Connection reset by peer)
2020-11-29 18:42:38 +0100hekkaidekapus_hekkaidekapus
2020-11-29 18:42:59 +0100juuandyy(~juuandyy@90.166.144.65) (Ping timeout: 256 seconds)
2020-11-29 18:43:16 +0100avdb(~avdb@ip-81-11-215-86.dsl.scarlet.be)
2020-11-29 18:43:22 +0100 <hekkaidekapus> boxscape: Indeed, it is already merged. For your example, the error is much better: <https://paste.tomsmeding.com/2KUFPpym>.
2020-11-29 18:44:32 +0100 <hekkaidekapus> And from the proposal: “[impredicative instantiation] never looks at abstractions, pattern matching, lets, or any other expression.”
2020-11-29 18:45:40 +0100nf(~n@monade.li) (Quit: Fairfarren.)
2020-11-29 18:45:44 +0100knupfer(~Thunderbi@200116b82c7f8800788807fffea80bcf.dip.versatel-1u1.de)
2020-11-29 18:46:08 +0100knupfer(~Thunderbi@200116b82c7f8800788807fffea80bcf.dip.versatel-1u1.de) (Remote host closed the connection)
2020-11-29 18:46:17 +0100knupfer(~Thunderbi@200116b82c7f8800d55fa997137c91a1.dip.versatel-1u1.de)
2020-11-29 18:47:52 +0100jrqc(~rofl@96.78.87.197) (Ping timeout: 256 seconds)
2020-11-29 18:48:03 +0100philopsos(~caecilius@gateway/tor-sasl/caecilius) (Ping timeout: 240 seconds)
2020-11-29 18:48:33 +0100jrqc(~rofl@96.78.87.197)
2020-11-29 18:48:38 +0100conal(~conal@64.71.133.70)
2020-11-29 18:49:07 +0100conal(~conal@64.71.133.70) (Client Quit)
2020-11-29 18:49:22 +0100jespada(~jespada@90.254.245.49)
2020-11-29 18:49:53 +0100philopsos(~caecilius@gateway/tor-sasl/caecilius)
2020-11-29 18:50:49 +0100shangxiao(~davids@101.181.159.140) (Quit: WeeChat 3.0)
2020-11-29 18:50:52 +0100vfaronov(~vfaronov@broadband-95-84-210-78.ip.moscow.rt.ru)
2020-11-29 18:52:28 +0100juuandyy(~juuandyy@90.166.144.65)
2020-11-29 18:54:39 +0100 <shapr> Squarism: do you mean the Haskell language server?
2020-11-29 18:54:56 +0100jil(~user@45.86.162.6)
2020-11-29 18:54:58 +0100 <jil> hello
2020-11-29 18:55:04 +0100 <shapr> Squarism: I have this setup for emacs and it's great! https://github.com/haskell/haskell-language-server
2020-11-29 18:55:06 +0100 <shapr> hi jil
2020-11-29 18:56:20 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2020-11-29 18:56:56 +0100Jeanne-Kamikaze(~Jeanne-Ka@iakosalt-94.nationalnet.com)
2020-11-29 18:57:24 +0100 <jil> I'm still learning the basic of haskell and I run into this error that I don't undestand. Why is the simple function not working ? https://dpaste.org/nwxq
2020-11-29 18:58:09 +0100 <shapr> :t foldr (+) 0
2020-11-29 18:58:10 +0100 <lambdabot> (Foldable t, Num b) => t b -> b
2020-11-29 18:58:29 +0100renzhi(~renzhi@2607:fa49:655f:e600::28da)
2020-11-29 18:58:33 +0100 <dolio> You gave it 1 where it expected a list.
2020-11-29 18:58:35 +0100 <shapr> jil: how would you read the type of the function you pasted?
2020-11-29 18:58:47 +0100 <dolio> And also gave it too many arguments.
2020-11-29 18:58:55 +0100 <shapr> jil: How would you explain this? fsum :: Num a => [a] -> a
2020-11-29 18:59:45 +0100 <jil> ok, I'm still confused about passing argument as list. Thank you.
2020-11-29 19:00:14 +0100mcginleyr1(uid475794@gateway/web/irccloud.com/x-osmqhtuhvgdcdnxg)
2020-11-29 19:00:26 +0100 <monochrom> That's no different from writing any list in any context.
2020-11-29 19:00:37 +0100 <jil> shapr that means that for all numerical type a fsum expect a list of a and returns an object of type a
2020-11-29 19:00:55 +0100 <solonarv> '1 2' isn't a list, it's just two integer literals
2020-11-29 19:01:01 +0100 <solonarv> do you know how to write a list?
2020-11-29 19:01:13 +0100 <jil> [1 2] ?
2020-11-29 19:01:15 +0100 <shapr> jil: yeah, what solonarv said, how would you write a list?
2020-11-29 19:01:19 +0100 <shapr> yes, that's a list
2020-11-29 19:01:33 +0100 <shapr> but you need a comma between the elements
2020-11-29 19:01:48 +0100 <jil> [1,2] then.
2020-11-29 19:02:03 +0100 <jil> or (1:(2:[]))
2020-11-29 19:02:15 +0100 <shapr> :t [1,2]
2020-11-29 19:02:17 +0100 <lambdabot> Num a => [a]
2020-11-29 19:02:23 +0100 <shapr> :t (1:(2:[]))
2020-11-29 19:02:25 +0100 <lambdabot> Num a => [a]
2020-11-29 19:02:42 +0100 <shapr> jil: have you used :t or :type in ghci?
2020-11-29 19:03:04 +0100 <shapr> I use :t to figure out the type of things all the time
2020-11-29 19:04:03 +0100oish(~charlie@128.127.104.126) (Ping timeout: 260 seconds)
2020-11-29 19:04:09 +0100christo(~chris@81.96.113.213) (Remote host closed the connection)
2020-11-29 19:04:23 +0100nf(~n@monade.li)
2020-11-29 19:04:30 +0100 <jil> yes shapr, it's realy a syntaxic erro as I forgot how to write a list and did not understand the error "non type variable argument in the constraint : Num (t1 -> t2)"
2020-11-29 19:04:56 +0100 <jil> [1,2] == (1:(2:[]))
2020-11-29 19:05:00 +0100 <shapr> > foldr max 0 [1,3,9,6]
2020-11-29 19:05:06 +0100 <lambdabot> 9
2020-11-29 19:05:28 +0100 <jil> > [1,2] == (1:(2:[]))
2020-11-29 19:05:30 +0100 <lambdabot> True
2020-11-29 19:05:32 +0100 <shapr> yay!
2020-11-29 19:05:43 +0100 <shapr> jil: you got it!
2020-11-29 19:05:43 +0100oish(~charlie@228.25.169.217.in-addr.arpa)
2020-11-29 19:06:22 +0100noteness(noteness@unaffiliated/nessessary129) (Ping timeout: 260 seconds)
2020-11-29 19:06:36 +0100 <jil> :t max
2020-11-29 19:06:38 +0100 <lambdabot> Ord a => a -> a -> a
2020-11-29 19:06:58 +0100boxscape(54a35f37@gateway/web/cgi-irc/kiwiirc.com/ip.84.163.95.55) (Ping timeout: 260 seconds)
2020-11-29 19:07:12 +0100 <shapr> ok, now back to figuring out how to get started with haskell.nix for me
2020-11-29 19:07:25 +0100 <jil> thank you shapr
2020-11-29 19:07:33 +0100 <jil> what haskell.nix ?
2020-11-29 19:07:35 +0100nehsou^(nehsou@ip98-184-89-2.mc.at.cox.net)
2020-11-29 19:07:47 +0100 <shapr> jil: it's a way to compile haskell with NixOS
2020-11-29 19:07:58 +0100 <shapr> jil: I'm glad to help, do you have more questions?
2020-11-29 19:09:00 +0100christo(~chris@81.96.113.213)
2020-11-29 19:09:35 +0100 <jil> not really . Thank you. I'll get back to my book "programming in Haskel" from Graham Hutton. Its great
2020-11-29 19:09:47 +0100 <shapr> oh yeah! that's a great book!
2020-11-29 19:10:01 +0100shaprchecks his bookshelf
2020-11-29 19:10:13 +0100 <shapr> oh, my copy is still in one of my book boxes.
2020-11-29 19:10:18 +0100 <dsal> shapr: nix-build -A $project.components.exes.$project or nix-env -f default.nix -iA $project.components.exes.$project
2020-11-29 19:10:27 +0100 <dsal> That's about all I do with it. heh
2020-11-29 19:10:38 +0100 <shapr> dsal: is that for haskell.nix? if yes, how do you start a new empty project?
2020-11-29 19:10:48 +0100 <dsal> stack new and then copy in the file.
2020-11-29 19:11:03 +0100 <shapr> I want to use cabal, and I don't have cabal in scope
2020-11-29 19:11:14 +0100 <shapr> cause that's the point of nix, right?
2020-11-29 19:11:32 +0100 <dsal> Yeah, but for that, cabal2nix might be better. You can bootstrap with a nix-shell, I suppose.
2020-11-29 19:11:34 +0100urek__urek
2020-11-29 19:12:11 +0100benjamin-l(~benjamin@2601:1c0:8800:67e0:fa16:54ff:febc:2e60)
2020-11-29 19:12:23 +0100 <shapr> dsal: I don't know enough. I do know we're using haskell.nix at work so I want to start using it myself
2020-11-29 19:12:58 +0100 <dsal> I've only used haskell.nix with stack. I just copy the same default.nix around for projects I've already started with stack.
2020-11-29 19:13:06 +0100 <dsal> I thought cabal2nix was the way when you're using cabal.
2020-11-29 19:13:15 +0100 <shapr> maybe? I don't know!
2020-11-29 19:13:25 +0100christo(~chris@81.96.113.213) (Ping timeout: 264 seconds)
2020-11-29 19:13:41 +0100 <dsal> Yeah, says it works with cabal, so I guess it's the same process.
2020-11-29 19:13:42 +0100 <shapr> We did switch our CI build from stack to haskell.nix
2020-11-29 19:14:04 +0100 <dsal> `nix-shell -p cabal-install` and then do whatever you normally do to start your project. Add default.nix, and it should be good.
2020-11-29 19:14:06 +0100 <shapr> but from what I've read, haskell.nix gives you access to all the library versions on hackage, not just the blessed subset you get from a stack release
2020-11-29 19:14:21 +0100conal(~conal@64.71.133.70)
2020-11-29 19:14:30 +0100 <dsal> Yeah, there's a daily derivation build of all the things. Happens around 18:00 my time, I think. heh
2020-11-29 19:14:48 +0100 <shapr> bah: cabal: The program 'ghc' version >=7.0.1 is required but it could not be found
2020-11-29 19:14:59 +0100 <shapr> How do I get cabal-install and ghc 8.10.2 in scope at the same time?
2020-11-29 19:15:07 +0100 <dsal> Weird. You can add more stuff after -p
2020-11-29 19:15:16 +0100 <shapr> oh
2020-11-29 19:16:13 +0100 <dsal> You can also have a shell.nix that lists all those things, but starting a project is almost a bootstrap problem, so it might be easier just to make an alias or something.
2020-11-29 19:16:29 +0100jonatanb(~jonatanb@83.24.220.252.ipv4.supernova.orange.pl)
2020-11-29 19:16:53 +0100 <dsal> I'm kind of hybrid. I use regular stack, but with its nix extensions. Then I use haskell.nix (and cachix) to build for various places I deploy.
2020-11-29 19:17:43 +0100 <shapr> I have a variety of disagreements with stack
2020-11-29 19:17:46 +0100hnOsmium0001(uid453710@gateway/web/irccloud.com/x-qtyikxmplneltdye)
2020-11-29 19:19:45 +0100 <shapr> jil: what got you started with Haskell?
2020-11-29 19:19:57 +0100knupfer(~Thunderbi@200116b82c7f8800d55fa997137c91a1.dip.versatel-1u1.de) (Ping timeout: 268 seconds)
2020-11-29 19:20:58 +0100jonatanb(~jonatanb@83.24.220.252.ipv4.supernova.orange.pl) (Ping timeout: 260 seconds)
2020-11-29 19:22:03 +0100delbmuts_(52874ce6@ppp-82-135-76-230.dynamic.mnet-online.de) ()
2020-11-29 19:22:48 +0100 <dsal> My only problem with stack is that migrating away from it seems to get me a variety of disadvantages. I tend to work with `stack test --file-watch` running. I've not even figured out how to run tests with haskell.nix other than to explicitly name them in a build and then run the thing that got built. i.e., there's no 'run the thing in this project' that seems to work.
2020-11-29 19:23:01 +0100adm(~adm@117.223.63.167) (Remote host closed the connection)
2020-11-29 19:23:29 +0100adm(~adm@117.223.63.167)
2020-11-29 19:26:28 +0100 <shapr> dsal: I use entr for all those same things
2020-11-29 19:27:45 +0100adm(~adm@117.223.63.167) (Ping timeout: 256 seconds)
2020-11-29 19:28:35 +0100 <hekkaidekapus> dsal: haskell.nix’s motto is ”If it works with cabal-install/stack, it should work here, too.” Based on that, I would say, enter a shell with stack inside (instead of generating Nix stuff with stack) and `stack test`. (But I’m no expert.)
2020-11-29 19:28:58 +0100 <dsal> Maybe for the file-watch part, but not for the "just build this project" part. The project name is constructed in haskell.nix and you can't just ask for whatever the current ones.
2020-11-29 19:29:39 +0100 <merijn> hekkaidekapus: Mottos don't always reflect reality ;)
2020-11-29 19:29:39 +0100iqubic`(~user@2601:602:9500:4870:ed6c:ae7b:1487:9d5a) (Quit: ERC (IRC client for Emacs 28.0.50))
2020-11-29 19:29:55 +0100iqubic(~user@2601:602:9500:4870:ed6c:ae7b:1487:9d5a)
2020-11-29 19:29:57 +0100 <dsal> `nix-shell --command 'stack test'` doesn't get me much further than `stack test` which is already using nix components. :)
2020-11-29 19:30:16 +0100 <hekkaidekapus> merijn: The maintainers are quite eager to fix bugs that contradict the motto.
2020-11-29 19:30:27 +0100 <dsal> The annoying part of haskell.nix is the -A ............ part.
2020-11-29 19:30:51 +0100 <shapr> dsal: what does that mean?
2020-11-29 19:30:54 +0100 <shapr> why is that annoying?
2020-11-29 19:30:58 +0100shaprwants to learn!
2020-11-29 19:31:12 +0100 <dsal> i.e., I have a lot of haskell projects and when I'm working with stack, I type the same command in each directory. With haskell.nix, I have to type a unique command for each project in each directory that's specific to the project.
2020-11-29 19:33:46 +0100 <hekkaidekapus> (Which is the point of Nix: specify exactly every steps and don’t rely on global state—here ~/.stack…)
2020-11-29 19:33:49 +0100 <dsal> I would really like to know what the right way to run tests is for haskell.nix. I mostly like the model, but it only seems to build things and then just kind of drop them on the floor. Ideally, CI would mostly just be copying an activation file and not lots of custom editing. The per-project custom stuff has caused me a lot of problems in the past when a common part broke everywhere and I had to repeat the fix.
2020-11-29 19:34:22 +0100 <dsal> Global state is the opposite of what I said.
2020-11-29 19:34:39 +0100 <hekkaidekapus> Maybe I misunderstood.
2020-11-29 19:34:53 +0100 <dsal> I have to go into my project directory or I don't get the default.nix file. But then I also have to type a command specific to that project while in the project directory.
2020-11-29 19:35:08 +0100hekkaidekapusbarely knows how stack works.
2020-11-29 19:35:12 +0100 <dsal> With stack (and I presume cabal, though I've not used it directly very much), I can enter the project directory and just type "stack test"
2020-11-29 19:35:36 +0100 <iqubic> Yeah, I have no idea how to run tests in haskell when using nix.
2020-11-29 19:37:39 +0100 <dsal> The haskell.nix documentation sort of handwaves the names of attributes it defines, but I find only some of them work (maybe). It'd be super convenient if it just listed what was possible in a given project.
2020-11-29 19:38:37 +0100 <dsal> e.g., it does suggest it *can* build tests, but none of my guesses as to what they're called seem to get me anywhere.
2020-11-29 19:39:16 +0100 <hekkaidekapus> dsal: I see you aren’t in #haskell.nix. You could ping maintainers there and there is almost always answers, timezones permitting.
2020-11-29 19:39:31 +0100 <dsal> Thanks!
2020-11-29 19:39:38 +0100 <hekkaidekapus> np
2020-11-29 19:40:39 +0100 <iqubic> What is haskell.nix? Is that just nix on haskell?
2020-11-29 19:41:13 +0100 <hekkaidekapus> iqubic: <https://github.com/input-output-hk/haskell.nix>
2020-11-29 19:41:33 +0100 <iqubic> Ah. I see.
2020-11-29 19:41:36 +0100 <hekkaidekapus> It’s another Nix infrastructure for Haskell.
2020-11-29 19:42:34 +0100 <dsal> It's been useful for me to get builds out on nixos systems.
2020-11-29 19:42:41 +0100conal(~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
2020-11-29 19:43:28 +0100jollygood2(~bc8165ab@217.29.117.252)
2020-11-29 19:43:30 +0100 <shapr> iqubic: I *think* the default haskell+nix infrastructure only offers you a single choice of haskell compiler and library versions, and haskell.nix does not
2020-11-29 19:43:34 +0100 <shapr> but I'm not certain of that
2020-11-29 19:43:51 +0100 <iqubic> No, I can easily change my compiler. That's not too hard.
2020-11-29 19:44:01 +0100juuandyy(~juuandyy@90.166.144.65) (Ping timeout: 264 seconds)
2020-11-29 19:44:21 +0100Jesin(~Jesin@pool-72-66-101-18.washdc.fios.verizon.net) (Quit: Leaving)
2020-11-29 19:44:24 +0100 <dsal> haskell.nix just makes any cabal or stack project also a nix project.
2020-11-29 19:44:47 +0100 <dsal> Or as it says at the top of the doc I'm looking at: haskell.nix can automatically translate your Cabal or Stack project and its dependencies into Nix code.
2020-11-29 19:44:50 +0100 <xerox_> is there an id :: a# -> a# ? if that makes any sense
2020-11-29 19:44:52 +0100 <jollygood2> hi. I have incomplete-patterns set, but this isn't trigger compiler warning: [month, day, year] <- sepEndBy integral (char '.')
2020-11-29 19:44:54 +0100 <jollygood2> how come?
2020-11-29 19:45:12 +0100shf(~sheaf@2a01:cb19:80cc:7e00:18fb:674e:a5dc:b905) (Read error: Connection reset by peer)
2020-11-29 19:45:23 +0100 <merijn> jollygood2: Because Parser is an instance of MonadFail
2020-11-29 19:45:28 +0100conal(~conal@64.71.133.70)
2020-11-29 19:45:46 +0100 <merijn> jollygood2: And pattern match failures in do notation use "fail" from MonadFail (usually "parse failure" in parsers)
2020-11-29 19:45:51 +0100hackageconfig-value 0.8.1 - Simple, layout-based value language similar to YAML or JSON https://hackage.haskell.org/package/config-value-0.8.1 (EricMertens)
2020-11-29 19:45:58 +0100 <shapr> iqubic: how do I get ghc 8.10.2 and a particular version of something like the github library?
2020-11-29 19:46:07 +0100 <iqubic> I don't know.
2020-11-29 19:46:16 +0100 <shapr> oh, how do you change your compiler?
2020-11-29 19:46:18 +0100JJ15_(~JJ@94.197.17.236.threembb.co.uk)
2020-11-29 19:46:27 +0100Varis(~Tadas@unaffiliated/varis) (Ping timeout: 256 seconds)
2020-11-29 19:46:52 +0100 <jollygood2> merijn, is there a "stronger" incomplete-pattern warning, that will trigger that regardless if the instance is MonadFail?
2020-11-29 19:47:12 +0100 <merijn> incomplete-uni-patterns, maybe?
2020-11-29 19:47:19 +0100 <iqubic> shapr: Also not sure.
2020-11-29 19:47:26 +0100 <iqubic> I just know that I can.
2020-11-29 19:47:32 +0100 <shapr> iqubic: oh, ok
2020-11-29 19:47:37 +0100 <shapr> well if you figure out, I'd like to know :-)
2020-11-29 19:48:39 +0100JJ15__(~JJ@2a00:23a8:4382:a900:68df:3986:d3b1:2e08)
2020-11-29 19:49:36 +0100 <jollygood2> "The flag -fwarn-incomplete-uni-patterns is similar, except that it applies only to lambda-expressions and pattern bindings, constructs that only allow a single pattern:"
2020-11-29 19:49:41 +0100 <jollygood2> doesn't look like that is it
2020-11-29 19:49:51 +0100JJ15(~JJ@94.197.17.236.threembb.co.uk) (Ping timeout: 256 seconds)
2020-11-29 19:50:35 +0100 <merijn> jollygood2: You have a pattern bindings that allows only a single pattern...
2020-11-29 19:50:45 +0100 <jollygood2> I do? :D
2020-11-29 19:50:54 +0100 <jollygood2> let me try
2020-11-29 19:51:14 +0100 <merijn> "[month, day, year] <- ..." that's a pattern and it's binding stuff, and it has only one pattern...
2020-11-29 19:51:16 +0100chkno(~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net) (Read error: Connection reset by peer)
2020-11-29 19:51:18 +0100JJ15_(~JJ@94.197.17.236.threembb.co.uk) (Ping timeout: 260 seconds)
2020-11-29 19:51:24 +0100renzhi(~renzhi@2607:fa49:655f:e600::28da) (Ping timeout: 240 seconds)
2020-11-29 19:51:27 +0100 <jollygood2> still, the wording makes it seem like it will catch LESS than warn-incomplete-patterns will. I'll still try it
2020-11-29 19:51:37 +0100chkno(~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net)
2020-11-29 19:51:47 +0100 <merijn> jollygood2: It catches *different* things
2020-11-29 19:52:06 +0100 <geekosaur> because it doesn't imply -Wincomplete-patterns?
2020-11-29 19:52:08 +0100 <merijn> jollygood2: i.e. it only covers lambda patterns and (presumably?) do notation patterns and nothing else
2020-11-29 19:52:35 +0100 <merijn> jollygood2: Whereas -Wincomplete-patterns covers only patterns that are *not* uni-patterns
2020-11-29 19:54:22 +0100 <jollygood2> I've set it
2020-11-29 19:54:27 +0100 <jollygood2> I still don't get the warning
2020-11-29 19:55:40 +0100 <geekosaur> that may be because of MonadFail, and the answer is probably no because MonadFail overrides
2020-11-29 19:55:58 +0100boxscape(54a35f37@gateway/web/cgi-irc/kiwiirc.com/ip.84.163.95.55)
2020-11-29 19:56:07 +0100 <merijn> geekosaur: tbh, with the original desugaring of Monad it might not have worked either way
2020-11-29 19:56:15 +0100 <boxscape> hekkaidekapus thanks, that's interesting
2020-11-29 19:56:20 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2020-11-29 19:56:21 +0100 <solonarv> failable patterns in a 'do' binding cause a type error when the monad in use isn't MonadFail
2020-11-29 19:56:34 +0100 <jollygood2> no warning: do [_,_] <- (pure [1,2] :: IO [Int]); return 10
2020-11-29 19:56:45 +0100 <merijn> solonarv: Right, but he has a parser, so he has a MonadFail
2020-11-29 19:56:50 +0100 <merijn> jollygood2: IO is MonadFail, though
2020-11-29 19:57:19 +0100alp__(~alp@2a01:e0a:58b:4920:d15:e453:85b3:5c61)
2020-11-29 19:57:30 +0100 <jollygood2> right.. my second question was how to get this warning in MonadFail context.. and the answer seems to be, you can't
2020-11-29 19:57:41 +0100 <merijn> That could very well be
2020-11-29 19:58:09 +0100Sgeo(~Sgeo@ool-18b982ad.dyn.optonline.net)
2020-11-29 19:59:27 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
2020-11-29 19:59:34 +0100bitmapper(uid464869@gateway/web/irccloud.com/x-tesxvyxpigmxrfxg)
2020-11-29 20:00:38 +0100alp(~alp@88.126.45.36) (Ping timeout: 260 seconds)
2020-11-29 20:00:51 +0100 <hekkaidekapus> boxscape: I suspect that was a contrived example extracted from a larger program. If you are hell-bent on using impredicativity in pattern position, you could 1) wait for type-level lambdas :d 2) hack ViewPatterns in your code.
2020-11-29 20:00:57 +0100 <hekkaidekapus> to, to' :: A -> B
2020-11-29 20:01:04 +0100 <hekkaidekapus> to fg = (fst fg, snd fg)
2020-11-29 20:01:10 +0100 <hekkaidekapus> to' (to -> x) = (fst x, snd x)
2020-11-29 20:01:36 +0100 <boxscape> hekkaidekapus it wasn't; I was just trying to figure out whether that particular equation holds in predicate logic and haskell's type checker seemed a convenient way to prove it
2020-11-29 20:01:52 +0100 <hekkaidekapus> Ah, ok.
2020-11-29 20:02:20 +0100sorki(~sorki@gateway/tor-sasl/sorki) (Remote host closed the connection)
2020-11-29 20:02:32 +0100 <boxscape> but thanks for the tip anyway :)
2020-11-29 20:02:43 +0100 <hekkaidekapus> \o/
2020-11-29 20:03:23 +0100sorki(~sorki@gateway/tor-sasl/sorki)
2020-11-29 20:03:28 +0100berberman_(~berberman@unaffiliated/berberman)
2020-11-29 20:04:14 +0100berberman(~berberman@unaffiliated/berberman) (Ping timeout: 264 seconds)
2020-11-29 20:06:02 +0100xff0x(~fox@2001:1a81:524c:7b00:4922:8a11:2fad:afb4) (Ping timeout: 264 seconds)
2020-11-29 20:06:44 +0100Jesin(~Jesin@pool-72-66-101-18.washdc.fios.verizon.net)
2020-11-29 20:06:46 +0100xff0x(~fox@2001:1a81:524c:7b00:2a03:b58:ed4d:4ddd)
2020-11-29 20:07:46 +0100 <xerox_> @hoogle Word32# -> Word#
2020-11-29 20:07:47 +0100 <lambdabot> Unsafe.Coerce unsafeCoerce :: a -> b
2020-11-29 20:07:47 +0100 <lambdabot> GHC.Exts unsafeCoerce# :: forall (k0 :: RuntimeRep) (k1 :: RuntimeRep) (a :: TYPE k0) (b :: TYPE k1) . a -> b
2020-11-29 20:07:47 +0100 <lambdabot> GHC.Prim unsafeCoerce# :: a -> b
2020-11-29 20:09:56 +0100Jeanne-Kamikaze(~Jeanne-Ka@iakosalt-94.nationalnet.com) (Ping timeout: 240 seconds)
2020-11-29 20:09:57 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2020-11-29 20:10:00 +0100cjenn(~colby@cpe-24-208-40-120.new.res.rr.com) (Quit: cjenn)
2020-11-29 20:10:33 +0100gproto23(~gproto23@unaffiliated/gproto23)
2020-11-29 20:12:00 +0100geowiesnot(~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) (Ping timeout: 265 seconds)
2020-11-29 20:12:08 +0100juuandyy(~juuandyy@90.166.144.65)
2020-11-29 20:12:58 +0100Guest_22(a2f58eed@ott-lmlp35-237.hge.net)
2020-11-29 20:13:13 +0100Varis(~Tadas@unaffiliated/varis)
2020-11-29 20:13:22 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
2020-11-29 20:13:31 +0100Guest_22(a2f58eed@ott-lmlp35-237.hge.net) (Remote host closed the connection)
2020-11-29 20:14:06 +0100 <dminuoso> Why does hoogle produce unsafeCoerce at all here?
2020-11-29 20:14:13 +0100 <dminuoso> That seems rather silly
2020-11-29 20:14:51 +0100 <jollygood2> it matches :)
2020-11-29 20:14:56 +0100 <hpc> the real question is why it doesn't produce it all the time :D
2020-11-29 20:15:07 +0100 <merijn> hpc: Because it's not in the top hits :p
2020-11-29 20:15:09 +0100dxld(~dxld@2a01:4f8:201:89ff:22cf:30ff:fe67:8db)
2020-11-29 20:15:22 +0100 <boxscape> is Word# even Lifted?
2020-11-29 20:15:41 +0100 <dminuoso> jollygood2: Arguably unsafeCoerce should be special cased, as it matches any function...
2020-11-29 20:15:55 +0100 <dminuoso> And it's almost assuredly not the thing you want when you look for `S -> T`
2020-11-29 20:16:09 +0100 <dminuoso> And for those who do want it, it's safe to assume they are fully aware of its existence..
2020-11-29 20:16:09 +0100 <monochrom> Word# is not lifted.
2020-11-29 20:16:10 +0100 <solonarv> % :k Word#
2020-11-29 20:16:10 +0100 <yahb> solonarv: TYPE 'WordRep
2020-11-29 20:16:11 +0100 <boxscape> % (unsafeCoerce :: Word32# -> Word#)
2020-11-29 20:16:11 +0100 <yahb> boxscape: ; <interactive>:41:2: error:; * Couldn't match a lifted type with an unlifted type; When matching types; b0 :: *; Word# :: TYPE 'WordRep; Expected type: Word32# -> Word#; Actual type: a0 -> b0; * In the expression: (unsafeCoerce :: Word32# -> Word#); In an equation for `it': it = (unsafeCoerce :: Word32# -> Word#)
2020-11-29 20:16:12 +0100conal(~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
2020-11-29 20:16:13 +0100 <boxscape> it doesn't match
2020-11-29 20:16:14 +0100 <solonarv> nope, not lifted
2020-11-29 20:16:27 +0100 <monochrom> Err nevermind
2020-11-29 20:16:56 +0100 <boxscape> hm, I think you were right?
2020-11-29 20:16:58 +0100 <boxscape> monochrom
2020-11-29 20:17:01 +0100 <dminuoso> I mean it matches from the perspective Hoogle because it likely doesnt take kinds into consideration
2020-11-29 20:17:01 +0100 <boxscape> why never mind?
2020-11-29 20:17:16 +0100 <boxscape> hm I suppose so
2020-11-29 20:18:22 +0100IamfromSpace(617897dd@97-120-151-221.ptld.qwest.net)
2020-11-29 20:18:22 +0100 <dminuoso> I mean a fully correct hoogle would likely be hard to implement right, in the presence of tyfams and other things.
2020-11-29 20:18:55 +0100 <monochrom> Heh so unsafeCoerce is safer than I thought
2020-11-29 20:19:22 +0100dminuosoholds monochrom's beer
2020-11-29 20:19:41 +0100 <boxscape> % f :: Word32# -> Word#; f = unsafeCoerce# -- this is what you want for true power
2020-11-29 20:19:41 +0100 <yahb> boxscape:
2020-11-29 20:20:28 +0100 <merijn> boxscape: I think you miswrote "real ultimate power" ;)
2020-11-29 20:20:43 +0100 <boxscape> perhaps :)
2020-11-29 20:21:14 +0100benjamin-l(~benjamin@2601:1c0:8800:67e0:fa16:54ff:febc:2e60) (Quit: WeeChat 3.0)
2020-11-29 20:21:33 +0100benjamin-l(~benjamin@2601:1c0:8800:67e0:fa16:54ff:febc:2e60)
2020-11-29 20:21:41 +0100 <dminuoso> % let k = flip const unsafeCoerce# in runCont (pure 1) k
2020-11-29 20:21:41 +0100 <yahb> dminuoso: 1
2020-11-29 20:21:47 +0100 <dminuoso> Looks safe to me!
2020-11-29 20:22:11 +0100alp__(~alp@2a01:e0a:58b:4920:d15:e453:85b3:5c61) (Ping timeout: 272 seconds)
2020-11-29 20:22:38 +0100 <dminuoso> `fix . const` is my favourite combinator of the month however.
2020-11-29 20:22:48 +0100 <merijn> :t fix . const
2020-11-29 20:22:51 +0100 <lambdabot> c -> c
2020-11-29 20:22:55 +0100 <iqubic> What does that do?
2020-11-29 20:23:00 +0100 <dminuoso> Try it out!
2020-11-29 20:23:08 +0100 <merijn> iqubic: id :p
2020-11-29 20:23:16 +0100elliott__(~elliott@pool-108-51-141-12.washdc.fios.verizon.net)
2020-11-29 20:23:18 +0100 <iqubic> @let id' = fix . const
2020-11-29 20:23:20 +0100 <lambdabot> Defined.
2020-11-29 20:23:30 +0100 <iqubic> > id' 34
2020-11-29 20:23:32 +0100 <lambdabot> 34
2020-11-29 20:23:34 +0100cosimone(~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd)
2020-11-29 20:23:38 +0100 <iqubic> How is that just id?
2020-11-29 20:23:47 +0100 <boxscape> @src fix
2020-11-29 20:23:47 +0100 <lambdabot> fix f = let x = f x in x
2020-11-29 20:23:53 +0100 <dminuoso> iqubic: Surely you've been long around to figure this one out yourself.
2020-11-29 20:23:57 +0100 <iqubic> I have.
2020-11-29 20:24:06 +0100 <boxscape> fix (const 4) = let x = (const 4) x in x
2020-11-29 20:25:02 +0100 <hpc> alternatively, if you formulate it as fix f = f (fix f):
2020-11-29 20:25:12 +0100 <hpc> fix (const 4) = const 4 (const 4 (const 4 (...
2020-11-29 20:25:30 +0100shatriff(~vitaliish@176.52.219.10) (Remote host closed the connection)
2020-11-29 20:25:46 +0100 <dminuoso> what I find curious is how these simple functions const, id, fix are all somehow connected in strange and interesting ways
2020-11-29 20:25:56 +0100shailangsa(~shailangs@host86-186-177-155.range86-186.btcentralplus.com) (Ping timeout: 240 seconds)
2020-11-29 20:26:02 +0100Iceland_jack(~user@31.124.48.169)
2020-11-29 20:26:02 +0100shatriff(~vitaliish@176.52.219.10)
2020-11-29 20:26:11 +0100 <dminuoso> or equivalently their type versions Const, Identity, etc
2020-11-29 20:26:18 +0100 <boxscape> you're getting dangerously close to doing combinator calculus
2020-11-29 20:27:44 +0100 <boxscape> hmm I wonder which one(s) you need in addition to fix for functional completeness
2020-11-29 20:28:13 +0100geowiesnot(~user@87-89-181-157.abo.bbox.fr)
2020-11-29 20:28:17 +0100ralu_(~ralu@2a00:1a20:2200:8045:8200:bff:fe5a:48a3)
2020-11-29 20:28:21 +0100 <boxscape> (hm is functional completeness the right term here? I actually only know it from logic)
2020-11-29 20:28:34 +0100SeMas(uid32977@gateway/web/irccloud.com/x-taxggkdzpxqpcjih)
2020-11-29 20:29:00 +0100 <dminuoso> boxscape: Heh that reminds me of that revelation that, in principle, Applicative gives you a full SK(I) combinator calculus almost directly. It's just the type system that is in the way.
2020-11-29 20:29:09 +0100 <boxscape> I was just thinking about that :)
2020-11-29 20:29:20 +0100 <solonarv> const and ap are all you need if you throw away types
2020-11-29 20:29:29 +0100 <solonarv> I don't think you can write fix using them though
2020-11-29 20:29:39 +0100 <dminuoso> why not?
2020-11-29 20:30:05 +0100Franciman(~francesco@host-82-54-193-143.retail.telecomitalia.it) (Ping timeout: 256 seconds)
2020-11-29 20:30:14 +0100 <dminuoso> You can express Y in SKI
2020-11-29 20:30:15 +0100 <solonarv> well, you can write fix if you ignore types, but if you try to type-check that expression you end up with an infinite type
2020-11-29 20:30:26 +0100 <solonarv> SK(I) is untyped so that works
2020-11-29 20:30:40 +0100Gurkenglas(~Gurkengla@unaffiliated/gurkenglas)
2020-11-29 20:30:40 +0100 <boxscape> I wonder if you can get rid off one of them if you have Y as a given
2020-11-29 20:30:43 +0100 <dminuoso> Right, that's what I was saying with "the type system is in the way"
2020-11-29 20:30:52 +0100cosimone(~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd) (Remote host closed the connection)
2020-11-29 20:31:18 +0100 <dminuoso> solonarv: Im almost convinced you can just do it with newtypes
2020-11-29 20:31:18 +0100cosimone(~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd)
2020-11-29 20:31:28 +0100 <dminuoso> Like, you can write a lambda style Y combinator with newtypes too
2020-11-29 20:31:36 +0100 <solonarv> oh, I'm sure you can
2020-11-29 20:31:42 +0100 <dminuoso> (Ignoring simplifier panics that get triggered if you dont disable optimizations in GHC)
2020-11-29 20:32:20 +0100 <dminuoso> To me the newtypes are just noise demanded by the type system, they wouldnt invalidate such an implementation
2020-11-29 20:32:41 +0100acidjnk_new(~acidjnk@p200300d0c719ff217d005cd8d9846e4e.dip0.t-ipconnect.de)
2020-11-29 20:34:56 +0100ralu_(~ralu@2a00:1a20:2200:8045:8200:bff:fe5a:48a3) (Quit: Leaving)
2020-11-29 20:35:46 +0100 <solonarv> yes, \a -> s i i (s (k a) (s i i)) is a fixed-point combinator
2020-11-29 20:36:03 +0100 <solonarv> (you can rewrite that lambda to use only combinators but I'm too lazy for that)
2020-11-29 20:36:18 +0100 <boxscape> we have a tool to do it
2020-11-29 20:36:20 +0100 <boxscape> @pl \a -> s i i (s (k a) (s i i))
2020-11-29 20:36:20 +0100 <lambdabot> s i i . flip s (s i i) . k
2020-11-29 20:36:31 +0100 <solonarv> :t let s = ap; i = id; k = const in \a -> s i i (s (k a) (s i i))
2020-11-29 20:36:31 +0100 <boxscape> now just replace . by C and flip by B, IIRC
2020-11-29 20:36:33 +0100 <lambdabot> error:
2020-11-29 20:36:33 +0100 <lambdabot> • Occurs check: cannot construct the infinite type: a0 ~ a0 -> b
2020-11-29 20:36:33 +0100 <lambdabot> Expected type: ((a0 -> b) -> b) -> a0 -> b
2020-11-29 20:36:44 +0100IamfromSpace(617897dd@97-120-151-221.ptld.qwest.net) (Remote host closed the connection)
2020-11-29 20:37:00 +0100 <dminuoso> s (k (s i i))(s (s (k s) k) (k (s i i)))
2020-11-29 20:37:04 +0100 <dminuoso> Copied straight out of google!
2020-11-29 20:37:05 +0100 <solonarv> but unsurprisingly you get this type error, which is basically the same one that the lambda-calculus Y combinator has
2020-11-29 20:37:24 +0100 <dminuoso> solonarv: mmm you know what, we can convince it!
2020-11-29 20:37:33 +0100 <solonarv> yes, with newtypes !
2020-11-29 20:37:45 +0100 <dminuoso> % let s = ap; i = id; k = const in unsafeCoerce (\a -> s i i (s (k a) (s i i)))
2020-11-29 20:37:46 +0100 <yahb> dminuoso: ; <interactive>:1:58: error:; * Occurs check: cannot construct the infinite type: a0 ~ a0 -> b0; Expected type: ((a0 -> b0) -> b0) -> a0 -> b0; Actual type: (a0 -> b0) -> a0 -> b0; * In the second argument of `s', namely `i'; In the expression: s i i (s (k a) (s i i)); In the first argument of `unsafeCoerce', namely `(\ a -> s i i (s (k a) (s i i)))'; * Relevant bindi
2020-11-29 20:37:54 +0100 <dminuoso> Oh boy, needs more unsafeCoerce!
2020-11-29 20:38:04 +0100 <solonarv> you need to sprinkle them around inside the expression, yeah
2020-11-29 20:38:19 +0100 <hpc> build it like idris intermediate representation
2020-11-29 20:38:28 +0100 <hpc> every subexpression is unsafeCoerced :D
2020-11-29 20:38:29 +0100 <solonarv> the root of the issue is self-application
2020-11-29 20:38:29 +0100 <dminuoso> I got an idea, GHC has the right extension for that
2020-11-29 20:38:32 +0100 <boxscape> % let s = unsafeCoerce ap; i = unsafeCoerce id; k = unsafeCoerce const in unsafeCoerce (\a -> s i i (s (k a) (s i i)))
2020-11-29 20:38:32 +0100 <yahb> boxscape: ; <interactive>:2:22: error:; * Ambiguous type variable `m0' arising from a use of `ap'; prevents the constraint `(Monad m0)' from being solved.; Probable fix: use a type annotation to specify what `m0' should be.; These potential instances exist:; instance Monad m => Monad (WrappedMonad m) -- Defined in `Control.Applicative'; instance ArrowApply a => Monad (ArrowMon
2020-11-29 20:38:35 +0100 <boxscape> makes senes
2020-11-29 20:38:38 +0100 <dminuoso> % (x!) = unsafeCoerce x
2020-11-29 20:38:39 +0100 <yahb> dminuoso: ; <interactive>:3:2: error: Expression syntax in pattern: x !
2020-11-29 20:38:43 +0100 <dminuoso> % (x&) = unsafeCoerce x
2020-11-29 20:38:43 +0100 <yahb> dminuoso: ; <interactive>:4:2: error: Expression syntax in pattern: x &
2020-11-29 20:38:45 +0100 <dminuoso> Mmm
2020-11-29 20:38:49 +0100 <dminuoso> % (&) = unsafeCoerce x
2020-11-29 20:38:49 +0100 <yahb> dminuoso: ; <interactive>:5:20: error: Variable not in scope: x
2020-11-29 20:38:52 +0100 <dminuoso> % (&) = unsafeCoerce
2020-11-29 20:38:52 +0100 <yahb> dminuoso:
2020-11-29 20:38:54 +0100 <dminuoso> There!
2020-11-29 20:41:29 +0100 <boxscape> maybe someone made a deepUnsafeCoerce quasiquoter that wraps every subexpr in unsafeCoerce
2020-11-29 20:41:47 +0100amiri(~amiri@cpe-76-91-154-9.socal.res.rr.com) (Ping timeout: 260 seconds)
2020-11-29 20:42:09 +0100mputz(~Thunderbi@dslb-084-058-211-084.084.058.pools.vodafone-ip.de)
2020-11-29 20:42:23 +0100knupfer(~Thunderbi@i5E86B463.versanet.de)
2020-11-29 20:42:41 +0100toorevitimirp(~tooreviti@117.182.183.16) (Remote host closed the connection)
2020-11-29 20:43:36 +0100conal(~conal@64.71.133.70)
2020-11-29 20:45:17 +0100amiri(~amiri@cpe-76-91-154-9.socal.res.rr.com)
2020-11-29 20:46:52 +0100mputz(~Thunderbi@dslb-084-058-211-084.084.058.pools.vodafone-ip.de) (Ping timeout: 256 seconds)
2020-11-29 20:47:48 +0100christo(~chris@81.96.113.213)
2020-11-29 20:48:50 +0100 <boxscape> although I guess you'd just end up with a bunch of ambiguous type variables typically
2020-11-29 20:49:13 +0100Franciman(~francesco@host-82-54-193-143.retail.telecomitalia.it)
2020-11-29 20:49:16 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2020-11-29 20:49:23 +0100 <dminuoso> boxscape: easily addressed with some sort of type checker plugin
2020-11-29 20:49:31 +0100 <boxscape> fair point
2020-11-29 20:50:13 +0100shatriff_(~vitaliish@176.52.219.10)
2020-11-29 20:50:36 +0100shailangsa(~shailangs@host86-186-177-155.range86-186.btcentralplus.com)
2020-11-29 20:52:33 +0100shatriff(~vitaliish@176.52.219.10) (Ping timeout: 260 seconds)
2020-11-29 20:53:28 +0100mputz(~Thunderbi@dslb-084-058-211-084.084.058.pools.vodafone-ip.de)
2020-11-29 20:54:43 +0100juuandyy(~juuandyy@90.166.144.65) (Quit: Konversation terminated!)
2020-11-29 20:59:05 +0100Franciman(~francesco@host-82-54-193-143.retail.telecomitalia.it) (Ping timeout: 240 seconds)
2020-11-29 21:01:02 +0100rekahsoft(~rekahsoft@cpe0008a20f982f-cm64777d666260.cpe.net.cable.rogers.com)
2020-11-29 21:01:52 +0100hackagexmobar 0.37 - A Minimalistic Text Based Status Bar https://hackage.haskell.org/package/xmobar-0.37 (JoseAntonioOrtegaRuiz)
2020-11-29 21:04:53 +0100conal(~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
2020-11-29 21:05:48 +0100ddellacosta(dd@gateway/vpn/mullvad/ddellacosta)
2020-11-29 21:10:10 +0100sagax(~sagax_nb@213.138.71.146) (Read error: Connection reset by peer)
2020-11-29 21:11:11 +0100 <sondr3> That's a new error when launching cabal repl: `/tmp/bios-wrapper5424-294: line 4: : No such file or directory`
2020-11-29 21:12:01 +0100 <sondr3> Isn't bios used in HLS? Not sure why it interferes with cabal
2020-11-29 21:14:15 +0100avdb(~avdb@ip-81-11-215-86.dsl.scarlet.be) (Ping timeout: 260 seconds)
2020-11-29 21:16:37 +0100ggole(~ggole@2001:8003:8119:7200:69c3:3fe:81:8dbf) (Quit: Leaving)
2020-11-29 21:17:39 +0100rayyyy(~nanoz@gateway/tor-sasl/nanoz) (Remote host closed the connection)
2020-11-29 21:18:28 +0100 <merijn> sondr3: WHich version of cabal-install?
2020-11-29 21:19:58 +0100UnhammerdUnhammer
2020-11-29 21:20:09 +0100 <sondr3> merijn: cabal-install version 3.2.0.0, though I just waited a bit and now it works again
2020-11-29 21:23:53 +0100ephemient(uid407513@gateway/web/irccloud.com/x-pfymqtqxpsoxkvkd) (Quit: Connection closed for inactivity)
2020-11-29 21:23:59 +0100sagax(~sagax_nb@213.138.71.146)
2020-11-29 21:24:29 +0100elfets(~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de) (Ping timeout: 256 seconds)
2020-11-29 21:26:12 +0100vfaronov(~vfaronov@broadband-95-84-210-78.ip.moscow.rt.ru) (Quit: vfaronov)
2020-11-29 21:26:23 +0100gehmehgeh(~ircuser1@gateway/tor-sasl/gehmehgeh) (Ping timeout: 240 seconds)
2020-11-29 21:26:28 +0100vfaronov(~vfaronov@broadband-95-84-210-78.ip.moscow.rt.ru)
2020-11-29 21:26:31 +0100vfaronov(~vfaronov@broadband-95-84-210-78.ip.moscow.rt.ru) (Remote host closed the connection)
2020-11-29 21:26:44 +0100vfaronov(~vfaronov@broadband-95-84-210-78.ip.moscow.rt.ru)
2020-11-29 21:27:07 +0100vfaronov(~vfaronov@broadband-95-84-210-78.ip.moscow.rt.ru) (Client Quit)
2020-11-29 21:27:08 +0100conal(~conal@64.71.133.70)
2020-11-29 21:28:22 +0100Chi1thangoojmchael
2020-11-29 21:28:36 +0100avdb(~avdb@ip-81-11-215-86.dsl.scarlet.be)
2020-11-29 21:30:16 +0100amiri(~amiri@cpe-76-91-154-9.socal.res.rr.com) (Ping timeout: 240 seconds)
2020-11-29 21:30:20 +0100ChanServ(ChanServ@services.) (shutting down)
2020-11-29 21:30:26 +0100 <iqubic> jle`: Thank you for updating your AoCAPI. I have verified that it works with the lastest version of servant and GHC.
2020-11-29 21:30:48 +0100 <iqubic> I can successfully get an error of "Left (AoCReleaseError 117187.692251649s)"
2020-11-29 21:31:30 +0100 <iqubic> I don't understand what the number is, and the docs state it's a NominalDiffTime, but IDK what that is.
2020-11-29 21:31:35 +0100ChanServ(ChanServ@services.)
2020-11-29 21:31:35 +0100kornbluth.freenode.net+o ChanServ
2020-11-29 21:32:05 +0100 <koz_> iqubic: NominalDiffTime represents a separation in time that's not pinned to anything specific ("five minutes ago", "tomorrow", "five years from now" etc).
2020-11-29 21:32:23 +0100 <koz_> It's encoded as (possibly fractional) seconds.
2020-11-29 21:33:07 +0100gehmehgeh(~ircuser1@gateway/tor-sasl/gehmehgeh)
2020-11-29 21:33:10 +0100 <iqubic> Right. And in this case it's telling me how long I'll need to wait until AOC 2020 starts
2020-11-29 21:33:59 +0100 <iqubic> But the important part isn't that number, but that the jle's updates that he made yesterday actually work.
2020-11-29 21:35:49 +0100avdb(~avdb@ip-81-11-215-86.dsl.scarlet.be) (Ping timeout: 256 seconds)
2020-11-29 21:36:38 +0100 <iqubic> Looking at Haskell's Time support, and I'm wondering something; What's the difference between a NominalDiffTime and a DiffTime?
2020-11-29 21:36:49 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 264 seconds)
2020-11-29 21:37:12 +0100 <merijn> iqubic: DiffTime is *clock* time
2020-11-29 21:37:21 +0100 <merijn> iqubic: NominalDiffTime is monotonic time
2020-11-29 21:37:26 +0100 <koz_> NominalDiffTime ignores leap seconds.
2020-11-29 21:37:33 +0100 <iqubic> So then what's UTCTime?
2020-11-29 21:37:40 +0100 <koz_> UTCTime is a specific time.
2020-11-29 21:37:45 +0100 <koz_> Not a difference between two times.
2020-11-29 21:37:46 +0100 <iqubic> Right, I see.
2020-11-29 21:37:51 +0100 <iqubic> Ah, I see.
2020-11-29 21:37:56 +0100Maxdamantus(~Maxdamant@unaffiliated/maxdamantus) (Ping timeout: 256 seconds)
2020-11-29 21:38:07 +0100 <merijn> iqubic: i.e. 5 minutes of NominalDiffTime might be 1 hour and 5 minutes of DiffTime :p
2020-11-29 21:38:17 +0100 <merijn> Due to daylight savings time
2020-11-29 21:38:19 +0100 <iqubic> I see.
2020-11-29 21:38:39 +0100natechan(~natechan@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Quit: WeeChat 2.9)
2020-11-29 21:38:44 +0100 <merijn> It's pedantic, but time is complex enough that pedantry is warranted :p
2020-11-29 21:38:51 +0100irc_user(uid423822@gateway/web/irccloud.com/x-qjzncdzdidsoxfjl)
2020-11-29 21:39:07 +0100 <iqubic> Does Haskell support timezone conversions, or not?
2020-11-29 21:39:25 +0100 <merijn> Sure, as much as anything does
2020-11-29 21:39:35 +0100 <merijn> Well "Haskell" not so much
2020-11-29 21:39:39 +0100Maxdamantus(~Maxdamant@unaffiliated/maxdamantus)
2020-11-29 21:39:40 +0100 <merijn> But the time library, sure
2020-11-29 21:39:59 +0100 <iqubic> Right.
2020-11-29 21:40:00 +0100appostasiamo(~appostasi@185.183.147.131)
2020-11-29 21:40:08 +0100sfvm(~sfvm@37.228.215.54)
2020-11-29 21:40:09 +0100 <merijn> iqubic: See ZonedTime
2020-11-29 21:40:17 +0100 <iqubic> I'll look at that later.
2020-11-29 21:40:29 +0100 <merijn> iqubic: Which is essentially "a time + a time zone"
2020-11-29 21:40:48 +0100 <merijn> ugh
2020-11-29 21:40:54 +0100 <appostasiamo> ciao
2020-11-29 21:41:00 +0100 <merijn> time doesn't have geographic timezone names?
2020-11-29 21:41:13 +0100 <appostasiamo> !list
2020-11-29 21:41:14 +0100 <monochrom> appostasiamo: https://hackage.haskell.org/
2020-11-29 21:41:22 +0100xerox_chuckles
2020-11-29 21:41:24 +0100 <koz_> merijn: Nope.
2020-11-29 21:41:38 +0100 <koz_> (speaking as someone who actually had to look up this info recently)
2020-11-29 21:41:39 +0100 <merijn> Ok, I retract my statement :p
2020-11-29 21:41:53 +0100 <merijn> time on supports UTC offsets, not timezones :p
2020-11-29 21:42:06 +0100 <merijn> s/on/only
2020-11-29 21:42:06 +0100 <xerox_> postgres does timezone conversion well
2020-11-29 21:42:18 +0100ph88(~ph88@2a02:8109:9e00:7e5c:38a3:bec1:bd68:259f)
2020-11-29 21:42:31 +0100 <merijn> xerox_: I don't believe that :p
2020-11-29 21:42:37 +0100 <xerox_> it's true!
2020-11-29 21:42:41 +0100 <merijn> Because there's literally no way to do timezone conversion *well*
2020-11-29 21:42:48 +0100 <merijn> The best you can manage is *not terrible*
2020-11-29 21:43:26 +0100natechan(~natechan@108-233-125-227.lightspeed.sntcca.sbcglobal.net)
2020-11-29 21:44:03 +0100hekkaidekapusawaits the future vs. past times distinction…
2020-11-29 21:44:12 +0100 <merijn> hekkaidekapus: For example :p
2020-11-29 21:44:26 +0100 <hekkaidekapus> heh… I saw you coming :p
2020-11-29 21:44:38 +0100cosimone(~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd) (Remote host closed the connection)
2020-11-29 21:44:40 +0100appostasiamo(~appostasi@185.183.147.131) (Remote host closed the connection)
2020-11-29 21:44:58 +0100cosimone(~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd)
2020-11-29 21:45:01 +0100 <merijn> I'm coming to take away the programming license of anyone who says "you should always convert datetime to UTC" >.>
2020-11-29 21:45:11 +0100 <hekkaidekapus> lol
2020-11-29 21:45:25 +0100 <merijn> A little knowledge is a dangerous thing!
2020-11-29 21:46:12 +0100 <hekkaidekapus> In the line of “Fear the person of one book.” s/book/universal time/
2020-11-29 21:46:49 +0100 <merijn> hekkaidekapus: It's especially relevant with all of the EU reconsidering daylight savings time in the near future
2020-11-29 21:46:49 +0100dddddd(~dddddd@unaffiliated/dddddd) (Quit: dddddd)
2020-11-29 21:47:17 +0100 <dminuoso> iqubic: https://wiki.haskell.org/wikiupload/9/90/Time-diagram.png
2020-11-29 21:47:27 +0100 <hekkaidekapus> merijn: Wait, isn’t the decision already made?
2020-11-29 21:47:59 +0100 <merijn> hekkaidekapus: AFAIK the decision to stop has been made, but nothing has been finalised about which permanent time will be used by which country
2020-11-29 21:48:26 +0100 <ddellacosta> dminuoso: that's great, filing it away, thanks
2020-11-29 21:48:41 +0100 <hekkaidekapus> iirc, each country has the leeway in phasing it out.
2020-11-29 21:48:57 +0100 <merijn> hekkaidekapus: Eh, last news article I saw said end 2021 :p
2020-11-29 21:49:06 +0100jonatanb(~jonatanb@83.24.220.252.ipv4.supernova.orange.pl)
2020-11-29 21:49:50 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
2020-11-29 21:50:13 +0100 <hekkaidekapus> merijn: Ok, then. It’s not like I’m running for a seat in the EP ;) (If I did, it’d be under the Pirates banner, of course. :P )
2020-11-29 21:50:50 +0100dddddd(~dddddd@unaffiliated/dddddd)
2020-11-29 21:52:16 +0100sh92(~sh9@softbank060116136158.bbtec.net)
2020-11-29 21:53:44 +0100sh91(~sh9@softbank060116136158.bbtec.net) (Ping timeout: 256 seconds)
2020-11-29 21:54:25 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 246 seconds)
2020-11-29 21:56:09 +0100 <hekkaidekapus> @where cabal-stack-disambiguation
2020-11-29 21:56:09 +0100 <lambdabot> "The Cabal/Stack Disambiguation Guide" at <https://gist.github.com/merijn/8152d561fb8b011f9313c48d876ceb07> by Merijn
2020-11-29 21:56:30 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
2020-11-29 21:56:40 +0100 <hekkaidekapus> merijn: Time for a ‘Future vs Past Time disambiguation’ gist?
2020-11-29 21:57:26 +0100SupaYoshii(~supayoshi@213-10-140-13.fixed.kpn.net) (Quit: Goodbye!)
2020-11-29 21:58:19 +0100 <merijn> hekkaidekapus: I'll get right on that after I finish rewriting 8 thesis chapters...before tomorrow 10 AM >.>
2020-11-29 21:58:51 +0100 <hekkaidekapus> UTC time, oc.
2020-11-29 21:59:32 +0100mputz(~Thunderbi@dslb-084-058-211-084.084.058.pools.vodafone-ip.de) (Quit: mputz)
2020-11-29 21:59:48 +0100mputz(~Thunderbi@dslb-084-058-211-084.084.058.pools.vodafone-ip.de)
2020-11-29 22:01:20 +0100SupaYoshi(~supayoshi@213-10-140-13.fixed.kpn.net)
2020-11-29 22:02:50 +0100hackagehedis 0.13.1 - Client library for the Redis datastore: supports full command set,pipelining. https://hackage.haskell.org/package/hedis-0.13.1 (k_bx)
2020-11-29 22:03:35 +0100 <dminuoso> 21:46:49 merijn | hekkaidekapus: It's especially relevant with all of the EU reconsidering daylight savings time in the near future
2020-11-29 22:03:43 +0100 <dminuoso> Its going to be a very interesting near future
2020-11-29 22:04:09 +0100 <hekkaidekapus> lol
2020-11-29 22:04:09 +0100 <dminuoso> Negative leap second, DST changes...
2020-11-29 22:04:30 +0100 <dminuoso> I reckon we'll reap the benefits in years to come
2020-11-29 22:04:39 +0100hekkaidekapusthought dminuoso went for the pun…
2020-11-29 22:06:53 +0100natechan(~natechan@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Quit: WeeChat 2.9)
2020-11-29 22:07:29 +0100 <dminuoso> Is there a typeclass for things that have an empty constructor like Nothing or []?
2020-11-29 22:07:41 +0100 <merijn> Alternative? :p
2020-11-29 22:08:22 +0100wonko7(~wonko7@2a01:e35:2ffb:7040:55f1:c3a3:cdbe:bf52)
2020-11-29 22:09:18 +0100Aquazi(uid312403@gateway/web/irccloud.com/x-ilswyamvtndfxsrg)
2020-11-29 22:09:42 +0100 <hpc> also Monoid depending on what kind you need
2020-11-29 22:09:43 +0100 <boxscape> dminuoso https://hackage.haskell.org/package/data-default-0.7.1.1/docs/Data-Default.html#t:Default
2020-11-29 22:10:04 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2020-11-29 22:10:25 +0100 <boxscape> I guess Pointed, as well
2020-11-29 22:10:40 +0100 <boxscape> I guess Pointed, as well
2020-11-29 22:10:42 +0100 <boxscape> whoops
2020-11-29 22:10:44 +0100 <boxscape> I wanted to say
2020-11-29 22:10:46 +0100 <boxscape> wait no
2020-11-29 22:10:52 +0100 <boxscape> Pointed is different
2020-11-29 22:12:33 +0100amiri(~amiri@cpe-76-91-154-9.socal.res.rr.com)
2020-11-29 22:13:12 +0100DataComputist(~lumeng@static-50-43-26-251.bvtn.or.frontiernet.net) (Quit: Leaving...)
2020-11-29 22:13:56 +0100 <ddellacosta> MonadThrow?
2020-11-29 22:13:58 +0100ddellacostaducks
2020-11-29 22:15:48 +0100DataComputist(~lumeng@static-50-43-26-251.bvtn.or.frontiernet.net)
2020-11-29 22:20:26 +0100alp__(~alp@2a01:e0a:58b:4920:d15:e453:85b3:5c61)
2020-11-29 22:20:44 +0100sagax(~sagax_nb@213.138.71.146) (Ping timeout: 272 seconds)
2020-11-29 22:21:16 +0100 <dminuoso> Mmm I guess Default is that thing
2020-11-29 22:24:59 +0100 <ryantrinkle> for QuantifiedConstraints, it seems like sometimes it needs a little help; e.g., i have a `type family Object cat a :: Constraint` and `class Object cat a => Object' cat a with instance Object cat a => Object' cat a`, and finally an expression that uses it via a quantified constraint `forall x. obj x => Object' cat x`
2020-11-29 22:25:06 +0100jonatanb(~jonatanb@83.24.220.252.ipv4.supernova.orange.pl) (Remote host closed the connection)
2020-11-29 22:25:17 +0100 <ryantrinkle> now if I just try to use `Object cat a` for some particular `a`, it doesn't work
2020-11-29 22:25:49 +0100 <ryantrinkle> but defining: `with :: forall c r. c => (c => r) -> r` `with x = x`
2020-11-29 22:26:01 +0100 <ryantrinkle> and prefixing with `with @(Object' cat a)`
2020-11-29 22:26:08 +0100 <ryantrinkle> now it can find the Object cat a instance
2020-11-29 22:26:12 +0100 <ryantrinkle> any advice on how to clean this up?
2020-11-29 22:26:45 +0100geekosaur(ae68c070@cpe-174-104-192-112.neo.res.rr.com) (Remote host closed the connection)
2020-11-29 22:26:57 +0100 <ryantrinkle> (it's necessary to go through the `class` because the type family can't be partially applied)
2020-11-29 22:27:13 +0100conal(~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
2020-11-29 22:27:45 +0100contiver(~contiver@84-115-64-168.wifi.dynamic.surfer.at)
2020-11-29 22:30:08 +0100Franciman(~francesco@host-82-54-193-143.retail.telecomitalia.it)
2020-11-29 22:30:20 +0100conal(~conal@64.71.133.70)
2020-11-29 22:32:16 +0100conal(~conal@64.71.133.70) (Client Quit)
2020-11-29 22:33:17 +0100conal(~conal@64.71.133.70)
2020-11-29 22:33:23 +0100conal(~conal@64.71.133.70) (Client Quit)
2020-11-29 22:34:00 +0100conal(~conal@64.71.133.70)
2020-11-29 22:34:10 +0100conal(~conal@64.71.133.70) (Client Quit)
2020-11-29 22:34:52 +0100conal(~conal@64.71.133.70)
2020-11-29 22:36:05 +0100knupfer(~Thunderbi@i5E86B463.versanet.de) (Ping timeout: 240 seconds)
2020-11-29 22:36:23 +0100jonatanb(~jonatanb@83.24.220.252.ipv4.supernova.orange.pl)
2020-11-29 22:37:02 +0100cosimone(~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd) (Quit: cosimone)
2020-11-29 22:37:59 +0100contiver_(~contiver@84-115-64-44.wifi.dynamic.surfer.at)
2020-11-29 22:38:34 +0100perrier-jouet(~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (Quit: WeeChat 2.9)
2020-11-29 22:40:25 +0100contiver(~contiver@84-115-64-168.wifi.dynamic.surfer.at) (Ping timeout: 256 seconds)
2020-11-29 22:40:42 +0100travv0(sid293381@gateway/web/irccloud.com/x-bzeyalubfbhlrrhq)
2020-11-29 22:41:00 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 272 seconds)
2020-11-29 22:42:20 +0100jonatanb(~jonatanb@83.24.220.252.ipv4.supernova.orange.pl) (Remote host closed the connection)
2020-11-29 22:42:36 +0100Franciman(~francesco@host-82-54-193-143.retail.telecomitalia.it) (Ping timeout: 240 seconds)
2020-11-29 22:42:47 +0100xff0x(~fox@2001:1a81:524c:7b00:2a03:b58:ed4d:4ddd) (Ping timeout: 272 seconds)
2020-11-29 22:43:57 +0100xff0x(~fox@141.98.255.144)
2020-11-29 22:49:52 +0100xff0x(~fox@141.98.255.144) (Ping timeout: 272 seconds)
2020-11-29 22:50:42 +0100Cotillion(~Cotillion@185.163.110.116) (Remote host closed the connection)
2020-11-29 22:51:07 +0100xff0x(~fox@2001:1a81:524c:7b00:2a03:b58:ed4d:4ddd)
2020-11-29 22:51:31 +0100conal(~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
2020-11-29 22:52:09 +0100JavaSucksMan(403483ab@64-52-131-171.championbroadband.com)
2020-11-29 22:53:25 +0100conal(~conal@64.71.133.70)
2020-11-29 22:53:25 +0100conal(~conal@64.71.133.70) (Client Quit)
2020-11-29 22:53:51 +0100conal(~conal@64.71.133.70)
2020-11-29 22:55:10 +0100perrier-jouet(~perrier-j@modemcable012.251-130-66.mc.videotron.ca)
2020-11-29 22:55:27 +0100 <JavaSucksMan> How can I restrict access to the full IO monad while still provide access to things like IORef that, aren't referentially transparent but don't actually do IO (from the OS point of view)?
2020-11-29 22:55:27 +0100chkno(~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net) (Read error: Connection reset by peer)
2020-11-29 22:55:49 +0100 <dolio> Use ST?
2020-11-29 22:55:53 +0100chkno(~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net)
2020-11-29 22:56:21 +0100 <koz_> You can also work in PrimMonad I guess?
2020-11-29 22:56:34 +0100 <JavaSucksMan> I guess,,, and use #RealWorld# to get at IORefs?
2020-11-29 22:56:46 +0100 <hpc> you'd use STRef
2020-11-29 22:57:06 +0100 <koz_> I think there's a generalization of *Ref in primitive if you wanna go down the PrimMonad route IIRC.
2020-11-29 22:58:51 +0100 <JavaSucksMan> PrimMonad looks interesting.... thanks
2020-11-29 23:00:38 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds)
2020-11-29 23:04:42 +0100ephemient(uid407513@gateway/web/irccloud.com/x-bhblrmwjykztmyrl)
2020-11-29 23:06:50 +0100fendor(~fendor@91.141.2.60.wireless.dyn.drei.com) (Remote host closed the connection)
2020-11-29 23:08:59 +0100Franciman(~francesco@host-82-54-193-143.retail.telecomitalia.it)
2020-11-29 23:10:48 +0100conman1(~conman@185.204.1.185)
2020-11-29 23:12:05 +0100takuan(~takuan@178-116-218-225.access.telenet.be) (Read error: Connection reset by peer)
2020-11-29 23:13:07 +0100acidjnk_new(~acidjnk@p200300d0c719ff217d005cd8d9846e4e.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
2020-11-29 23:17:05 +0100elfets(~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de)
2020-11-29 23:18:16 +0100jonatanb(~jonatanb@83.24.220.252.ipv4.supernova.orange.pl)
2020-11-29 23:18:58 +0100acidjnk_new(~acidjnk@p200300d0c719ff21c162f6267ce4f02c.dip0.t-ipconnect.de)
2020-11-29 23:20:10 +0100rprije(~rprije@194-193-174-214.tpgi.com.au)
2020-11-29 23:20:37 +0100boxscape(54a35f37@gateway/web/cgi-irc/kiwiirc.com/ip.84.163.95.55) (Ping timeout: 264 seconds)
2020-11-29 23:22:38 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2020-11-29 23:26:31 +0100justsomeguy(~justsomeg@216.186.218.241)
2020-11-29 23:26:32 +0100justsomeguy(~justsomeg@216.186.218.241) (Changing host)
2020-11-29 23:26:32 +0100justsomeguy(~justsomeg@unaffiliated/--/x-3805311)
2020-11-29 23:27:28 +0100 <dsal> JavaSucksMan: It sounds like you were describing ST.
2020-11-29 23:28:33 +0100 <monochrom> @quote monochrom Bond
2020-11-29 23:28:33 +0100 <lambdabot> No quotes match.
2020-11-29 23:28:35 +0100vicfred(~vicfred@unaffiliated/vicfred)
2020-11-29 23:28:58 +0100 <dsal> That's pretty deep.
2020-11-29 23:29:04 +0100 <monochrom> Oh, this:
2020-11-29 23:29:08 +0100 <monochrom> @quote monochrom 007
2020-11-29 23:29:08 +0100 <lambdabot> monochrom says: 007 titles for haskellers. fromForeignPtr withCString. You Only lift Twice. Bottoms Are Forever. The Monad with the Pure Function. For Your Types Only. A view to A seq. Licence
2020-11-29 23:29:08 +0100 <lambdabot> to killThread. iterate Never Dies. unsafePerformIO Is Not Enough.
2020-11-29 23:29:41 +0100 <monochrom> That last one may have been better off as The RealWorld# Is Not Enough
2020-11-29 23:30:53 +0100livvy(~livvy@gateway/tor-sasl/livvy)
2020-11-29 23:30:57 +0100 <maerwald> everything is IO. GHC just creates a perfect illusion for us
2020-11-29 23:31:51 +0100 <monochrom> I have a feeling that it's the opposite, IO is an illusion.
2020-11-29 23:32:08 +0100 <maerwald> that's what academics like to believe :p
2020-11-29 23:33:18 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-11-29 23:34:31 +0100 <monochrom> Rumour goes that if you assume an anti de Sitter space and do a holographic projection of the world to a surface, then the IO monad and the IO comonad are unified.
2020-11-29 23:34:49 +0100 <dminuoso> The IO comonad? ...
2020-11-29 23:35:00 +0100justanotheruser(~justanoth@unaffiliated/justanotheruser) (Ping timeout: 265 seconds)
2020-11-29 23:35:01 +0100 <monochrom> I'm making it up. >:)
2020-11-29 23:35:03 +0100 <erisco> oh yeah I have one of those on my coffee table
2020-11-29 23:35:42 +0100 <monochrom> But a comonad allows you to do the much-wanted M a -> a
2020-11-29 23:35:44 +0100mputz(~Thunderbi@dslb-084-058-211-084.084.058.pools.vodafone-ip.de) (Quit: mputz)
2020-11-29 23:35:50 +0100 <dminuoso> % :t unsafePerformIO
2020-11-29 23:35:50 +0100 <yahb> dminuoso: IO a -> a
2020-11-29 23:35:53 +0100dminuosochuckles
2020-11-29 23:35:58 +0100 <erisco> it is true that you can use comonads to add purity to impure languages
2020-11-29 23:36:16 +0100 <erisco> so then it is moreso a question of what you like by default, like strictness
2020-11-29 23:37:57 +0100contiver__(~contiver@84-115-64-108.wifi.dynamic.surfer.at)
2020-11-29 23:38:08 +0100carlomagno(~cararell@148.87.23.5) (Remote host closed the connection)
2020-11-29 23:38:32 +0100gproto23(~gproto23@unaffiliated/gproto23) (Remote host closed the connection)
2020-11-29 23:38:52 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
2020-11-29 23:38:59 +0100gproto23(~gproto23@unaffiliated/gproto23)
2020-11-29 23:39:59 +0100 <erisco> I feel like "everything is" statements are as broad as they are meaningless
2020-11-29 23:40:36 +0100 <maerwald> they aren't really statements
2020-11-29 23:40:49 +0100 <monochrom> Yes if you restrict to those that are really, seriously, provably true.
2020-11-29 23:41:10 +0100contiver_(~contiver@84-115-64-44.wifi.dynamic.surfer.at) (Ping timeout: 272 seconds)
2020-11-29 23:41:22 +0100hackageintricacy 0.7.2.1 - A game of competitive puzzle-design https://hackage.haskell.org/package/intricacy-0.7.2.1 (mbays)
2020-11-29 23:41:22 +0100 <monochrom> If you allow them to be statistically true of a majority, then you have useful statements.
2020-11-29 23:43:36 +0100 <monochrom> But why do you like to suddenly discuss "everything is" sentences?
2020-11-29 23:43:50 +0100xff0x(~fox@2001:1a81:524c:7b00:2a03:b58:ed4d:4ddd) (Ping timeout: 264 seconds)
2020-11-29 23:44:03 +0100 <maerwald> Because programmers generally have a hard time with non-formal truths? :p
2020-11-29 23:44:19 +0100xff0x(~fox@2001:1a81:524c:7b00:6035:c577:b880:b950)
2020-11-29 23:44:35 +0100 <erisco> it started with "everything is IO" and then continued with the negation
2020-11-29 23:44:38 +0100 <arw_> yes. but even formally, most "everything is" sentences will be tautologies ala "everything is isomorphic to itself"
2020-11-29 23:44:44 +0100 <maerwald> erisco: and both is true
2020-11-29 23:44:57 +0100 <erisco> when A and not A are both true, what do you have
2020-11-29 23:45:15 +0100 <maerwald> erisco: there's more than just classical logic
2020-11-29 23:45:37 +0100 <erisco> well I'm asking you, I didn't make any logical judgement about it :P
2020-11-29 23:46:36 +0100 <monochrom> I think programmers have no trouble believing and insisting non-formal truths like "pure FP is impractical" and "non-tail recursion uses call stack space".
2020-11-29 23:47:06 +0100 <maerwald> erisco: https://aeon.co/essays/the-logic-of-buddhist-philosophy-goes-beyond-simple-truth
2020-11-29 23:47:14 +0100 <monochrom> Or maybe that's exactly what you mean.
2020-11-29 23:47:23 +0100LKoen(~LKoen@169.244.88.92.rev.sfr.net) (Quit: “It’s only logical. First you learn to talk, then you learn to think. Too bad it’s not the other way round.”)
2020-11-29 23:47:44 +0100 <maerwald> it's also formally explained there, kinda
2020-11-29 23:48:11 +0100carlomagno(~cararell@148.87.23.4)
2020-11-29 23:48:25 +0100Rudd0^(~Rudd0@185.189.115.108)
2020-11-29 23:48:32 +0100Rudd0(~Rudd0@185.189.115.108) (Read error: Connection reset by peer)
2020-11-29 23:48:45 +0100 <JavaSucksMan> When A and not A are both true, you have.....trivial completeness ;-)
2020-11-29 23:49:32 +0100 <maerwald> https://en.wikipedia.org/wiki/Many-valued_logic
2020-11-29 23:49:55 +0100 <JavaSucksMan> or paraconsistant logics
2020-11-29 23:50:16 +0100 <erisco> if you can assume A and successfully describe the world, and, as a separate endeavour, assume not A and also successfully describe the world, what importance does A or not A have
2020-11-29 23:50:39 +0100 <maerwald> erisco: the part that the reader missed :D
2020-11-29 23:51:02 +0100perrier-jouet(~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (Quit: WeeChat 2.9)
2020-11-29 23:51:09 +0100 <maerwald> if you think about it, it's gone
2020-11-29 23:51:38 +0100 <maerwald> the paradox of the ineffible
2020-11-29 23:52:09 +0100 <maerwald> or just "aesthetic truth" to be more classic
2020-11-29 23:52:37 +0100 <maerwald> because again: none of those were actually statements
2020-11-29 23:52:47 +0100nango`(~user@2001:4bb8:2c0:f87:3991:44c0:3223:4b98) (Ping timeout: 260 seconds)
2020-11-29 23:55:38 +0100 <erisco> "aesthetic truth" sounds like a euphemism for politics
2020-11-29 23:55:49 +0100 <maerwald> no
2020-11-29 23:56:24 +0100 <maerwald> there's a few centuries of philosophy research about it :p
2020-11-29 23:56:27 +0100 <monochrom> "reality" is.
2020-11-29 23:56:55 +0100oish(~charlie@228.25.169.217.in-addr.arpa) (Ping timeout: 256 seconds)
2020-11-29 23:57:21 +0100monochromcontemplates "what would go into a book titled Political Haskell?"
2020-11-29 23:57:31 +0100 <maerwald> I think it's important to talk about non-formal properties of e.g. languages as well. Such a property is how it "feels". And if you ask most programmers, it's actually something you can talk about
2020-11-29 23:58:12 +0100 <monochrom> Yes. For example "productivity".
2020-11-29 23:58:27 +0100 <monochrom> "power"
2020-11-29 23:58:44 +0100 <monochrom> "readability"
2020-11-29 23:59:52 +0100 <erisco> why did my blood pressure go up