2021/01/19

2021-01-19 00:00:42 +0100coot(~coot@37.30.55.132.nat.umts.dynamic.t-mobile.pl) (Quit: coot)
2021-01-19 00:02:24 +0100bitmagie(~Thunderbi@200116b8061ea2008105fee28fc28f07.dip.versatel-1u1.de) (Quit: bitmagie)
2021-01-19 00:02:54 +0100frankdmartinez(~frankdmar@208.91.107.132)
2021-01-19 00:03:34 +0100nilof(~olofs@90-227-86-119-no542.tbcn.telia.com)
2021-01-19 00:03:45 +0100o1lo01ol1o(~o1lo01ol1@176.78.51.169) (Remote host closed the connection)
2021-01-19 00:03:58 +0100PhysiPysi(~PhysiPysi@217.27.130.32) (Quit: Leaving)
2021-01-19 00:04:56 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Remote host closed the connection)
2021-01-19 00:05:14 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com)
2021-01-19 00:06:43 +0100saolof(~olofs@90-227-86-119-no542.tbcn.telia.com) (Ping timeout: 260 seconds)
2021-01-19 00:08:22 +0100jneira(501ca940@gateway/web/cgi-irc/kiwiirc.com/ip.80.28.169.64) (Ping timeout: 246 seconds)
2021-01-19 00:09:06 +0100conal(~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
2021-01-19 00:09:38 +0100conal(~conal@64.71.133.70)
2021-01-19 00:09:47 +0100conal(~conal@64.71.133.70) (Client Quit)
2021-01-19 00:10:02 +0100Ariakenom(~Ariakenom@2001:9b1:efb:fc00:28a2:232a:8cb0:d999) (Quit: Leaving)
2021-01-19 00:13:37 +0100Tario(~Tario@201.192.165.173) (Read error: Connection reset by peer)
2021-01-19 00:15:14 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Excess Flood)
2021-01-19 00:16:29 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com)
2021-01-19 00:17:08 +0100gehmehgeh(~ircuser1@gateway/tor-sasl/gehmehgeh) (Quit: Leaving)
2021-01-19 00:17:38 +0100Deide(~Deide@217.155.19.23) (Read error: Connection reset by peer)
2021-01-19 00:17:58 +0100Deide(~Deide@217.155.19.23)
2021-01-19 00:26:01 +0100benb(52456307@82-69-99-7.dsl.in-addr.zen.co.uk) (Quit: Ping timeout (120 seconds))
2021-01-19 00:27:37 +0100pera(~pera@unaffiliated/pera) (Ping timeout: 246 seconds)
2021-01-19 00:28:54 +0100aldessa(~hugh@cpc158605-hari23-2-0-cust303.20-2.cable.virginm.net)
2021-01-19 00:29:14 +0100tzh(~xax@c-24-21-73-154.hsd1.or.comcast.net) (Quit: jddsvksn)
2021-01-19 00:29:31 +0100 <aldessa> hi how do i pass rts options globally in stack.yaml?
2021-01-19 00:29:56 +0100heatsink(~heatsink@2600:1700:bef1:5e10:6c35:c27b:9d47:22a1)
2021-01-19 00:30:00 +0100 <aldessa> i'm doing under ghc-options:\n"$everything": "+RTS -A64M -RTS" and it doesn't work
2021-01-19 00:30:37 +0100 <aldessa> i can pass "$everything": "-j24" just fine though
2021-01-19 00:31:45 +0100heatsink(~heatsink@2600:1700:bef1:5e10:6c35:c27b:9d47:22a1) (Remote host closed the connection)
2021-01-19 00:32:39 +0100tzh(~tzh@c-24-21-73-154.hsd1.wa.comcast.net)
2021-01-19 00:32:47 +0100bogdanp(~bogdanp@188.24.80.165)
2021-01-19 00:33:11 +0100amiri(~amiri@cpe-76-91-154-9.socal.res.rr.com)
2021-01-19 00:37:23 +0100bogdanp(~bogdanp@188.24.80.165) (Ping timeout: 260 seconds)
2021-01-19 00:40:43 +0100neiluj(~jco@unaffiliated/neiluj) (Quit: leaving)
2021-01-19 00:42:19 +0100aldessa(~hugh@cpc158605-hari23-2-0-cust303.20-2.cable.virginm.net) (Ping timeout: 246 seconds)
2021-01-19 00:43:31 +0100aldessa(~hugh@cpc158605-hari23-2-0-cust303.20-2.cable.virginm.net)
2021-01-19 00:44:22 +0100cheater(~user@unaffiliated/cheater)
2021-01-19 00:45:18 +0100epicte7us(~epictetus@ip184-187-162-163.sb.sd.cox.net)
2021-01-19 00:45:25 +0100wroathe_(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-01-19 00:46:01 +0100aldessa(~hugh@cpc158605-hari23-2-0-cust303.20-2.cable.virginm.net) (Client Quit)
2021-01-19 00:46:12 +0100jespada_(~jespada@90.254.245.49)
2021-01-19 00:46:23 +0100Deide1(~Deide@217.155.19.23)
2021-01-19 00:46:39 +0100mputz1(~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de)
2021-01-19 00:46:51 +0100usr25_tm(~usr25@unaffiliated/usr25)
2021-01-19 00:47:18 +0100wroathe_(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Client Quit)
2021-01-19 00:47:41 +0100jespada(~jespada@90.254.245.49) (Ping timeout: 256 seconds)
2021-01-19 00:47:41 +0100meck(~meck@li1809-18.members.linode.com) (Ping timeout: 256 seconds)
2021-01-19 00:47:41 +0100Jd007(~Jd007@162.156.11.151) (Ping timeout: 256 seconds)
2021-01-19 00:48:02 +0100Deide(~Deide@217.155.19.23) (Ping timeout: 256 seconds)
2021-01-19 00:48:02 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 256 seconds)
2021-01-19 00:48:02 +0100Neuromancer(~Neuromanc@unaffiliated/neuromancer) (Ping timeout: 256 seconds)
2021-01-19 00:48:02 +0100juri_(~juri@178.63.35.222) (Ping timeout: 256 seconds)
2021-01-19 00:48:02 +0100noctux`(vfJTRUTp3M@unaffiliated/noctux) (Ping timeout: 256 seconds)
2021-01-19 00:48:20 +0100juri_(~juri@178.63.35.222)
2021-01-19 00:48:22 +0100noctux`(gtqXXADrE0@unaffiliated/noctux)
2021-01-19 00:48:36 +0100ep1ctetus(~epictetus@ip184-187-162-163.sb.sd.cox.net) (Ping timeout: 256 seconds)
2021-01-19 00:48:36 +0100mputz(~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de) (Ping timeout: 256 seconds)
2021-01-19 00:48:36 +0100usr25(~usr25@unaffiliated/usr25) (Ping timeout: 256 seconds)
2021-01-19 00:48:36 +0100Deewiant(~deewiant@de1.ut.deewiant.iki.fi) (Ping timeout: 256 seconds)
2021-01-19 00:48:39 +0100ph88^(~ph88@2a02:8109:9e00:7e5c:c85b:41a3:84e7:765d)
2021-01-19 00:48:54 +0100Deewiant(~deewiant@de1.ut.deewiant.iki.fi)
2021-01-19 00:48:58 +0100mputz1mputz
2021-01-19 00:52:17 +0100Tario(~Tario@201.192.165.173)
2021-01-19 00:52:58 +0100Gurkenglas(~Gurkengla@unaffiliated/gurkenglas) (Ping timeout: 256 seconds)
2021-01-19 00:53:08 +0100frankdmartinez(~frankdmar@208.91.107.132) (Quit: frankdmartinez)
2021-01-19 00:53:10 +0100russruss4(~russruss@my.russellmcc.com) (Quit: The Lounge - https://thelounge.chat)
2021-01-19 00:53:17 +0100meck(~meck@li1809-18.members.linode.com)
2021-01-19 00:53:31 +0100heatsink(~heatsink@2600:1700:bef1:5e10:6c35:c27b:9d47:22a1)
2021-01-19 00:54:19 +0100russruss4(~russruss@my.russellmcc.com)
2021-01-19 00:57:39 +0100hiroaki(~hiroaki@ip4d166c42.dynamic.kabel-deutschland.de) (Ping timeout: 272 seconds)
2021-01-19 00:58:49 +0100rhauch(~rhauch@195.140.213.38) (Remote host closed the connection)
2021-01-19 01:02:35 +0100conal(~conal@64.71.133.70)
2021-01-19 01:03:35 +0100p8m_(p8m@gateway/vpn/protonvpn/p8m)
2021-01-19 01:04:07 +0100cantstanya(~chatting@gateway/tor-sasl/cantstanya) (Remote host closed the connection)
2021-01-19 01:05:28 +0100frankdmartinez(~frankdmar@208.91.107.132)
2021-01-19 01:05:48 +0100elfets(~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de) (Quit: Leaving)
2021-01-19 01:06:23 +0100cantstanya(~chatting@gateway/tor-sasl/cantstanya)
2021-01-19 01:06:28 +0100Tuplanolla(~Tuplanoll@91-159-68-239.elisa-laajakaista.fi) (Ping timeout: 246 seconds)
2021-01-19 01:06:34 +0100inkbottlezebrag
2021-01-19 01:08:57 +0100ph88^(~ph88@2a02:8109:9e00:7e5c:c85b:41a3:84e7:765d) (Ping timeout: 272 seconds)
2021-01-19 01:12:06 +0100epicte7us(~epictetus@ip184-187-162-163.sb.sd.cox.net) (Read error: Connection reset by peer)
2021-01-19 01:12:08 +0100conal(~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
2021-01-19 01:13:49 +0100directhex1(~directhex@141.98.102.227)
2021-01-19 01:15:33 +0100jb55(~jb55@gateway/tor-sasl/jb55) (Remote host closed the connection)
2021-01-19 01:15:55 +0100jb55(~jb55@gateway/tor-sasl/jb55)
2021-01-19 01:20:37 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 264 seconds)
2021-01-19 01:20:37 +0100cr3(~cr3@192-222-143-195.qc.cable.ebox.net) (Ping timeout: 264 seconds)
2021-01-19 01:24:39 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Ping timeout: 256 seconds)
2021-01-19 01:28:32 +0100Guest39046(~reda@4.ip-137-74-112.eu) (Changing host)
2021-01-19 01:28:32 +0100Guest39046(~reda@unaffiliated/reda)
2021-01-19 01:28:39 +0100Guest39046reda
2021-01-19 01:30:10 +0100carldd1(~carldd@90-224-49-113-no56.tbcn.telia.com)
2021-01-19 01:30:40 +0100carldd(~carldd@90-224-49-113-no56.tbcn.telia.com) (Read error: Connection reset by peer)
2021-01-19 01:30:43 +0100centril(~centril@213-66-146-92-no250.tbcn.telia.com) (Ping timeout: 260 seconds)
2021-01-19 01:31:09 +0100centril(~centril@213-66-146-92-no250.tbcn.telia.com)
2021-01-19 01:32:56 +0100lambda-11235(~lambda-11@2600:1700:7c70:4600:50e3:db3a:2e94:2ef6) (Ping timeout: 240 seconds)
2021-01-19 01:33:05 +0100conal(~conal@64.71.133.70)
2021-01-19 01:33:27 +0100frankdmartinez(~frankdmar@208.91.107.132) (Quit: frankdmartinez)
2021-01-19 01:34:11 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-01-19 01:34:14 +0100usr25_tm(~usr25@unaffiliated/usr25) (Quit: Leaving)
2021-01-19 01:37:17 +0100cr3(~cr3@192-222-143-195.qc.cable.ebox.net)
2021-01-19 01:37:42 +0100london(~london@pool-108-28-184-193.washdc.fios.verizon.net)
2021-01-19 01:37:57 +0100LKoen(~LKoen@119.169.9.109.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.”)
2021-01-19 01:38:36 +0100directhex1(~directhex@141.98.102.227) (Ping timeout: 240 seconds)
2021-01-19 01:45:13 +0100mputz(~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de) (Ping timeout: 264 seconds)
2021-01-19 01:47:22 +0100tsrt^(~hph@ip98-184-89-2.mc.at.cox.net) ()
2021-01-19 01:47:49 +0100Stanley00(~stanley00@unaffiliated/stanley00)
2021-01-19 01:48:53 +0100olligobber(olligobber@gateway/vpn/privateinternetaccess/olligobber)
2021-01-19 01:49:32 +0100frankdmartinez(~frankdmar@208.91.107.132)
2021-01-19 01:49:32 +0100frankdmartinez(~frankdmar@208.91.107.132) (Client Quit)
2021-01-19 01:52:05 +0100Tario(~Tario@201.192.165.173) (Read error: Connection reset by peer)
2021-01-19 01:52:55 +0100Tario(~Tario@201.192.165.173)
2021-01-19 01:55:14 +0100Deide1(~Deide@217.155.19.23) (Quit: Seeee yaaaa)
2021-01-19 01:56:36 +0100Stanley00(~stanley00@unaffiliated/stanley00) (Ping timeout: 256 seconds)
2021-01-19 01:59:01 +0100former_ocamler(3263cbdb@50.99.203.219)
2021-01-19 01:59:23 +0100vs^(vs@ip98-184-89-2.mc.at.cox.net)
2021-01-19 01:59:28 +0100 <former_ocamler> hi friends, i'm not 100% sure what the compilation error is here, any help would be appreciated:
2021-01-19 01:59:28 +0100 <former_ocamler> tmp :: String -> [Int]
2021-01-19 01:59:29 +0100 <former_ocamler> tmp = tail . lines <$> words <$> read <$> (foldr xor 0)
2021-01-19 01:59:39 +0100 <former_ocamler> requires import Data.Bits
2021-01-19 01:59:59 +0100Alleria(~textual@2603-7000-3040-0000-6de2-9de3-adc0-7711.res6.spectrum.com)
2021-01-19 02:00:23 +0100AlleriaGuest77901
2021-01-19 02:01:16 +0100 <koz_> former_ocamler: What's this supposed to do?
2021-01-19 02:02:07 +0100 <former_ocamler> read input that looks like a line of integers
2021-01-19 02:02:08 +0100 <former_ocamler> # throw away this line
2021-01-19 02:02:08 +0100 <former_ocamler> 1 2 1 1 2 8 8
2021-01-19 02:02:09 +0100 <former_ocamler> 1 1 0 0 5 5
2021-01-19 02:02:09 +0100 <former_ocamler> 2
2021-01-19 02:02:24 +0100 <former_ocamler> and return the xor of all the lines in a list -> [1, 0, 2]
2021-01-19 02:02:51 +0100 <former_ocamler> well the input reading is done elsewhere
2021-01-19 02:03:18 +0100 <koz_> Have you tried writing it not-pointfree?
2021-01-19 02:03:23 +0100 <koz_> It might make the error more apparent.
2021-01-19 02:03:43 +0100 <former_ocamler> oh good point, ill try that
2021-01-19 02:03:55 +0100 <siraben> former_ocamler: also you'll want to use foldl' instead of foldr
2021-01-19 02:04:04 +0100 <siraben> xor is associative, so this change is safe.
2021-01-19 02:04:05 +0100 <koz_> siraben: That's a low priority.
2021-01-19 02:04:12 +0100 <koz_> Let's get code that compiles first.
2021-01-19 02:04:18 +0100rajivr(uid269651@gateway/web/irccloud.com/x-sozgnodbahkqqgom)
2021-01-19 02:04:19 +0100 <siraben> right
2021-01-19 02:04:47 +0100Guest77901(~textual@2603-7000-3040-0000-6de2-9de3-adc0-7711.res6.spectrum.com) (Ping timeout: 260 seconds)
2021-01-19 02:05:23 +0100 <siraben> The parsing seems to be incorrect as well
2021-01-19 02:05:38 +0100 <koz_> siraben: Hence why I think a good first step is 'don't write this pointless'.
2021-01-19 02:05:44 +0100 <koz_> Since that'd make it apparent rather quickly.
2021-01-19 02:05:50 +0100 <siraben> mm
2021-01-19 02:08:37 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds)
2021-01-19 02:09:08 +0100 <former_ocamler> found one error, replaced read with (fmap read)
2021-01-19 02:10:45 +0100conal(~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
2021-01-19 02:11:15 +0100adeene(~adeene@181.131.0.191)
2021-01-19 02:11:19 +0100 <adeene> ola
2021-01-19 02:11:27 +0100 <adeene> este es un canal de programadores?
2021-01-19 02:11:58 +0100 <koz_> adeene: este es un canal where we speak English.
2021-01-19 02:13:53 +0100JJ15_(~JJ@2a00:23a8:4382:a900:fcf7:2eda:8a08:e4bf)
2021-01-19 02:16:09 +0100 <former_ocamler> oh I think I might be using the fmap operator backwards?
2021-01-19 02:18:17 +0100JJ15(~JJ@2a00:23a8:4382:a900:824:234b:c258:aff8) (Ping timeout: 260 seconds)
2021-01-19 02:18:18 +0100columbarius1(~columbari@mue-88-130-54-186.dsl.tropolys.de) (Ping timeout: 260 seconds)
2021-01-19 02:18:49 +0100xff0x_(~xff0x@port-92-195-7-153.dynamic.as20676.net) (Ping timeout: 264 seconds)
2021-01-19 02:20:18 +0100columbarius1(~columbari@mue-88-130-54-057.dsl.tropolys.de)
2021-01-19 02:21:08 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-01-19 02:21:26 +0100hexo(~hexo@gateway/tor-sasl/hexo) (Ping timeout: 268 seconds)
2021-01-19 02:22:40 +0100srk(~sorki@gateway/tor-sasl/sorki) (Ping timeout: 268 seconds)
2021-01-19 02:23:42 +0100srk(~sorki@gateway/tor-sasl/sorki)
2021-01-19 02:23:42 +0100hexo(~hexo@gateway/tor-sasl/hexo)
2021-01-19 02:23:49 +0100 <former_ocamler> okay I've managed to get it to compile:
2021-01-19 02:23:49 +0100 <former_ocamler> tmp4 :: String -> [Int]
2021-01-19 02:23:50 +0100 <former_ocamler> tmp4 s = foldr xor 0 <$> (fmap read) <$> words <$> (tail . lines $ s)
2021-01-19 02:24:08 +0100 <former_ocamler> anyone know if its possible to avoid naming the argument here?
2021-01-19 02:25:26 +0100 <koz_> @pl \s -> fold xor 0 <$> (fmap read) <$> words <$> (tail . lines $ s)
2021-01-19 02:25:27 +0100 <lambdabot> ((fold xor 0 <$> fmap read <$> words) <$>) . tail . lines
2021-01-19 02:25:30 +0100 <koz_> Here.
2021-01-19 02:25:37 +0100 <koz_> Although I would argue that this is not more readable.
2021-01-19 02:25:48 +0100 <koz_> Heck, I'd argue that the named arg version is not readable!
2021-01-19 02:25:54 +0100 <former_ocamler> yeah same
2021-01-19 02:25:59 +0100 <koz_> The chained <$> is _especially_ egregious.
2021-01-19 02:26:40 +0100 <former_ocamler> oh I thought chaining <$> was considered to be the correct way of composing fmaps
2021-01-19 02:26:59 +0100 <koz_> .... no?
2021-01-19 02:27:12 +0100 <koz_> As in, this is literally not a thing I have ever heard anyone claim or say literally in any place.
2021-01-19 02:27:20 +0100 <koz_> <$> is just an infix fmap.
2021-01-19 02:27:49 +0100 <former_ocamler> oh lol, okay here is another version ive made
2021-01-19 02:27:50 +0100 <former_ocamler> tmp5 :: String -> [Int]
2021-01-19 02:27:50 +0100 <former_ocamler> tmp5 s = ((foldr xor 0) . (fmap read) . words) <$> (tail . lines $ s)
2021-01-19 02:27:58 +0100 <koz_> That is significantly less terrible.
2021-01-19 02:28:09 +0100 <former_ocamler> hahahaha thank you!
2021-01-19 02:28:27 +0100 <koz_> <$> is just fmap that happens to be infix.
2021-01-19 02:28:33 +0100 <koz_> :t fmap
2021-01-19 02:28:35 +0100 <lambdabot> Functor f => (a -> b) -> f a -> f b
2021-01-19 02:28:37 +0100 <koz_> :t (<$>)
2021-01-19 02:28:39 +0100 <lambdabot> Functor f => (a -> b) -> f a -> f b
2021-01-19 02:29:25 +0100 <glguy> :t fmap (foldr xor 0 . fmap read . words) . tail . lines
2021-01-19 02:29:26 +0100 <lambdabot> (Bits b, Num b, Read b) => String -> [b]
2021-01-19 02:32:25 +0100benb(52456307@82-69-99-7.dsl.in-addr.zen.co.uk)
2021-01-19 02:33:04 +0100bogdanp(~bogdanp@188.24.80.165)
2021-01-19 02:35:34 +0100 <monochrom> I think that a problem with chaining <$>s is that no one remembers whether <$> associates to the left or to the right. Without that information, chaining <$>s is an encryption.
2021-01-19 02:36:21 +0100 <former_ocamler> hahaha yeah I ran into that for sure today, tbh "." sort of messes me up sometimes as well, cause i confuse it with $
2021-01-19 02:36:56 +0100 <former_ocamler> do you pro haskeller's spend a lot of time converting to point-free code, or is it just natural to you?
2021-01-19 02:37:13 +0100 <monochrom> . is different. "f . g . h" is just like unix pipelining "h | g | f". And no one has trouble with unix pipelining.
2021-01-19 02:37:28 +0100bogdanp(~bogdanp@188.24.80.165) (Ping timeout: 246 seconds)
2021-01-19 02:37:45 +0100 <monochrom> And . is associative both ways.
2021-01-19 02:37:50 +0100 <monochrom> (So is | )
2021-01-19 02:39:15 +0100andreas303(~andreas@gateway/tor-sasl/andreas303) (Remote host closed the connection)
2021-01-19 02:39:25 +0100 <monochrom> I write what makes sense for each scenerio. I don't know what "natural" means. Does it have a meaning?
2021-01-19 02:39:54 +0100andreas303(~andreas@gateway/tor-sasl/andreas303)
2021-01-19 02:40:00 +0100former_ocamler(3263cbdb@50.99.203.219) (Quit: Connection closed)
2021-01-19 02:41:41 +0100xff0x_(~xff0x@2001:1a81:53a7:7f00:cf3d:9916:d616:6e16)
2021-01-19 02:43:23 +0100shatriff(~vitaliish@176-52-216-242.irishtelecom.com)
2021-01-19 02:43:38 +0100hexo(~hexo@gateway/tor-sasl/hexo) (Ping timeout: 268 seconds)
2021-01-19 02:43:38 +0100srk(~sorki@gateway/tor-sasl/sorki) (Ping timeout: 268 seconds)
2021-01-19 02:44:03 +0100srk(~sorki@gateway/tor-sasl/sorki)
2021-01-19 02:44:04 +0100hexo(~hexo@gateway/tor-sasl/hexo)
2021-01-19 02:50:03 +0100m0rphism(~m0rphism@HSI-KBW-085-216-104-059.hsi.kabelbw.de) (Ping timeout: 260 seconds)
2021-01-19 02:52:42 +0100f-a(~f-a@151.34.52.239)
2021-01-19 02:55:58 +0100Kaeipi(~Kaiepi@47.54.252.148) (Remote host closed the connection)
2021-01-19 02:55:59 +0100JJ15_(~JJ@2a00:23a8:4382:a900:fcf7:2eda:8a08:e4bf) (Quit: Leaving)
2021-01-19 02:57:22 +0100Kaeipi(~Kaiepi@47.54.252.148)
2021-01-19 02:57:39 +0100 <xsperry> :t map (foldr xor 0 . map read . words) . tail . lines
2021-01-19 02:57:40 +0100 <lambdabot> (Bits b, Num b, Read b) => String -> [b]
2021-01-19 02:57:58 +0100Kaeipi(~Kaiepi@47.54.252.148) (Remote host closed the connection)
2021-01-19 02:58:38 +0100jespada_(~jespada@90.254.245.49) (Ping timeout: 272 seconds)
2021-01-19 03:01:28 +0100Kaeipi(~Kaiepi@47.54.252.148)
2021-01-19 03:02:26 +0100f-a(~f-a@151.34.52.239) ()
2021-01-19 03:04:41 +0100jespada(~jespada@90.254.241.81)
2021-01-19 03:09:00 +0100conal(~conal@64.71.133.70)
2021-01-19 03:09:58 +0100Kaeipi(~Kaiepi@47.54.252.148) (Remote host closed the connection)
2021-01-19 03:10:43 +0100Kaeipi(~Kaiepi@47.54.252.148)
2021-01-19 03:11:03 +0100Rudd0(~Rudd0@185.189.115.103) (Ping timeout: 260 seconds)
2021-01-19 03:11:03 +0100lambda-11235(~lambda-11@2600:1700:7c70:4600:c862:8756:823c:2b6b)
2021-01-19 03:11:28 +0100Kaeipi(~Kaiepi@47.54.252.148) (Remote host closed the connection)
2021-01-19 03:11:37 +0100hyperisco(~hyperisco@104-195-141-253.cpe.teksavvy.com) (Ping timeout: 264 seconds)
2021-01-19 03:12:21 +0100Kaeipi(~Kaiepi@47.54.252.148)
2021-01-19 03:12:49 +0100nineonine(~nineonine@50.216.62.2) (Ping timeout: 264 seconds)
2021-01-19 03:13:06 +0100 <justsomeguy> I think of Data.Function.((&)) as being like a unix pipeline, and (.) as a pipeline in reverse.
2021-01-19 03:14:50 +0100 <justsomeguy> ...which I just now noticed that you illustrated in your example.
2021-01-19 03:14:55 +0100minne(~minne_@51.194.80.91) (Ping timeout: 246 seconds)
2021-01-19 03:15:10 +0100 <ephemient> :i <$>
2021-01-19 03:15:15 +0100xff0x_(~xff0x@2001:1a81:53a7:7f00:cf3d:9916:d616:6e16) (Ping timeout: 260 seconds)
2021-01-19 03:15:26 +0100 <ephemient> % :i <$>
2021-01-19 03:15:26 +0100 <yahb> ephemient: (<$>) :: Functor f => (a -> b) -> f a -> f b -- Defined in `Data.Functor'; infixl 4 <$>
2021-01-19 03:15:27 +0100jpds(~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection)
2021-01-19 03:15:45 +0100 <ephemient> (not sure how to get lambdabot to spit out the same)
2021-01-19 03:16:02 +0100jpds(~jpds@gateway/tor-sasl/jpds)
2021-01-19 03:16:13 +0100 <ephemient> all the <$, <$>, $>, <*, <*>, *> functions are left associative
2021-01-19 03:16:54 +0100xff0x_(~xff0x@2001:1a81:53c4:c00:1d1:2793:e84f:a616)
2021-01-19 03:20:22 +0100 <nshepperd2> spooky
2021-01-19 03:20:51 +0100 <siraben> dang former_ocamler left
2021-01-19 03:20:56 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com)
2021-01-19 03:21:03 +0100 <siraben> i was gonna say, using the map functor law and foldr/map fusion law we have
2021-01-19 03:21:05 +0100 <siraben> tmp5 s = foldr (xor . read) 0 . words <$> (tail . lines $ s)
2021-01-19 03:21:11 +0100 <nshepperd2> 'f <$> g <$> x' works because the first <$> uses the Functor instance for functions
2021-01-19 03:21:55 +0100 <ephemient> I don't know if this is the justification, but >>= only makes sense as left associative, so might as well have everything else be left associative too?
2021-01-19 03:22:08 +0100 <siraben> Better: tmp5 s = foldl' (flip (xor . read)) 0 . words <$> (tail . lines $ s)
2021-01-19 03:27:55 +0100lambda-11235(~lambda-11@2600:1700:7c70:4600:c862:8756:823c:2b6b) (Max SendQ exceeded)
2021-01-19 03:28:27 +0100drbean(~drbean@TC210-63-209-49.static.apol.com.tw)
2021-01-19 03:28:29 +0100lambda-11235(~lambda-11@2600:1700:7c70:4600:c862:8756:823c:2b6b)
2021-01-19 03:28:43 +0100 <ephemient> hmm...
2021-01-19 03:29:03 +0100 <ephemient> > f <*> a `ap` b
2021-01-19 03:29:05 +0100 <lambdabot> error:
2021-01-19 03:29:05 +0100 <lambdabot> • Couldn't match expected type ‘f (a0 -> a1)’
2021-01-19 03:29:05 +0100 <lambdabot> with actual type ‘Expr’
2021-01-19 03:29:18 +0100 <ephemient> :t \f a b -> f <*> a `ap` b
2021-01-19 03:29:20 +0100 <lambdabot> Monad f => f (a1 -> b) -> f (a2 -> a1) -> f a2 -> f b
2021-01-19 03:29:29 +0100 <ephemient> :t \f a b -> f `ap` a <*> b
2021-01-19 03:29:30 +0100 <lambdabot> Monad f => f (a1 -> a2 -> b) -> f a1 -> f a2 -> f b
2021-01-19 03:29:42 +0100 <ephemient> that feels unfortunate
2021-01-19 03:30:02 +0100pja(~phil@2a02:8010:6098:0:f2de:f1ff:fe2c:3d9) (Ping timeout: 264 seconds)
2021-01-19 03:30:58 +0100 <ephemient> is it too late to declare a fixity for `ap`?
2021-01-19 03:31:20 +0100 <siraben> I thought you can't declare fixity for ad-hoc infix?
2021-01-19 03:31:38 +0100 <ephemient> sure you can
2021-01-19 03:31:47 +0100viluon(uid453725@gateway/web/irccloud.com/x-driokqiqmgrrqcka) (Quit: Connection closed for inactivity)
2021-01-19 03:32:29 +0100 <ephemient> % :i mod
2021-01-19 03:32:30 +0100 <yahb> ephemient: type Integral :: * -> Constraint; class (Real a, Enum a) => Integral a where; ...; mod :: a -> a -> a; ...; -- Defined in `GHC.Real'; infixl 7 `mod`
2021-01-19 03:34:24 +0100pja(~phil@2a02:8010:6098:0:f2de:f1ff:fe2c:3d9)
2021-01-19 03:34:59 +0100london(~london@pool-108-28-184-193.washdc.fios.verizon.net) (Ping timeout: 256 seconds)
2021-01-19 03:36:53 +0100 <monochrom> You can declare fixity in the same file you define the name. No difference between "alphabetical" name and "symbolic" name.
2021-01-19 03:38:40 +0100bogdanp(~bogdanp@188.24.80.165)
2021-01-19 03:40:54 +0100frankdmartinez(~frankdmar@208.91.107.132)
2021-01-19 03:40:54 +0100frankdmartinez(~frankdmar@208.91.107.132) (Client Quit)
2021-01-19 03:40:57 +0100xff0x_(~xff0x@2001:1a81:53c4:c00:1d1:2793:e84f:a616) (Ping timeout: 272 seconds)
2021-01-19 03:41:45 +0100Aquazi(uid312403@gateway/web/irccloud.com/x-oaoeybeprgtveedp) (Quit: Connection closed for inactivity)
2021-01-19 03:42:41 +0100benb(52456307@82-69-99-7.dsl.in-addr.zen.co.uk) (Quit: Ping timeout (120 seconds))
2021-01-19 03:42:42 +0100ADG1089_(~adg1089@122.163.219.236)
2021-01-19 03:43:25 +0100bogdanp(~bogdanp@188.24.80.165) (Ping timeout: 264 seconds)
2021-01-19 03:43:25 +0100ADG1089_(~adg1089@122.163.219.236) (Read error: Connection reset by peer)
2021-01-19 03:43:37 +0100Kaeipi(~Kaiepi@47.54.252.148) (Remote host closed the connection)
2021-01-19 03:43:59 +0100Kaeipi(~Kaiepi@47.54.252.148)
2021-01-19 03:44:56 +0100bogdanp(~bogdanp@188.24.80.165)
2021-01-19 03:45:17 +0100niekvandepas(~niekvande@dhcp-077-249-088-250.chello.nl)
2021-01-19 03:46:22 +0100plutoniix(~q@184.82.204.73)
2021-01-19 03:46:49 +0100ADG1089_(~adg1089@122.163.219.236)
2021-01-19 03:46:49 +0100ADG1089_(~adg1089@122.163.219.236) (Read error: Connection reset by peer)
2021-01-19 03:47:17 +0100pja(~phil@2a02:8010:6098:0:f2de:f1ff:fe2c:3d9) (Ping timeout: 272 seconds)
2021-01-19 03:47:46 +0100pja(~phil@2a02:8010:6098:0:f2de:f1ff:fe2c:3d9)
2021-01-19 03:49:43 +0100niekvandepas(~niekvande@dhcp-077-249-088-250.chello.nl) (Ping timeout: 256 seconds)
2021-01-19 03:49:43 +0100bogdanp(~bogdanp@188.24.80.165) (Ping timeout: 256 seconds)
2021-01-19 03:54:24 +0100magnuscake(~magnuscak@87-121-92-61.dyn.launtel.net.au)
2021-01-19 03:55:24 +0100Stanley00(~stanley00@unaffiliated/stanley00)
2021-01-19 03:55:27 +0100ADG1089_(~adg1089@122.163.219.236)
2021-01-19 03:55:27 +0100sayola(~vekto@dslb-002-201-085-014.002.201.pools.vodafone-ip.de)
2021-01-19 03:56:00 +0100 <magnuscake> Hello fellow Haskellers! I recently came across some code and would really appreciate if you could help me wrap my mind around it. So I have the following code
2021-01-19 03:56:00 +0100ADG1089_(~adg1089@122.163.219.236) (Read error: Connection reset by peer)
2021-01-19 03:56:29 +0100 <magnuscake> applyTimes :: (Eq a, Num a) => a -> (b -> b) -> b
2021-01-19 03:56:36 +0100 <magnuscake> applyTimes 0 f b = b
2021-01-19 03:56:43 +0100frankdmartinez(~frankdmar@208.91.107.132)
2021-01-19 03:56:58 +0100ADG1089_(~adg1089@122.163.219.236)
2021-01-19 03:57:02 +0100 <magnuscake> applyTimes n f b = f . applyTimes (n - 1) f $ b
2021-01-19 03:57:13 +0100 <magnuscake> This of course is a recursive function
2021-01-19 03:57:27 +0100 <magnuscake> Now I shall apply the function as follows:
2021-01-19 03:57:41 +0100 <magnuscake> applyTimes 3 (+1) 7
2021-01-19 03:57:57 +0100 <magnuscake> The result comes to 10
2021-01-19 03:58:47 +0100heatsink(~heatsink@2600:1700:bef1:5e10:6c35:c27b:9d47:22a1) (Remote host closed the connection)
2021-01-19 03:58:54 +0100 <glguy> correct
2021-01-19 03:58:54 +0100 <magnuscake> Which is correct however I don't understand why the application only increments it once. We are using composition;
2021-01-19 03:58:59 +0100 <magnuscake> f . applyTimes
2021-01-19 03:59:05 +0100 <magnuscake> but then there is also
2021-01-19 03:59:10 +0100 <magnuscake> f $ b
2021-01-19 03:59:26 +0100 <glguy> get rid of the . and $ noise
2021-01-19 03:59:33 +0100urodna(~urodna@unaffiliated/urodna) (Quit: urodna)
2021-01-19 03:59:40 +0100 <glguy> f . applyTimes (n - 1) f $ b --becomes-- f (applyTimes (n - 1) f b)
2021-01-19 03:59:43 +0100 <magnuscake> so technically won't `f $ b` produce a result and then get applied to f again?
2021-01-19 03:59:59 +0100 <magnuscake> ok
2021-01-19 04:00:28 +0100sgibber2018(d055ed90@208.85.237.144)
2021-01-19 04:00:49 +0100 <glguy> a b $ c --means-- (a b) c
2021-01-19 04:00:55 +0100 <glguy> not: a (b c)
2021-01-19 04:01:27 +0100nineonine(~nineonine@50.216.62.2)
2021-01-19 04:01:39 +0100 <magnuscake> So remove the $
2021-01-19 04:01:41 +0100 <magnuscake> and we get
2021-01-19 04:02:07 +0100 <magnuscake> (f . applyTimes (n - 1)) f b
2021-01-19 04:02:12 +0100 <glguy> f . applyTimes (n - 1) f $ b --remove$-- (f . applyTimes (n - 1) f) b
2021-01-19 04:02:13 +0100 <magnuscake> Correct?
2021-01-19 04:02:45 +0100 <ephemient> no
2021-01-19 04:03:42 +0100 <glguy> f . a b c $ x --is-- (f . ((a b) c)) $ x
2021-01-19 04:03:46 +0100 <ephemient> it means f . (applyTimes (n - 1) f) $ b
2021-01-19 04:04:00 +0100 <ephemient> function application is left associative and binds tighter than anything else
2021-01-19 04:04:45 +0100 <magnuscake> Ok so if we were to apply the function like above
2021-01-19 04:04:47 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-01-19 04:05:10 +0100 <magnuscake> applyTimes 3 (+1) 7
2021-01-19 04:05:14 +0100 <magnuscake> becomes
2021-01-19 04:05:56 +0100 <magnuscake> ((+1) . applyTimes (3 - 1) (+1)) 7
2021-01-19 04:05:59 +0100 <magnuscake> Correct?
2021-01-19 04:06:19 +0100 <ephemient> good so far
2021-01-19 04:06:32 +0100 <magnuscake> Ok
2021-01-19 04:07:02 +0100 <magnuscake> Im not going to recurse through this so we evaluate it as given
2021-01-19 04:07:25 +0100 <ephemient> you need the definition of (.) to evaluate this
2021-01-19 04:08:10 +0100 <ephemient> ((+1) . applyTimes 2 (+1)) 7 == (.) (+1) (applyTimes 2 (+1)) 7
2021-01-19 04:08:19 +0100 <magnuscake> Yes so first applyTimes is evaluated to produce the result correct?
2021-01-19 04:08:53 +0100 <magnuscake> Because then that result is passed to (+1) on the left side, right?
2021-01-19 04:09:10 +0100 <magnuscake> (.) :: (b -> c) -> (a -> b) -> c
2021-01-19 04:09:24 +0100 <ephemient> (.) f g a = f (g a), so yes, this becomes (+1) (applyTimes 2 (+1) 7)
2021-01-19 04:10:59 +0100 <magnuscake> Ok since we are applying (+1) to 7 and ignoring 2 for the sake of ease, we would get 8 correct?
2021-01-19 04:11:29 +0100 <magnuscake> something like but not accurate to;
2021-01-19 04:11:57 +0100 <magnuscake> (.) (+1) (applyTimes 8)
2021-01-19 04:12:20 +0100bogdanp(~bogdanp@188.24.80.165)
2021-01-19 04:12:27 +0100 <magnuscake> I know this is not right but I am trying the understand how the (+1) ties into all of this
2021-01-19 04:12:39 +0100 <ephemient> no
2021-01-19 04:12:45 +0100 <magnuscake> *(+1) on the left
2021-01-19 04:12:57 +0100 <magnuscake> Oh
2021-01-19 04:13:31 +0100 <ephemient> applyTimes 2 (+1) 7 == ((applyTimes 2) (+1)) 7
2021-01-19 04:13:36 +0100 <ephemient> not sure where you get the 8 from
2021-01-19 04:14:57 +0100 <Feuermagier> what does "Char :->: String" mean?
2021-01-19 04:15:17 +0100 <glguy> Feuermagier, it means someone made up the operator :->: and used it with Char and String
2021-01-19 04:15:28 +0100 <Feuermagier> ah, wonderful
2021-01-19 04:15:31 +0100hexo(~hexo@gateway/tor-sasl/hexo) (Ping timeout: 268 seconds)
2021-01-19 04:15:31 +0100srk(~sorki@gateway/tor-sasl/sorki) (Ping timeout: 268 seconds)
2021-01-19 04:15:52 +0100srk(~sorki@gateway/tor-sasl/sorki)
2021-01-19 04:15:52 +0100hexo(~hexo@gateway/tor-sasl/hexo)
2021-01-19 04:15:55 +0100 <Feuermagier> didn't even know that one can do that in haskell
2021-01-19 04:16:01 +0100 <magnuscake> I was using the original function def as given above to apply (+1) to 7
2021-01-19 04:16:07 +0100acidjnk_new(~acidjnk@p200300d0c704e739989dd075055fe92d.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
2021-01-19 04:16:18 +0100 <magnuscake> Guess I was wrong there
2021-01-19 04:16:36 +0100bogdanp(~bogdanp@188.24.80.165) (Ping timeout: 240 seconds)
2021-01-19 04:17:18 +0100 <magnuscake> SO just to be clear
2021-01-19 04:17:54 +0100 <magnuscake> applyTimes n f b = f . applyTimes (n - 1) f $ b
2021-01-19 04:17:55 +0100nilof(~olofs@90-227-86-119-no542.tbcn.telia.com) (Ping timeout: 246 seconds)
2021-01-19 04:18:12 +0100 <magnuscake> How come f is only being applied once here?
2021-01-19 04:18:27 +0100 <glguy> f isn't being applied any times there
2021-01-19 04:18:46 +0100 <glguy> it's just an argument to (.) and an argument to (applyTimes (n-1))
2021-01-19 04:19:29 +0100 <glguy> f . applyTimes (n - 1) f $ b --is_a_more_confusing-- f (applyTimes (n - 1) f b)
2021-01-19 04:20:12 +0100 <glguy> applyTimes 3 f b == f (applyTimes 2 f b) == f (f (applyTimes 1 f b)) == f (f (f (applyTimes 0 f b))) == f (f (f b))
2021-01-19 04:21:57 +0100 <magnuscake> Oh yes that makes complete sense now!!
2021-01-19 04:22:35 +0100 <magnuscake> Thank you very much glguy and ephemient. Really appreciate your help
2021-01-19 04:23:12 +0100cr3(~cr3@192-222-143-195.qc.cable.ebox.net) (Quit: leaving)
2021-01-19 04:23:15 +0100 <ephemient> Feuermagier: as :->: starts with a :, it must be a type, data constructor, or type operator
2021-01-19 04:23:38 +0100 <Feuermagier> I have a "data Rule = Char :->: String "
2021-01-19 04:23:48 +0100 <ephemient> yep, that's a data constructor there
2021-01-19 04:24:15 +0100 <ephemient> it's the same as writing data Rule = RuleConstructor Char String, except RuleConstructor is named (:->:)
2021-01-19 04:24:25 +0100 <Feuermagier> ah
2021-01-19 04:24:42 +0100jedws(~jedws@121.209.139.157)
2021-01-19 04:24:51 +0100heatsink(~heatsink@2600:1700:bef1:5e10:6c35:c27b:9d47:22a1)
2021-01-19 04:24:51 +0100 <Feuermagier> so like ` but for constructors?
2021-01-19 04:25:12 +0100 <ephemient> hmm, not quite. more like upper case
2021-01-19 04:26:12 +0100 <ephemient> alphabetical names starting with upper case are modules, types, or data constructors; alphabetical names starting with lower case are type variables or variables
2021-01-19 04:26:57 +0100 <ephemient> similarly, symbolic names starting with : are types, data constructors, or type operators; symbolic names not starting with : are variables
2021-01-19 04:27:50 +0100Saukk(~Saukk@83-148-239-3.dynamic.lounea.fi)
2021-01-19 04:28:16 +0100 <ephemient> > let a --> b = [a..b] in 1 --> 3
2021-01-19 04:28:18 +0100 <lambdabot> [1,2,3]
2021-01-19 04:28:44 +0100 <ephemient> same idea, but for a constructor instead of a binding
2021-01-19 04:34:38 +0100nineonine(~nineonine@50.216.62.2) (Remote host closed the connection)
2021-01-19 04:35:18 +0100nineonine(~nineonine@50.216.62.2)
2021-01-19 04:37:05 +0100justsomeguy(~justsomeg@unaffiliated/--/x-3805311) (Ping timeout: 240 seconds)
2021-01-19 04:37:26 +0100ahf(ahf@irssi/staff/ahf) (Remote host closed the connection)
2021-01-19 04:37:33 +0100ahf(ahf@irssi/staff/ahf)
2021-01-19 04:37:39 +0100ahf_(ahf@irssi/staff/ahf)
2021-01-19 04:38:05 +0100theDon(~td@muedsl-82-207-238-201.citykom.de) (Ping timeout: 240 seconds)
2021-01-19 04:38:40 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2021-01-19 04:38:57 +0100srk(~sorki@gateway/tor-sasl/sorki) (Ping timeout: 268 seconds)
2021-01-19 04:39:34 +0100hexo(~hexo@gateway/tor-sasl/hexo) (Ping timeout: 268 seconds)
2021-01-19 04:40:01 +0100theDon(~td@94.134.91.134)
2021-01-19 04:41:13 +0100ADG1089_(~adg1089@122.163.219.236) (Ping timeout: 272 seconds)
2021-01-19 04:41:32 +0100srk(~sorki@gateway/tor-sasl/sorki)
2021-01-19 04:41:32 +0100hexo(~hexo@gateway/tor-sasl/hexo)
2021-01-19 04:44:55 +0100mirrorbird(~psutcliff@2a00:801:42b:aff3:74af:2f22:932d:eac0) (Ping timeout: 272 seconds)
2021-01-19 04:45:01 +0100olligobber(olligobber@gateway/vpn/privateinternetaccess/olligobber) (Remote host closed the connection)
2021-01-19 04:45:32 +0100adeene(~adeene@181.131.0.191) (Read error: Connection reset by peer)
2021-01-19 04:45:55 +0100jamm(~jamm@unaffiliated/jamm)
2021-01-19 04:46:26 +0100adeene(~adeene@181.131.0.191)
2021-01-19 04:47:01 +0100olligobber(olligobber@gateway/vpn/privateinternetaccess/olligobber)
2021-01-19 04:48:06 +0100Tario(~Tario@201.192.165.173) (Read error: Connection reset by peer)
2021-01-19 04:50:11 +0100adeene(~adeene@181.131.0.191) (Read error: Connection reset by peer)
2021-01-19 04:50:27 +0100jamm(~jamm@unaffiliated/jamm) (Ping timeout: 260 seconds)
2021-01-19 04:51:25 +0100xirhtogal(~lagothrix@unaffiliated/lagothrix)
2021-01-19 04:51:26 +0100lagothrix(~lagothrix@unaffiliated/lagothrix) (Killed (verne.freenode.net (Nickname regained by services)))
2021-01-19 04:51:26 +0100xirhtogallagothrix
2021-01-19 04:51:34 +0100adeene(~adeene@181.131.0.191)
2021-01-19 04:52:17 +0100ahf_(ahf@irssi/staff/ahf) (Quit: Lost terminal)
2021-01-19 04:54:01 +0100bogdanp(~bogdanp@188.24.80.165)
2021-01-19 04:55:47 +0100lambda-11235(~lambda-11@2600:1700:7c70:4600:c862:8756:823c:2b6b) (Quit: Bye)
2021-01-19 05:01:32 +0100SupaYoshi(~supayoshi@213-10-140-13.fixed.kpn.net) (Quit: Goodbye!)
2021-01-19 05:01:34 +0100Rudd0(~Rudd0@185.189.115.103)
2021-01-19 05:02:05 +0100ADG1089_(~adg1089@27.63.60.143)
2021-01-19 05:02:34 +0100SupaYoshi(~supayoshi@213-10-140-13.fixed.kpn.net)
2021-01-19 05:02:55 +0100jpds(~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection)
2021-01-19 05:03:02 +0100bogdanp(~bogdanp@188.24.80.165) (Ping timeout: 256 seconds)
2021-01-19 05:03:17 +0100jpds(~jpds@gateway/tor-sasl/jpds)
2021-01-19 05:03:47 +0100 <Feuermagier> how do I deconstruct the datatype returned by a function?
2021-01-19 05:04:06 +0100 <glguy> Can you show an example of what that means?
2021-01-19 05:04:25 +0100elliott_(~elliott_@pool-108-51-101-42.washdc.fios.verizon.net) (Ping timeout: 240 seconds)
2021-01-19 05:04:57 +0100ahf(ahf@irssi/staff/ahf) (Read error: error:1408F119:SSL routines:ssl3_get_record:decryption failed or bad record mac)
2021-01-19 05:05:06 +0100ahf(ahf@irssi/staff/ahf)
2021-01-19 05:05:13 +0100elliott_(~elliott_@pool-108-51-101-42.washdc.fios.verizon.net)
2021-01-19 05:05:17 +0100 <Feuermagier> data Stuff = Stuff { important :: String, garbage :: [Integers]}
2021-01-19 05:05:26 +0100ahf_(ahf@irssi/staff/ahf)
2021-01-19 05:05:26 +0100xff0x_(~xff0x@2001:1a81:521c:ad00:21de:ec80:9043:6773)
2021-01-19 05:05:47 +0100 <glguy> % data Stuff = Stuff { important :: String, garbage :: [Integers]}
2021-01-19 05:05:47 +0100 <yahb> glguy: ; <interactive>:23:59: error:; Not in scope: type constructor or class `Integers'; Perhaps you meant `Integer' (imported from Prelude)
2021-01-19 05:05:51 +0100 <glguy> % data Stuff = Stuff { important :: String, garbage :: [Integer]}
2021-01-19 05:05:51 +0100 <yahb> glguy:
2021-01-19 05:06:20 +0100 <glguy> % case Stuff { important = "hi", garbage = [42] } of Stuff x y -> (x, y, y)
2021-01-19 05:06:20 +0100 <yahb> glguy: ("hi",[42],[42])
2021-01-19 05:06:23 +0100 <glguy> or
2021-01-19 05:06:32 +0100Tario(~Tario@201.192.165.173)
2021-01-19 05:06:40 +0100 <glguy> % let stuff = Stuff { important = "hi", garbage = [42] } in garbage stuff
2021-01-19 05:06:40 +0100 <yahb> glguy: [42]
2021-01-19 05:07:07 +0100 <Feuermagier> ah, thx!
2021-01-19 05:09:02 +0100 <Feuermagier> glguy, can I do this on the fly if I have a function "generateStuff" that returns a Stuff?
2021-01-19 05:09:30 +0100bogdanp(~bogdanp@188.24.80.165)
2021-01-19 05:10:03 +0100 <glguy> Feuermagier, sure
2021-01-19 05:10:27 +0100Codaraxis_(Codaraxis@gateway/vpn/mullvad/codaraxis)
2021-01-19 05:10:46 +0100Codaraxis(Codaraxis@gateway/vpn/mullvad/codaraxis) (Ping timeout: 246 seconds)
2021-01-19 05:11:16 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl) (Remote host closed the connection)
2021-01-19 05:13:34 +0100hiroaki(~hiroaki@ip4d167562.dynamic.kabel-deutschland.de)
2021-01-19 05:13:42 +0100 <Feuermagier> glguy, I'm not entirely sure with the syntax yet. Let's say we have "stuffDeconstructor :: Integer -> String"; stuffDeconstructor seed = (generateStuff seed)
2021-01-19 05:13:59 +0100 <Feuermagier> now generateStuff returns a Stuff
2021-01-19 05:14:09 +0100bogdanp(~bogdanp@188.24.80.165) (Ping timeout: 272 seconds)
2021-01-19 05:14:12 +0100 <Feuermagier> but I want its String only
2021-01-19 05:16:40 +0100 <glguy> Feuermagier, important (stuffDeconstructor seed)
2021-01-19 05:16:58 +0100 <Feuermagier> oh, thx!
2021-01-19 05:17:13 +0100 <glguy> --or-- stuffDeconstructor seed = important (generateStuff seed)
2021-01-19 05:18:18 +0100Andrologic_(~Andrologi@90.221.74.173)
2021-01-19 05:19:33 +0100ahf_(ahf@irssi/staff/ahf) (Quit: Lost terminal)
2021-01-19 05:19:55 +0100 <Feuermagier> glguy, What if the types aren't named, would this still work?
2021-01-19 05:21:10 +0100rayyyy(~nanoz@gateway/tor-sasl/nanoz)
2021-01-19 05:25:11 +0100ahf(ahf@irssi/staff/ahf) (Remote host closed the connection)
2021-01-19 05:25:17 +0100ahf(ahf@irssi/staff/ahf)
2021-01-19 05:25:19 +0100ahf_(ahf@irssi/staff/ahf)
2021-01-19 05:25:32 +0100ahf_(ahf@irssi/staff/ahf) (Client Quit)
2021-01-19 05:27:31 +0100projectako(~projectak@cpe-107-185-181-88.socal.res.rr.com)
2021-01-19 05:27:34 +0100 <projectako> http://ebay.us/3JHc3H?cmpnId=5338273189
2021-01-19 05:27:34 +0100projectako(~projectak@cpe-107-185-181-88.socal.res.rr.com) ()
2021-01-19 05:31:17 +0100mirrorbird(~psutcliff@2a00:801:42b:aff3:74af:2f22:932d:eac0)
2021-01-19 05:33:58 +0100mctpyt(~mctpyt@unaffiliated/mctpyt) (Quit: WeeChat 3.0)
2021-01-19 05:36:13 +0100Saukk(~Saukk@83-148-239-3.dynamic.lounea.fi) (Remote host closed the connection)
2021-01-19 05:37:08 +0100nly(~user@unaffiliated/nly) ("ERC (IRC client for Emacs 27.1)")
2021-01-19 05:38:12 +0100ahf(ahf@irssi/staff/ahf) (Remote host closed the connection)
2021-01-19 05:38:46 +0100srk(~sorki@gateway/tor-sasl/sorki) (Ping timeout: 268 seconds)
2021-01-19 05:40:37 +0100hexo(~hexo@gateway/tor-sasl/hexo) (Ping timeout: 268 seconds)
2021-01-19 05:40:45 +0100srk(~sorki@gateway/tor-sasl/sorki)
2021-01-19 05:40:49 +0100hacxman(~hexo@gateway/tor-sasl/hexo)
2021-01-19 05:41:13 +0100hacxmanhexo
2021-01-19 05:42:25 +0100jespada(~jespada@90.254.241.81) (Ping timeout: 240 seconds)
2021-01-19 05:44:41 +0100jespada(~jespada@90.254.241.81)
2021-01-19 05:46:12 +0100ahf(ahf@irssi/staff/ahf)
2021-01-19 05:52:32 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl)
2021-01-19 05:56:02 +0100hexo(~hexo@gateway/tor-sasl/hexo) (Ping timeout: 268 seconds)
2021-01-19 05:56:02 +0100srk(~sorki@gateway/tor-sasl/sorki) (Ping timeout: 268 seconds)
2021-01-19 05:57:16 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl) (Ping timeout: 256 seconds)
2021-01-19 05:58:25 +0100user1(~user1@88.231.92.184)
2021-01-19 05:58:39 +0100 <user1> whats up everybody?
2021-01-19 05:58:49 +0100user1(~user1@88.231.92.184) (Client Quit)
2021-01-19 05:59:06 +0100hexo(~hexo@gateway/tor-sasl/hexo)
2021-01-19 05:59:06 +0100srk(~sorki@gateway/tor-sasl/sorki)
2021-01-19 06:04:27 +0100bogdanp(~bogdanp@188.24.80.165)
2021-01-19 06:04:43 +0100Tario(~Tario@201.192.165.173) (Read error: Connection reset by peer)
2021-01-19 06:04:56 +0100Tario(~Tario@201.192.165.173)
2021-01-19 06:05:32 +0100prlCIql6ruclcri(~f9jawUfat@2800:810:514:e7:183e:966b:276f:cde5) (Quit: Leaving)
2021-01-19 06:06:31 +0100rayyyy(~nanoz@gateway/tor-sasl/nanoz) (Ping timeout: 268 seconds)
2021-01-19 06:06:31 +0100philopsos(~caecilius@gateway/tor-sasl/caecilius) (Ping timeout: 268 seconds)
2021-01-19 06:07:10 +0100prlCIql6ruclcri(~f9jawUfat@2800:810:514:e7:590b:5921:26d2:cc71)
2021-01-19 06:08:46 +0100bogdanp(~bogdanp@188.24.80.165) (Ping timeout: 256 seconds)
2021-01-19 06:11:23 +0100drbean(~drbean@TC210-63-209-49.static.apol.com.tw) (Ping timeout: 256 seconds)
2021-01-19 06:18:48 +0100rayyyy(~nanoz@gateway/tor-sasl/nanoz)
2021-01-19 06:19:21 +0100p7lpa1ugixavugu(~yaaic@2800:810:514:e7:7d4a:ba43:c831:bee6)
2021-01-19 06:20:15 +0100 <Feuermagier> how do I match against entire strings in IO input?
2021-01-19 06:21:14 +0100 <Feuermagier> https://en.wikibooks.org/wiki/Haskell/Libraries/IO here the match is only against a single char. I'd like to match against a commandword, like "performActionA"
2021-01-19 06:24:37 +0100Tario(~Tario@201.192.165.173) (Read error: Connection reset by peer)
2021-01-19 06:24:57 +0100Tario(~Tario@201.192.165.173)
2021-01-19 06:25:45 +0100vs^(vs@ip98-184-89-2.mc.at.cox.net) ()
2021-01-19 06:25:50 +0100ixaxaar(~ixaxaar@49.207.210.215)
2021-01-19 06:26:09 +0100 <dsal> if you can match strings at all, youc an do it in IO with fmap.
2021-01-19 06:26:12 +0100vonfry(~user@113.74.134.170)
2021-01-19 06:30:24 +0100p7lpa1ugixavugu(~yaaic@2800:810:514:e7:7d4a:ba43:c831:bee6) (Remote host closed the connection)
2021-01-19 06:30:44 +0100p7lpa1ugixavugu(~yaaic@2800:810:514:e7:7d4a:ba43:c831:bee6)
2021-01-19 06:33:36 +0100p7lpa1ugixavugu(~yaaic@2800:810:514:e7:7d4a:ba43:c831:bee6) (Client Quit)
2021-01-19 06:34:19 +0100jedws(~jedws@121.209.139.157) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-01-19 06:34:24 +0100nrh^(nrh@ip98-184-89-2.mc.at.cox.net)
2021-01-19 06:35:16 +0100p7lpa1ugixavugu(~atomic@2800:810:514:e7:7d4a:ba43:c831:bee6)
2021-01-19 06:35:24 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-01-19 06:35:55 +0100jrqc(~rofl@96.78.87.197) (Read error: Connection reset by peer)
2021-01-19 06:35:55 +0100bogdanp(~bogdanp@188.24.80.165)
2021-01-19 06:36:07 +0100drbean(~drbean@TC210-63-209-36.static.apol.com.tw)
2021-01-19 06:36:30 +0100prlCIql6ruclcri(~f9jawUfat@2800:810:514:e7:590b:5921:26d2:cc71) (Quit: Leaving)
2021-01-19 06:36:31 +0100ADG1089_(~adg1089@27.63.60.143) (Read error: Connection reset by peer)
2021-01-19 06:36:43 +0100Tario(~Tario@201.192.165.173) (Ping timeout: 260 seconds)
2021-01-19 06:36:57 +0100ADG1089_(~adg1089@223.226.159.22)
2021-01-19 06:40:21 +0100bogdanp(~bogdanp@188.24.80.165) (Ping timeout: 246 seconds)
2021-01-19 06:41:58 +0100haveo(~haveo@sl35.iuwt.fr) (Ping timeout: 260 seconds)
2021-01-19 06:42:04 +0100polux200137(~polux@51.15.169.172) (Ping timeout: 240 seconds)
2021-01-19 06:42:33 +0100anoe(~anoe@delanoe.org) (Ping timeout: 260 seconds)
2021-01-19 06:42:56 +0100polux200137(~polux@51.15.169.172)
2021-01-19 06:43:04 +0100haveo(~haveo@sl35.iuwt.fr)
2021-01-19 06:43:17 +0100anoe(~anoe@delanoe.org)
2021-01-19 06:46:24 +0100electricityZZZZ(~electrici@108-216-157-17.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2021-01-19 06:46:37 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl)
2021-01-19 06:46:38 +0100hackagetasty-sugar 1.0.1.1 - Tests defined by Search Using Golden Answer References https://hackage.haskell.org/package/tasty-sugar-1.0.1.1 (KevinQuick)
2021-01-19 06:46:50 +0100electricityZZZZ(~electrici@108-216-157-17.lightspeed.sntcca.sbcglobal.net)
2021-01-19 06:51:16 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl) (Ping timeout: 256 seconds)
2021-01-19 06:51:52 +0100nineonin_(~nineonine@S01061cabc0b095f3.vf.shawcable.net)
2021-01-19 06:53:49 +0100zebrag(~inkbottle@aaubervilliers-654-1-120-135.w86-198.abo.wanadoo.fr) (Quit: Konversation terminated!)
2021-01-19 06:54:42 +0100nineonine(~nineonine@50.216.62.2) (Ping timeout: 246 seconds)
2021-01-19 06:56:09 +0100mirrorbird(~psutcliff@2a00:801:42b:aff3:74af:2f22:932d:eac0) (Quit: Leaving)
2021-01-19 06:57:39 +0100ADG1089__(~aditya@223.226.159.22)
2021-01-19 07:01:51 +0100Jd007(~Jd007@162.156.11.151)
2021-01-19 07:02:08 +0100Jd007(~Jd007@162.156.11.151) (Client Quit)
2021-01-19 07:02:48 +0100Jd007(~Jd007@162.156.11.151)
2021-01-19 07:04:05 +0100frankdmartinez(~frankdmar@208.91.107.132) (Ping timeout: 256 seconds)
2021-01-19 07:07:26 +0100johnw(~johnw@haskell/developer/johnw)
2021-01-19 07:07:52 +0100shatriff(~vitaliish@176-52-216-242.irishtelecom.com) (Remote host closed the connection)
2021-01-19 07:08:17 +0100jedws(~jedws@121.209.139.157)
2021-01-19 07:08:24 +0100ADG1089_(~adg1089@223.226.159.22) (Read error: Connection reset by peer)
2021-01-19 07:08:25 +0100shatriff(~vitaliish@176-52-216-242.irishtelecom.com)
2021-01-19 07:10:04 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds)
2021-01-19 07:13:41 +0100vonfry(~user@113.74.134.170) ("ERC (IRC client for Emacs 27.1.90)")
2021-01-19 07:14:04 +0100machinedgod(~machinedg@135-23-192-217.cpe.pppoe.ca) (Ping timeout: 240 seconds)
2021-01-19 07:16:49 +0100nineonin_(~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Remote host closed the connection)
2021-01-19 07:17:32 +0100nineonine(~nineonine@50.216.62.2)
2021-01-19 07:23:34 +0100sord937(~sord937@gateway/tor-sasl/sord937)
2021-01-19 07:28:04 +0100zx(637ce278@99-124-226-120.lightspeed.rcsntx.sbcglobal.net)
2021-01-19 07:33:58 +0100Sheilong(uid293653@gateway/web/irccloud.com/x-zayuevwgpsadults) ()
2021-01-19 07:35:42 +0100ukari(~ukari@unaffiliated/ukari) (Remote host closed the connection)
2021-01-19 07:39:01 +0100bogdanp(~bogdanp@188.24.80.165)
2021-01-19 07:40:09 +0100nakaji_dayo(3c93f368@softbank060147243104.bbtec.net)
2021-01-19 07:40:47 +0100nakaji_dayo(3c93f368@softbank060147243104.bbtec.net) (Quit: Connection closed)
2021-01-19 07:43:24 +0100bogdanp(~bogdanp@188.24.80.165) (Ping timeout: 256 seconds)
2021-01-19 07:44:02 +0100takuan(~takuan@178-116-218-225.access.telenet.be)
2021-01-19 07:45:05 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 240 seconds)
2021-01-19 07:48:55 +0100olligobber(olligobber@gateway/vpn/privateinternetaccess/olligobber) (Remote host closed the connection)
2021-01-19 07:49:25 +0100jedws(~jedws@121.209.139.157) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-01-19 07:51:03 +0100jedws(~jedws@121.209.139.157)
2021-01-19 07:51:41 +0100olligobber(olligobber@gateway/vpn/privateinternetaccess/olligobber)
2021-01-19 07:55:28 +0100ADG1089__(~aditya@223.226.159.22) (Remote host closed the connection)
2021-01-19 07:55:45 +0100danvet(~Daniel@2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa)
2021-01-19 07:56:53 +0100Volt_(~Volt_@c-73-145-164-70.hsd1.mi.comcast.net) (Quit: )
2021-01-19 07:59:46 +0100knupfer(~Thunderbi@200116b82c70da00e4b196fffe5d6193.dip.versatel-1u1.de)
2021-01-19 08:00:06 +0100Rudd0(~Rudd0@185.189.115.103) (Ping timeout: 272 seconds)
2021-01-19 08:02:11 +0100knupfer(~Thunderbi@200116b82c70da00e4b196fffe5d6193.dip.versatel-1u1.de) (Remote host closed the connection)
2021-01-19 08:02:19 +0100knupfer(~Thunderbi@200116b82c70da0034d2ffe034e16ff0.dip.versatel-1u1.de)
2021-01-19 08:05:00 +0100adeene(~adeene@181.131.0.191) (Quit: Leaving)
2021-01-19 08:05:23 +0100adeene(~adeene@181.131.0.191)
2021-01-19 08:06:34 +0100tzh(~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Quit: zzz)
2021-01-19 08:11:25 +0100zx(637ce278@99-124-226-120.lightspeed.rcsntx.sbcglobal.net) (Quit: Ping timeout (120 seconds))
2021-01-19 08:12:13 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-01-19 08:16:40 +0100_ht(~quassel@82-169-194-8.biz.kpn.net)
2021-01-19 08:16:51 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 256 seconds)
2021-01-19 08:18:40 +0100nullifidian(~nullifidi@unaffiliated/nullifidian) (Quit: Leaving)
2021-01-19 08:20:07 +0100zx(637ce278@99-124-226-120.lightspeed.rcsntx.sbcglobal.net)
2021-01-19 08:25:46 +0100zx(637ce278@99-124-226-120.lightspeed.rcsntx.sbcglobal.net) (Quit: Connection closed)
2021-01-19 08:27:27 +0100asheshambasta(~user@ptr-e1lysawdkgbchi3df06.18120a2.ip6.access.telenet.be)
2021-01-19 08:30:00 +0100Sgeo(~Sgeo@ool-18b98aa4.dyn.optonline.net) (Read error: Connection reset by peer)
2021-01-19 08:30:47 +0100SupaYoshii(~supayoshi@213-10-140-13.fixed.kpn.net)
2021-01-19 08:31:13 +0100nineonine(~nineonine@50.216.62.2) (Ping timeout: 256 seconds)
2021-01-19 08:31:13 +0100Jd007(~Jd007@162.156.11.151) (Ping timeout: 256 seconds)
2021-01-19 08:31:13 +0100SupaYoshi(~supayoshi@213-10-140-13.fixed.kpn.net) (Ping timeout: 256 seconds)
2021-01-19 08:31:13 +0100takuan(~takuan@178-116-218-225.access.telenet.be) (Ping timeout: 256 seconds)
2021-01-19 08:31:13 +0100Deewiant(~deewiant@de1.ut.deewiant.iki.fi) (Ping timeout: 256 seconds)
2021-01-19 08:31:17 +0100takuan_dozo(~takuan@178-116-218-225.access.telenet.be)
2021-01-19 08:31:20 +0100Deewiant(~deewiant@de1.ut.deewiant.iki.fi)
2021-01-19 08:31:35 +0100plutoniix(~q@184.82.204.73) (Ping timeout: 256 seconds)
2021-01-19 08:31:35 +0100columbarius1(~columbari@mue-88-130-54-057.dsl.tropolys.de) (Ping timeout: 256 seconds)
2021-01-19 08:31:59 +0100plutoniix(~q@184.82.204.73)
2021-01-19 08:32:09 +0100nrh^(nrh@ip98-184-89-2.mc.at.cox.net) (Ping timeout: 256 seconds)
2021-01-19 08:32:09 +0100columbarius1(~columbari@mue-88-130-54-057.dsl.tropolys.de)
2021-01-19 08:32:22 +0100nrh^(nrh@ip98-184-89-2.mc.at.cox.net)
2021-01-19 08:32:42 +0100 <Axman6> Is there an easy way to compare the results of two criterion runs? Wanting to see if there's any improvement between form a (hopeful
2021-01-19 08:32:49 +0100 <Axman6> ) optimisation
2021-01-19 08:32:57 +0100bogdanp(~bogdanp@188.24.80.165)
2021-01-19 08:35:03 +0100ADG1089__(~aditya@223.226.159.22)
2021-01-19 08:37:34 +0100p7lpa1ugixavugu(~atomic@2800:810:514:e7:7d4a:ba43:c831:bee6) (Quit: AtomicIRC: The nuclear option.)
2021-01-19 08:38:00 +0100bogdanp(~bogdanp@188.24.80.165) (Ping timeout: 264 seconds)
2021-01-19 08:40:20 +0100polyphem(~p0lyph3m@2a02:810d:640:776c:76d7:55f6:f85b:c889) (Ping timeout: 246 seconds)
2021-01-19 08:44:55 +0100bogdanp(~bogdanp@188.24.80.165)
2021-01-19 08:46:21 +0100jamm(~jamm@unaffiliated/jamm)
2021-01-19 08:50:26 +0100jamm(~jamm@unaffiliated/jamm) (Ping timeout: 240 seconds)
2021-01-19 08:54:06 +0100jedws(~jedws@121.209.139.157) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-01-19 08:54:58 +0100bogdanp(~bogdanp@188.24.80.165) (Ping timeout: 260 seconds)
2021-01-19 08:56:27 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl)
2021-01-19 09:00:08 +0100nakaji_dayo(3c93f368@softbank060147243104.bbtec.net)
2021-01-19 09:00:20 +0100nakaji_dayo(3c93f368@softbank060147243104.bbtec.net) (Client Quit)
2021-01-19 09:04:04 +0100jedws(~jedws@121.209.139.157)
2021-01-19 09:06:03 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-01-19 09:06:15 +0100bogdanp(~bogdanp@188.24.80.165)
2021-01-19 09:06:48 +0100DataComputist(~lumeng@50.43.26.251) (Ping timeout: 264 seconds)
2021-01-19 09:08:55 +0100adeene(~adeene@181.131.0.191) (Read error: Connection reset by peer)
2021-01-19 09:09:48 +0100shatriff(~vitaliish@176-52-216-242.irishtelecom.com) (Ping timeout: 264 seconds)
2021-01-19 09:10:28 +0100DataComputist(~lumeng@50.43.26.251)
2021-01-19 09:11:22 +0100 <dminuoso> Not bad, I again managed to end up with a stale dist-newstyle cache.. it just wouldn't recognize modifications to a source file..
2021-01-19 09:11:29 +0100 <dminuoso> Something is really fishy here
2021-01-19 09:11:46 +0100 <maerwald> which cabal
2021-01-19 09:12:13 +0100 <dminuoso> 3.2.0.0
2021-01-19 09:12:27 +0100 <maerwald> try 3.4 rc3
2021-01-19 09:12:27 +0100rawles(~r@unaffiliated/rawles) (Ping timeout: 260 seconds)
2021-01-19 09:12:42 +0100 <dminuoso> Where there particular fixes towards this?
2021-01-19 09:13:09 +0100nineonine(~nineonine@50.216.62.2)
2021-01-19 09:13:31 +0100 <maerwald> Don't know, but always report bugs against the latest version and 3.4 rc3 has been out for a while and some use it in production
2021-01-19 09:14:14 +0100rawles(~r@unaffiliated/rawles)
2021-01-19 09:14:21 +0100 <maerwald> I haven't experienced something like this in a while
2021-01-19 09:15:04 +0100 <dminuoso> Mmm yeah. Im dead convinced there's a bug lurking around, every few weeks I have one of those `nuke dist-newstyle` and it suddenly compiles again moments..
2021-01-19 09:15:18 +0100 <dminuoso> But only since 3.2.0.0. The annoying part is, I cant reproduce it
2021-01-19 09:17:08 +0100mputz(~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de)
2021-01-19 09:17:59 +0100 <maerwald> wouldn't be a but otherwise if you could reproduce it, right?
2021-01-19 09:18:07 +0100 <maerwald> *bug
2021-01-19 09:18:33 +0100nineonine(~nineonine@50.216.62.2) (Ping timeout: 246 seconds)
2021-01-19 09:20:13 +0100 <dminuoso> I have a theory. phadej placed a heisenbug inside cabal-install to force people motivated enough to find this help and contribute to cabal-install
2021-01-19 09:20:15 +0100 <dminuoso> What a sinister plan.
2021-01-19 09:20:25 +0100jedws(~jedws@121.209.139.157) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-01-19 09:22:02 +0100 <maerwald> I have another theory: cabal-install had too many drive-by contributors and too few maintainers.
2021-01-19 09:22:48 +0100kritzefitz(~kritzefit@fw-front.credativ.com)
2021-01-19 09:22:59 +0100xff0x_(~xff0x@2001:1a81:521c:ad00:21de:ec80:9043:6773) (Ping timeout: 260 seconds)
2021-01-19 09:23:40 +0100xff0x_(~xff0x@2001:1a81:521c:ad00:8d06:ced3:e6bf:47a2)
2021-01-19 09:26:19 +0100 <maerwald> Oh, and that most operations aren't atomic. Killing cabal or GHC can have all sorts of funny effects
2021-01-19 09:26:44 +0100cfricke(~cfricke@unaffiliated/cfricke)
2021-01-19 09:27:20 +0100 <dminuoso> Mmm, that could actually be it. I have a tendency to send SIGINT to GHC when I realize it wouldn't compile anyway
2021-01-19 09:30:43 +0100ubert(~Thunderbi@p200300ecdf1ee06ce6b318fffe838f33.dip0.t-ipconnect.de)
2021-01-19 09:32:33 +0100Tuplanolla(~Tuplanoll@91-159-68-239.elisa-laajakaista.fi)
2021-01-19 09:33:00 +0100pera(pera@gateway/vpn/mullvad/pera)
2021-01-19 09:33:41 +0100drbean(~drbean@TC210-63-209-36.static.apol.com.tw) (Ping timeout: 256 seconds)
2021-01-19 09:35:18 +0100danso(~dan@2001:1970:52e7:d000:96b8:6dff:feb3:c009) (Quit: WeeChat 3.0)
2021-01-19 09:36:03 +0100xff0x_(~xff0x@2001:1a81:521c:ad00:8d06:ced3:e6bf:47a2) (Ping timeout: 260 seconds)
2021-01-19 09:38:04 +0100xff0x_(~xff0x@2001:1a81:522c:a800:1b8f:4cc2:9bdd:ac52)
2021-01-19 09:42:06 +0100chele(~chele@ip5b40237d.dynamic.kabel-deutschland.de)
2021-01-19 09:48:30 +0100Neuromancer(~Neuromanc@unaffiliated/neuromancer)
2021-01-19 09:54:25 +0100coot(~coot@37.30.55.132.nat.umts.dynamic.t-mobile.pl)
2021-01-19 09:56:40 +0100berberman_(~berberman@unaffiliated/berberman) (Quit: ZNC 1.8.2 - https://znc.in)
2021-01-19 09:57:32 +0100berberman(~berberman@unaffiliated/berberman)
2021-01-19 09:58:43 +0100magnuscake(~magnuscak@87-121-92-61.dyn.launtel.net.au) (Quit: Leaving)
2021-01-19 09:59:36 +0100jchia__(~jchia@58.32.32.155) (Ping timeout: 240 seconds)
2021-01-19 10:01:04 +0100Franciman(~francesco@host-79-51-37-36.retail.telecomitalia.it)
2021-01-19 10:02:02 +0100rdivyanshu(uid322626@gateway/web/irccloud.com/x-qvgxasklpnabqoft)
2021-01-19 10:04:27 +0100jchia__(~jchia@58.32.32.155)
2021-01-19 10:07:34 +0100ph88^(~ph88@2a02:8109:9e00:7e5c:795a:5528:8c2c:51fe)
2021-01-19 10:08:56 +0100berberman(~berberman@unaffiliated/berberman) (Ping timeout: 240 seconds)
2021-01-19 10:10:21 +0100berberman(~berberman@unaffiliated/berberman)
2021-01-19 10:16:11 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-01-19 10:16:14 +0100jchia__(~jchia@58.32.32.155) (Ping timeout: 256 seconds)
2021-01-19 10:16:37 +0100xff0x_(~xff0x@2001:1a81:522c:a800:1b8f:4cc2:9bdd:ac52) (Ping timeout: 260 seconds)
2021-01-19 10:17:18 +0100xff0x_(~xff0x@2001:1a81:522c:a800:ae0c:654f:160c:79b4)
2021-01-19 10:18:02 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds)
2021-01-19 10:20:50 +0100zaquest(~notzaques@5.128.210.178) (Quit: Leaving)
2021-01-19 10:27:38 +0100hackagetext 1.2.4.1 - An efficient packed Unicode text type. https://hackage.haskell.org/package/text-1.2.4.1 (HerbertValerioRiedel)
2021-01-19 10:28:23 +0100zaquest(~notzaques@5.128.210.178)
2021-01-19 10:29:51 +0100heatsink(~heatsink@2600:1700:bef1:5e10:6c35:c27b:9d47:22a1) (Remote host closed the connection)
2021-01-19 10:29:53 +0100kuribas(~user@ptr-25vy0i9v74bayflbmuo.18120a2.ip6.access.telenet.be)
2021-01-19 10:33:08 +0100niekvandepas(~niekvande@dhcp-077-249-088-250.chello.nl)
2021-01-19 10:34:03 +0100raichoo(~raichoo@213.240.178.58)
2021-01-19 10:37:16 +0100hnOsmium0001(uid453710@gateway/web/irccloud.com/x-rmkzpmhvyfmtsudj) (Quit: Connection closed for inactivity)
2021-01-19 10:44:39 +0100seveg(~gabriel@2a02-ab04-0249-8d00-dea6-32ff-fe17-0993.dynamic.v6.chello.sk) (Ping timeout: 272 seconds)
2021-01-19 10:45:55 +0100niekvandepas(~niekvande@dhcp-077-249-088-250.chello.nl) (Remote host closed the connection)
2021-01-19 10:47:16 +0100Varis(~Tadas@unaffiliated/varis)
2021-01-19 10:52:43 +0100ubert(~Thunderbi@p200300ecdf1ee06ce6b318fffe838f33.dip0.t-ipconnect.de) (Remote host closed the connection)
2021-01-19 10:53:05 +0100Varis(~Tadas@unaffiliated/varis) (Remote host closed the connection)
2021-01-19 10:53:47 +0100 <kuribas> Do you often feel the need to debug production?
2021-01-19 10:54:16 +0100 <kuribas> I have this conjecture, that lisps are great for "debugging production", because it's unavoidable to have bugs in production.
2021-01-19 10:55:02 +0100jonathanx(~jonathan@h-176-109.A357.priv.bahnhof.se)
2021-01-19 10:55:39 +0100mbomba(~mbomba@bras-base-toroon2719w-grc-53-142-114-5-26.dsl.bell.ca)
2021-01-19 10:56:01 +0100 <kuribas> I mean bugs that are hard to solve, like validation errors that pop up as stack traces.
2021-01-19 10:56:12 +0100 <jonathanx> Lib request: Map implementation with type-level natural specifying the number of key/value pairs it contains. Does this exist?
2021-01-19 10:56:16 +0100Varis(~Tadas@unaffiliated/varis)
2021-01-19 10:56:26 +0100jrqc(~rofl@96.78.87.197)
2021-01-19 10:56:56 +0100__monty__(~toonn@unaffiliated/toonn)
2021-01-19 10:57:11 +0100jamm(~jamm@unaffiliated/jamm)
2021-01-19 10:57:37 +0100 <kuribas> Where in haskell you are more careful with handling side conditions, providing good error messages...
2021-01-19 10:59:49 +0100 <[exa]> the whole aim of lisps as interpretable languages with easy reflection is to hack things together easily, you can't blame the language for programmers not using this to create robustness :]
2021-01-19 11:00:07 +0100Alleria(~textual@2603-7000-3040-0000-6de2-9de3-adc0-7711.res6.spectrum.com)
2021-01-19 11:00:15 +0100hekkaidekapus](~tchouri@gateway/tor-sasl/hekkaidekapus)
2021-01-19 11:00:28 +0100Rudd0(~Rudd0@185.189.115.108)
2021-01-19 11:00:31 +0100AlleriaGuest95878
2021-01-19 11:00:36 +0100 <kuribas> yeah, it's a different way of working...
2021-01-19 11:01:31 +0100LKoen(~LKoen@16.175.9.109.rev.sfr.net)
2021-01-19 11:02:31 +0100rayyyy(~nanoz@gateway/tor-sasl/nanoz) (Ping timeout: 268 seconds)
2021-01-19 11:02:44 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-01-19 11:03:08 +0100hekkaidekapus[(~tchouri@gateway/tor-sasl/hekkaidekapus) (Ping timeout: 268 seconds)
2021-01-19 11:03:17 +0100 <merijn> dminuoso: Are you using Template Haskell?
2021-01-19 11:03:21 +0100niekvandepas(~niekvande@dhcp-077-249-088-250.chello.nl)
2021-01-19 11:04:14 +0100mbomba(~mbomba@bras-base-toroon2719w-grc-53-142-114-5-26.dsl.bell.ca) (Quit: WeeChat 3.0)
2021-01-19 11:04:43 +0100Guest95878(~textual@2603-7000-3040-0000-6de2-9de3-adc0-7711.res6.spectrum.com) (Ping timeout: 260 seconds)
2021-01-19 11:05:00 +0100jchia__(~jchia@jungle.jchia.net)
2021-01-19 11:05:07 +0100gehmehgeh(~ircuser1@gateway/tor-sasl/gehmehgeh)
2021-01-19 11:05:54 +0100 <dminuoso> merijn: Yes.
2021-01-19 11:07:11 +0100 <kuribas> [exa]: can I blame the programmers then? :-P
2021-01-19 11:07:25 +0100niekvandepas(~niekvande@dhcp-077-249-088-250.chello.nl) (Ping timeout: 240 seconds)
2021-01-19 11:08:15 +0100 <merijn> dminuoso: Cabal doesn't/can't properly track TH registered dependencies, so that might also play a role
2021-01-19 11:08:31 +0100 <maerwald> kuribas: if you think in haskell ppl handle side conditions more carefully, then you could start by fixing signal handling in cabal-install and shake :D
2021-01-19 11:09:00 +0100 <merijn> maerwald: eh
2021-01-19 11:09:07 +0100 <kuribas> maerwald: good point :)
2021-01-19 11:09:10 +0100 <merijn> maerwald: You miswrote "fix signal handling in GHC's RTS"
2021-01-19 11:09:25 +0100jchia__(~jchia@jungle.jchia.net) (Remote host closed the connection)
2021-01-19 11:09:28 +0100 <merijn> It is, in my opinion, currently fundamentally impossible to properly handle signals in GHC's RTS
2021-01-19 11:09:31 +0100 <maerwald> too hard
2021-01-19 11:09:45 +0100 <merijn> And fixing that clusterfuck is on top of my "I'll get too it when my thesis is done" list
2021-01-19 11:09:51 +0100 <merijn> maerwald: Naah, it's not
2021-01-19 11:10:31 +0100jchia__(~jchia@58.32.32.155)
2021-01-19 11:10:46 +0100 <merijn> maerwald: I've done proper signal handling in multi-threaded RTS before. It's not even that hard to do properly, but it will require some pretty fundamental changes to how signal handling is done currently
2021-01-19 11:11:48 +0100 <merijn> maerwald: There's really only one sensible way in any multi-threaded program. That is: Mask *everything* in every thread and have a dedicated RTS thread that uses sigwait to wait for signals
2021-01-19 11:11:54 +0100jamm(~jamm@unaffiliated/jamm) (Remote host closed the connection)
2021-01-19 11:12:35 +0100 <merijn> maerwald: Needs a bit of diving into the details to ensure stuff like SIGSEGV plays nicely, but I don't think that's too hard to figure out
2021-01-19 11:13:15 +0100 <maerwald> what do you think of safe-exceptions? it's pretty controversial, because now you're trading aborted handlers with deadlocks
2021-01-19 11:13:28 +0100 <arahael> merijn: I'd be a bit more boneheaded than that, and say the only correct way to handle signals is to catch them all, and have them do nothing but set a signal-specific flag.
2021-01-19 11:13:35 +0100 <arahael> merijn: Which is then queried by the main application.
2021-01-19 11:13:48 +0100 <merijn> maerwald: Considering I'm pretty sure that *I* am responsible for the implementation that safe-exceptions uses, I'm in favour :p
2021-01-19 11:13:59 +0100 <merijn> arahael: No, that's terrible
2021-01-19 11:14:31 +0100 <arahael> merijn: It's boneheaded, I agree. I wouldn't say it's *terrible*.
2021-01-19 11:14:38 +0100 <merijn> arahael: Because it would break several things that GHC supports now
2021-01-19 11:14:54 +0100 <merijn> arahael: You'd lose interruptibleFFI, which can be supported just fine
2021-01-19 11:14:55 +0100 <arahael> merijn: Ah, well, that could be fixed.
2021-01-19 11:15:03 +0100 <merijn> arahael: Not while using that design
2021-01-19 11:15:30 +0100 <merijn> arahael: Because using a signal handler means signals get delivered to random threads within the process
2021-01-19 11:15:46 +0100 <merijn> arahael: So they can interrupt random system calls
2021-01-19 11:16:12 +0100 <arahael> merijn: The advantage, however, is that there's a hard limit to how broken things get.
2021-01-19 11:16:57 +0100 <merijn> arahael: I don't think so, tbh
2021-01-19 11:17:26 +0100jchia__(~jchia@58.32.32.155) (Ping timeout: 256 seconds)
2021-01-19 11:17:28 +0100 <merijn> arahael: Experience teaches me that there is *no* hard limit on how clusterfucky signals can get, let alone signals + multi-threading
2021-01-19 11:17:49 +0100 <arahael> merijn: It's probably overkill in a sane language, anyway. If I recall, the "interrupt handlers should only set a flag and that's it" idea is mostly in C, and hard realtime OS's.
2021-01-19 11:17:54 +0100 <merijn> That's why I don't expect/trust anyone else to fix it :p
2021-01-19 11:18:10 +0100 <arahael> Heh. That might be another motivation to "just set a flag and get out of the clusterfucky signal system". ;)
2021-01-19 11:18:12 +0100 <merijn> arahael: Well, that is because you can't sanely do anything in signal handlers
2021-01-19 11:18:22 +0100 <arahael> Right...
2021-01-19 11:18:33 +0100 <merijn> arahael: Which is why you should just mask them all and have a dedicated thread waiting on them
2021-01-19 11:18:41 +0100 <merijn> arahael: Then you *can* do sensible thing
2021-01-19 11:18:43 +0100 <merijn> +s
2021-01-19 11:19:05 +0100 <merijn> arahael: Because you are not running in a random context, you're running in a tightly controlled thread that's doing nothing else
2021-01-19 11:19:15 +0100 <arahael> Yeah, that's fair.
2021-01-19 11:19:22 +0100 <arahael> Honestly I haven't done much signal handling.
2021-01-19 11:19:34 +0100 <merijn> arahael: Which, if you want to interact with the RTS (which you probably do) is crucial
2021-01-19 11:19:53 +0100 <merijn> Because then you can signal Haskell threads/capabilities in a controlled way, interact with the scheduler, etc.
2021-01-19 11:21:24 +0100 <merijn> That would also fix the current GHC API of letting you install IO actions as signal handler in a way that makes it sane
2021-01-19 11:21:38 +0100 <arahael> Hmm? Actually could you elaborate on that bit?
2021-01-19 11:21:52 +0100geowiesnot(~user@87-89-181-157.abo.bbox.fr)
2021-01-19 11:22:39 +0100 <arahael> You mean, so you could say, register a 'onSigTerm :: IO ()' as the signal handler? Wouldn't that be usual?
2021-01-19 11:22:46 +0100 <merijn> arahael: https://hackage.haskell.org/package/base-4.14.1.0/docs/GHC-Conc-Signal.html#v:setHandler
2021-01-19 11:22:57 +0100jchia__(~jchia@jungle.jchia.net)
2021-01-19 11:23:01 +0100 <merijn> arahael: There is essentially 0 chance that the current implementation of that is *remotely* sane
2021-01-19 11:23:40 +0100 <merijn> arahael: The odds of users writing a non-problematic "IO ()" to run in a signal handler are pretty damn small
2021-01-19 11:24:03 +0100 <arahael> merijn: So, trustworthy - but not sane? ;) The funny thing is that I've never heard of a signal handling API that works well, predictably, in a good fashion.
2021-01-19 11:24:26 +0100jchia__(~jchia@jungle.jchia.net) (Remote host closed the connection)
2021-01-19 11:24:49 +0100 <merijn> arahael: That's because no one reads APUE and as a result does stupid shit
2021-01-19 11:24:53 +0100jchia__(~jchia@jungle.jchia.net)
2021-01-19 11:25:09 +0100 <maerwald> we have to ship our code :D
2021-01-19 11:25:18 +0100 <arahael> Hmpf. I've never read APUE either.
2021-01-19 11:25:31 +0100hyiltiz-M(hyiltizkde@gateway/shell/kde/matrix/x-geyejkuncnhxmpdr) (Quit: killed)
2021-01-19 11:25:33 +0100 <__monty__> Isn't this complicated by also having tobe compatible with windows? Or are its signals POSIX?
2021-01-19 11:25:40 +0100 <arahael> I do know enough to be paranoid whenever I hear about signal handling.
2021-01-19 11:26:32 +0100 <maerwald> yeah, cross-platform signal handling probably makes it worse
2021-01-19 11:27:04 +0100 <merijn> __monty__: Signals don't exist on windows
2021-01-19 11:27:05 +0100Codaraxis_(Codaraxis@gateway/vpn/mullvad/codaraxis) (Read error: Connection reset by peer)
2021-01-19 11:27:27 +0100 <merijn> maerwald: That, again, is why people should read APUE ;)
2021-01-19 11:27:33 +0100hyiltiz-M(hyiltizkde@gateway/shell/kde/matrix/x-jljmxicmadzpzslm)
2021-01-19 11:27:50 +0100 <maerwald> BSD, Darwin,. ..
2021-01-19 11:27:56 +0100 <merijn> maerwald: Which discusses how each major UNIX deviates from POSIX
2021-01-19 11:28:06 +0100 <merijn> maerwald: And their definition of major includes HP/UX >.>
2021-01-19 11:28:08 +0100 <maerwald> great... more clusterfuck
2021-01-19 11:28:16 +0100 <merijn> maerwald: It Depends
2021-01-19 11:28:17 +0100niekvandepas(~niekvande@ip-145-116-131-65.wlan-int.ru.nl)
2021-01-19 11:28:33 +0100Codaraxis(~Codaraxis@91.193.4.38)
2021-01-19 11:28:39 +0100 <merijn> Signal handling doesn't actually seem to deviate that much
2021-01-19 11:28:52 +0100 <merijn> Mostly the existence/absence of certain signals
2021-01-19 11:29:05 +0100 <merijn> Which isn't really relevant for handling them
2021-01-19 11:29:47 +0100 <arahael> I thought windows has signals?
2021-01-19 11:30:14 +0100heatsink(~heatsink@2600:1700:bef1:5e10:6c35:c27b:9d47:22a1)
2021-01-19 11:30:20 +0100 <arahael> Eg, https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/signal?view=msvc-160 Though, that _could_ be a compatibility layer.
2021-01-19 11:30:49 +0100 <merijn> Well signal is horrifically broken and literally cannot be used correctly >.>
2021-01-19 11:31:34 +0100 <arahael> Hmm. :) Which again lends further credence to the "set a flag and get the heck out". :)
2021-01-19 11:31:41 +0100 <merijn> arahael: No
2021-01-19 11:31:49 +0100 <merijn> arahael: You can't even do *that* correctly using signal
2021-01-19 11:32:00 +0100 <merijn> arahael: You literally can't do *anything* correctly using signal
2021-01-19 11:32:06 +0100 <merijn> That's why sigaction() was created
2021-01-19 11:32:26 +0100 <merijn> Which doesn't seem to be on that windows page, so, uh, fun...
2021-01-19 11:32:29 +0100 <merijn> Anyway, lunch
2021-01-19 11:32:48 +0100 <arahael> Enjoy the lunch. :)
2021-01-19 11:34:52 +0100heatsink(~heatsink@2600:1700:bef1:5e10:6c35:c27b:9d47:22a1) (Ping timeout: 244 seconds)
2021-01-19 11:35:37 +0100thc202(~thc202@unaffiliated/thc202)
2021-01-19 11:39:26 +0100jchia__(~jchia@jungle.jchia.net) (Remote host closed the connection)
2021-01-19 11:43:37 +0100hackagezip 1.7.0 - Operations on zip archives https://hackage.haskell.org/package/zip-1.7.0 (mrkkrp)
2021-01-19 11:44:09 +0100acidjnk_new(~acidjnk@p200300d0c704e732989dd075055fe92d.dip0.t-ipconnect.de)
2021-01-19 11:45:27 +0100Gurkenglas(~Gurkengla@unaffiliated/gurkenglas)
2021-01-19 11:47:38 +0100quinn(~quinn@c-73-223-224-163.hsd1.ca.comcast.net) (Quit: ZNC 1.8.1 - https://znc.in)
2021-01-19 11:47:52 +0100Alleria__(~textual@zrcout.mskcc.org)
2021-01-19 11:48:22 +0100dandart(~Thunderbi@home.dandart.co.uk)
2021-01-19 11:50:03 +0100imjacobclark(~imjacobcl@host86-129-42-107.range86-129.btcentralplus.com)
2021-01-19 11:51:29 +0100 <imjacobclark> Hi there. I am trying to write a function that takes a "newtype Point a b = Point (a, b)" however when I use it "singleTerm :: [Point Int Int] Int -> Int " I get the error "Expected kind ‘* -> *’, but ‘[Point Int Int]’ has kind ‘*’"
2021-01-19 11:51:31 +0100ubert(~Thunderbi@2a02:8109:9880:303c:ca5b:76ff:fe29:f233)
2021-01-19 11:52:23 +0100 <dminuoso> imjacobclark: Stare at `[Point Int Int] Int `
2021-01-19 11:52:35 +0100 <imjacobclark> daamitttttt
2021-01-19 11:52:35 +0100 <imjacobclark> ->
2021-01-19 11:52:36 +0100 <imjacobclark> ha
2021-01-19 11:52:37 +0100 <imjacobclark> thankyou
2021-01-19 11:53:03 +0100 <dminuoso> It's curious, how good and exact GHCs errors often are.
2021-01-19 11:54:11 +0100fendor(~fendor@178.115.128.149.wireless.dyn.drei.com)
2021-01-19 11:54:31 +0100ulidtko|k(~ulidtko@193.111.48.79)
2021-01-19 11:54:33 +0100 <dminuoso> imjacobclark: If you read the error carefully, you will notice that GHC has some reason to believe that `[Point Int Int]` is of kind `* -> *`. The reason GHC usually does that, is because of infererence.
2021-01-19 11:54:53 +0100 <dminuoso> In this case, it's inferred to have `* -> *` because you're applying it to another type
2021-01-19 11:56:20 +0100ChaiTRex(~ChaiTRex@gateway/tor-sasl/chaitrex) (Remote host closed the connection)
2021-01-19 11:56:53 +0100ChaiTRex(~ChaiTRex@gateway/tor-sasl/chaitrex)
2021-01-19 11:57:02 +0100nullifidian(~nullifidi@unaffiliated/nullifidian)
2021-01-19 11:59:12 +0100Gurkenglas(~Gurkengla@unaffiliated/gurkenglas) (Ping timeout: 246 seconds)
2021-01-19 11:59:14 +0100vicfred(vicfred@gateway/vpn/mullvad/vicfred) (Quit: Leaving)
2021-01-19 11:59:56 +0100nomeata(~jojo@dslb-084-056-082-238.084.056.pools.vodafone-ip.de)
2021-01-19 12:01:35 +0100Tops2(~Tobias@dyndsl-095-033-095-048.ewe-ip-backbone.de)
2021-01-19 12:03:58 +0100Gurkenglas(~Gurkengla@unaffiliated/gurkenglas)
2021-01-19 12:04:41 +0100nomeata(~jojo@dslb-084-056-082-238.084.056.pools.vodafone-ip.de) (Client Quit)
2021-01-19 12:10:09 +0100frankdmartinez(~frankdmar@208.91.107.132)
2021-01-19 12:13:58 +0100jamm(~jamm@unaffiliated/jamm)
2021-01-19 12:14:14 +0100sgibber2018(d055ed90@208.85.237.144) (Quit: Connection closed)
2021-01-19 12:18:25 +0100jdt(~jdt@208.85.233.130) (Ping timeout: 240 seconds)
2021-01-19 12:18:38 +0100jdt(~jdt@208.85.233.130)
2021-01-19 12:23:09 +0100BosonCollider(~olofs@90-227-86-119-no542.tbcn.telia.com)
2021-01-19 12:26:18 +0100jamm(~jamm@unaffiliated/jamm) (Remote host closed the connection)
2021-01-19 12:26:25 +0100dandart(~Thunderbi@home.dandart.co.uk) (Quit: dandart)
2021-01-19 12:27:42 +0100BosonCollider(~olofs@90-227-86-119-no542.tbcn.telia.com) (Ping timeout: 256 seconds)
2021-01-19 12:29:39 +0100geowiesnot(~user@87-89-181-157.abo.bbox.fr) (Ping timeout: 246 seconds)
2021-01-19 12:30:03 +0100jchia__(~jchia@58.32.32.155)
2021-01-19 12:31:37 +0100nullifidian(~nullifidi@unaffiliated/nullifidian) (Quit: Leaving)
2021-01-19 12:31:43 +0100rdivyanshu(uid322626@gateway/web/irccloud.com/x-qvgxasklpnabqoft) (Quit: Connection closed for inactivity)
2021-01-19 12:33:42 +0100ericsagnes(~ericsagne@2405:6580:0:5100:8e8a:9396:9535:8e0a) (Ping timeout: 260 seconds)
2021-01-19 12:33:57 +0100jedws(~jedws@121.209.139.157)
2021-01-19 12:34:24 +0100denisse(~spaceCat@gateway/tor-sasl/alephzer0) (Ping timeout: 268 seconds)
2021-01-19 12:35:35 +0100bogdanp(~bogdanp@188.24.80.165) (Ping timeout: 256 seconds)
2021-01-19 12:35:36 +0100Moyst(~moyst@212-149-213-144.bb.dnainternet.fi) (Ping timeout: 272 seconds)
2021-01-19 12:36:01 +0100Moyst(~moyst@85-76-109-176-nat.elisa-mobile.fi)
2021-01-19 12:36:03 +0100gxt(~gxt@gateway/tor-sasl/gxt)
2021-01-19 12:36:28 +0100Tops21(~Tobias@dyndsl-095-033-095-048.ewe-ip-backbone.de)
2021-01-19 12:36:32 +0100Stanley00(~stanley00@unaffiliated/stanley00) ()
2021-01-19 12:37:17 +0100jchia__(~jchia@58.32.32.155) (Ping timeout: 256 seconds)
2021-01-19 12:39:47 +0100Tops2(~Tobias@dyndsl-095-033-095-048.ewe-ip-backbone.de) (Ping timeout: 256 seconds)
2021-01-19 12:40:15 +0100seveg(~gabriel@2a02-ab04-0249-8d00-dea6-32ff-fe17-0993.dynamic.v6.chello.sk)
2021-01-19 12:40:41 +0100denisse(~spaceCat@gateway/tor-sasl/alephzer0)
2021-01-19 12:40:42 +0100jedws(~jedws@121.209.139.157) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-01-19 12:41:04 +0100ulidtko|kk(~ulidtko@194.54.80.38)
2021-01-19 12:42:15 +0100mirrorbird(~psutcliff@2a00:801:42b:aff3:74af:2f22:932d:eac0)
2021-01-19 12:43:45 +0100ulidtko|k(~ulidtko@193.111.48.79) (Ping timeout: 256 seconds)
2021-01-19 12:45:58 +0100ericsagnes(~ericsagne@2405:6580:0:5100:5b64:e916:ea7b:a5fd)
2021-01-19 12:48:17 +0100Neuromancer(~Neuromanc@unaffiliated/neuromancer) (Ping timeout: 256 seconds)
2021-01-19 12:54:35 +0100jamm(~jamm@unaffiliated/jamm)
2021-01-19 12:55:58 +0100p-core(~Thunderbi@2001:718:1e03:5128:3697:eeda:19aa:8e56)
2021-01-19 12:57:26 +0100neiluj(~jco@91-167-203-101.subs.proxad.net)
2021-01-19 12:57:46 +0100neiluj(~jco@91-167-203-101.subs.proxad.net) (*.net *.split)
2021-01-19 12:57:46 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (*.net *.split)
2021-01-19 12:57:46 +0100mputz(~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de) (*.net *.split)
2021-01-19 12:57:46 +0100_ht(~quassel@82-169-194-8.biz.kpn.net) (*.net *.split)
2021-01-19 12:57:46 +0100Katarushisu(~Katarushi@cpc152083-finc20-2-0-cust170.4-2.cable.virginm.net) (*.net *.split)
2021-01-19 12:57:46 +0100hololeap(~hololeap@unaffiliated/hololeap) (*.net *.split)
2021-01-19 12:57:46 +0100sakirious(~sakirious@c-71-197-191-137.hsd1.wa.comcast.net) (*.net *.split)
2021-01-19 12:57:46 +0100wz1000(~wz1000@static.11.113.47.78.clients.your-server.de) (*.net *.split)
2021-01-19 12:57:46 +0100thecoffemaker(~thecoffem@unaffiliated/thecoffemaker) (*.net *.split)
2021-01-19 12:57:46 +0100b3z(~b3z@vmd41962.contaboserver.net) (*.net *.split)
2021-01-19 12:57:46 +0100ViCi(daniel@10PLM.ro) (*.net *.split)
2021-01-19 12:57:46 +0100hvr_(~hvr@haskell/developer/hvr) (*.net *.split)
2021-01-19 12:57:46 +0100petersen(~petersen@redhat/juhp) (*.net *.split)
2021-01-19 12:57:46 +0100b4er(~b4er@193.27.14.109) (*.net *.split)
2021-01-19 12:57:46 +0100AWizzArd(~code@unaffiliated/awizzard) (*.net *.split)
2021-01-19 12:57:46 +0100Khisanth(~Khisanth@24.sub-174-244-147.myvzw.com) (*.net *.split)
2021-01-19 12:57:46 +0100waskell(~quassel@d172-218-41-115.bchsia.telus.net) (*.net *.split)
2021-01-19 12:57:46 +0100statusfailed(~statusfai@statusfailed.com) (*.net *.split)
2021-01-19 12:57:46 +0100puffnfresh(~puffnfres@119-17-138-164.77118a.mel.static.aussiebb.net) (*.net *.split)
2021-01-19 12:57:46 +0100sujeet(sujeet@unaffiliated/freeboson) (*.net *.split)
2021-01-19 12:57:46 +0100devalot(~ident@mail.pmade.com) (*.net *.split)
2021-01-19 12:57:46 +0100puffnfresh_(~puffnfres@45.76.124.5) (*.net *.split)
2021-01-19 12:57:46 +0100SlashLife(~slashlife@stienen.name) (*.net *.split)
2021-01-19 12:57:46 +0100cpape(~user@static.180.18.203.116.clients.your-server.de) (*.net *.split)
2021-01-19 12:57:46 +0100piele(~piele@tbonesteak.creativeserver.net) (*.net *.split)
2021-01-19 12:57:46 +0100Anthaas(~Anthaas@unaffiliated/anthaas) (*.net *.split)
2021-01-19 12:57:46 +0100pieguy128(~pieguy128@bras-base-mtrlpq5031w-grc-39-70-27-244-102.dsl.bell.ca) (*.net *.split)
2021-01-19 12:57:46 +0100edwtjo(~edwtjo@fsf/member/edwtjo) (*.net *.split)
2021-01-19 12:57:46 +0100zmagii(~zmagii@unaffiliated/zmagii) (*.net *.split)
2021-01-19 12:57:46 +0100otulp(~otulp@ti0187q162-6038.bb.online.no) (*.net *.split)
2021-01-19 12:57:46 +0100mmaruseacph2(~mihai@198.199.100.72) (*.net *.split)
2021-01-19 12:57:47 +0100johnyginthehouse(~johnygint@159.203.30.32) (*.net *.split)
2021-01-19 12:57:47 +0100vancz(~vancz@unaffiliated/vancz) (*.net *.split)
2021-01-19 12:57:47 +0100dminuoso(~dminuoso@unaffiliated/dminuoso) (*.net *.split)
2021-01-19 12:57:47 +0100ralu(~ralu@static.211.245.203.116.clients.your-server.de) (*.net *.split)
2021-01-19 12:57:47 +0100vk3wtf(~doc@203.221.224.44) (*.net *.split)
2021-01-19 12:57:47 +0100quicksilver(~jules@roobarb.crazydogs.org) (*.net *.split)
2021-01-19 12:57:47 +0100whatisRT(~whatisRT@ip5b416a33.dynamic.kabel-deutschland.de) (*.net *.split)
2021-01-19 12:57:47 +0100tv-(~tv@unaffiliated/tv-) (*.net *.split)
2021-01-19 12:57:47 +0100hc(~hc@fsfe/hc) (*.net *.split)
2021-01-19 12:57:47 +0100Cathy(~Cathy@unaffiliated/cathy) (*.net *.split)
2021-01-19 12:57:47 +0100mr_yogurt(~mr_yogurt@5.61.211.35.bc.googleusercontent.com) (*.net *.split)
2021-01-19 12:57:47 +0100emergence(~emergence@vm0.max-p.me) (*.net *.split)
2021-01-19 12:57:47 +0100gareth__(~gareth__@104.236.161.134) (*.net *.split)
2021-01-19 12:57:47 +0100jol(~jol@jol.dev) (*.net *.split)
2021-01-19 12:57:47 +0100WzC(~Frank@77-162-168-71.fixed.kpn.net) (*.net *.split)
2021-01-19 12:57:47 +0100arkeet`(~arkeet@moriya.ca) (*.net *.split)
2021-01-19 12:57:47 +0100drewr(~drew@elastic/staff/drewr) (*.net *.split)
2021-01-19 12:57:47 +0100voidcontext(~pgee@178.62.100.221) (*.net *.split)
2021-01-19 12:57:47 +0100exarkun(~exarkun@14.79.69.34.bc.googleusercontent.com) (*.net *.split)
2021-01-19 12:57:47 +0100andjjj23(~irc@107.170.228.47) (*.net *.split)
2021-01-19 12:57:47 +0100rprosper-(~adam@186.75.232.35.bc.googleusercontent.com) (*.net *.split)
2021-01-19 12:57:54 +0100hc(~hc@fsfe/hc)
2021-01-19 12:57:54 +0100b4er(~b4er@193.27.14.109)
2021-01-19 12:57:55 +0100ViCi(daniel@10PLM.ro)
2021-01-19 12:57:55 +0100imjacobc_(~imjacobcl@host86-129-42-107.range86-129.btcentralplus.com)
2021-01-19 12:57:58 +0100mputz(~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de)
2021-01-19 12:58:00 +0100waskell(~quassel@d172-218-41-115.bchsia.telus.net)
2021-01-19 12:58:03 +0100Gurkenglas_(~Gurkengla@unaffiliated/gurkenglas)
2021-01-19 12:58:03 +0100exarkun(~exarkun@14.79.69.34.bc.googleusercontent.com)
2021-01-19 12:58:03 +0100whatisRT(~whatisRT@ip5b416a33.dynamic.kabel-deutschland.de)
2021-01-19 12:58:05 +0100wz1000(~wz1000@static.11.113.47.78.clients.your-server.de)
2021-01-19 12:58:08 +0100zmagii(~zmagii@unaffiliated/zmagii)
2021-01-19 12:58:11 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-01-19 12:58:16 +0100tv-(~tv@unaffiliated/tv-)
2021-01-19 12:58:19 +0100edwtjo(~edwtjo@h-7-145.A213.priv.bahnhof.se)
2021-01-19 12:58:19 +0100edwtjo(~edwtjo@h-7-145.A213.priv.bahnhof.se) (Changing host)
2021-01-19 12:58:19 +0100edwtjo(~edwtjo@fsf/member/edwtjo)
2021-01-19 12:58:20 +0100quicksilver(~jules@roobarb.crazydogs.org)
2021-01-19 12:58:21 +0100vancz(~vancz@unaffiliated/vancz)
2021-01-19 12:58:22 +0100mmaruseacph2(~mihai@198.199.100.72)
2021-01-19 12:58:22 +0100voidcontext(~pgee@178.62.100.221)
2021-01-19 12:58:23 +0100sakirious(~sakirious@c-71-197-191-137.hsd1.wa.comcast.net)
2021-01-19 12:58:24 +0100vk3wtf(~doc@203.221.224.44)
2021-01-19 12:58:31 +0100gareth__(~gareth__@104.236.161.134)
2021-01-19 12:58:31 +0100b3z(~b3z@vmd41962.contaboserver.net)
2021-01-19 12:58:31 +0100emergence(~emergence@vm0.max-p.me)
2021-01-19 12:58:31 +0100AWizzArd(~code@gehrels.uberspace.de)
2021-01-19 12:58:31 +0100Khisanth(~Khisanth@24.sub-174-244-147.myvzw.com)
2021-01-19 12:58:31 +0100puffnfresh(~puffnfres@119-17-138-164.77118a.mel.static.aussiebb.net)
2021-01-19 12:58:31 +0100cpape(~user@static.180.18.203.116.clients.your-server.de)
2021-01-19 12:58:31 +0100piele(~piele@tbonesteak.creativeserver.net)
2021-01-19 12:58:31 +0100johnyginthehouse(~johnygint@159.203.30.32)
2021-01-19 12:58:31 +0100mr_yogurt(~mr_yogurt@5.61.211.35.bc.googleusercontent.com)
2021-01-19 12:58:31 +0100WzC(~Frank@77-162-168-71.fixed.kpn.net)
2021-01-19 12:58:31 +0100andjjj23(~irc@107.170.228.47)
2021-01-19 12:58:32 +0100ulidtko|k(~ulidtko@194.54.80.38)
2021-01-19 12:58:33 +0100dminuoso(~dminuoso@unaffiliated/dminuoso)
2021-01-19 12:58:35 +0100pieguy128(~pieguy128@bras-base-mtrlpq5031w-grc-39-70-27-244-102.dsl.bell.ca)
2021-01-19 12:58:37 +0100SlashLife(~slashlife@stienen.name)
2021-01-19 12:58:41 +0100ralu(~ralu@static.211.245.203.116.clients.your-server.de)
2021-01-19 12:58:41 +0100ulidtko|kk(~ulidtko@194.54.80.38) (Read error: Connection reset by peer)
2021-01-19 12:58:41 +0100jonathanx(~jonathan@h-176-109.A357.priv.bahnhof.se) (Read error: Connection reset by peer)
2021-01-19 12:58:42 +0100neiluj(~jco@91-167-203-101.subs.proxad.net)
2021-01-19 12:58:42 +0100neiluj(~jco@91-167-203-101.subs.proxad.net) (Changing host)
2021-01-19 12:58:42 +0100neiluj(~jco@unaffiliated/neiluj)
2021-01-19 12:58:45 +0100_ht(~quassel@82-169-194-8.biz.kpn.net)
2021-01-19 12:58:49 +0100hololeap(~hololeap@unaffiliated/hololeap)
2021-01-19 12:58:56 +0100Anthaas(~Anthaas@unaffiliated/anthaas)
2021-01-19 12:59:03 +0100statusfailed(~statusfai@statusfailed.com)
2021-01-19 12:59:03 +0100jespada_(~jespada@90.254.241.81)
2021-01-19 12:59:05 +0100sujeet(sujeet@unaffiliated/freeboson)
2021-01-19 12:59:07 +0100puffnfresh_(~puffnfres@45.76.124.5)
2021-01-19 12:59:08 +0100otulp(~otulp@ti0187q162-6038.bb.online.no)
2021-01-19 12:59:15 +0100Katarushisu(~Katarushi@cpc152083-finc20-2-0-cust170.4-2.cable.virginm.net)
2021-01-19 12:59:18 +0100drewr(~drew@elastic/staff/drewr)
2021-01-19 12:59:22 +0100jamm(~jamm@unaffiliated/jamm) (Ping timeout: 260 seconds)
2021-01-19 12:59:31 +0100petersen(~petersen@redhat/juhp)
2021-01-19 12:59:35 +0100thecoffemaker(~thecoffem@unaffiliated/thecoffemaker)
2021-01-19 12:59:45 +0100Alleria(~textual@mskresolve-a.mskcc.org)
2021-01-19 13:00:06 +0100rprospero(~adam@186.75.232.35.bc.googleusercontent.com)
2021-01-19 13:00:08 +0100AlleriaGuest33543
2021-01-19 13:00:09 +0100jol(~jol@jol.dev)
2021-01-19 13:00:11 +0100Alleria__(~textual@zrcout.mskcc.org) (Ping timeout: 256 seconds)
2021-01-19 13:00:11 +0100jespada(~jespada@90.254.241.81) (Ping timeout: 256 seconds)
2021-01-19 13:00:11 +0100arkeet(arkeet@moriya.ca)
2021-01-19 13:00:11 +0100arkeet(arkeet@moriya.ca) (Changing host)
2021-01-19 13:00:11 +0100arkeet(arkeet@unaffiliated/arkeet)
2021-01-19 13:00:12 +0100adamCS(~adamCS@ec2-34-207-160-255.compute-1.amazonaws.com) (Ping timeout: 264 seconds)
2021-01-19 13:00:38 +0100acidjnk_new(~acidjnk@p200300d0c704e732989dd075055fe92d.dip0.t-ipconnect.de) (Ping timeout: 244 seconds)
2021-01-19 13:00:45 +0100imjacobclark(~imjacobcl@host86-129-42-107.range86-129.btcentralplus.com) (Ping timeout: 256 seconds)
2021-01-19 13:01:13 +0100Cathy(~Cathy@unaffiliated/cathy)
2021-01-19 13:01:19 +0100Gurkenglas(~Gurkengla@unaffiliated/gurkenglas) (Ping timeout: 256 seconds)
2021-01-19 13:02:56 +0100bogdanp(~bogdanp@188.24.80.165)
2021-01-19 13:03:08 +0100adamCS(~adamCS@ec2-34-207-160-255.compute-1.amazonaws.com)
2021-01-19 13:04:05 +0100cole-h(~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) (Ping timeout: 240 seconds)
2021-01-19 13:04:12 +0100devalot(~ident@mail.pmade.com)
2021-01-19 13:13:22 +0100jchia1(~jchia@45.32.62.73)
2021-01-19 13:14:23 +0100jchia1(~jchia@45.32.62.73) (Remote host closed the connection)
2021-01-19 13:14:33 +0100benb(52456307@82-69-99-7.dsl.in-addr.zen.co.uk)
2021-01-19 13:15:15 +0100jchia(~jchia@58.32.37.71) (Ping timeout: 256 seconds)
2021-01-19 13:15:29 +0100jchia(~jchia@58.32.70.251)
2021-01-19 13:19:45 +0100plutoniix(~q@184.82.204.73) (Quit: Leaving)
2021-01-19 13:20:15 +0100philopsos(~caecilius@gateway/tor-sasl/caecilius)
2021-01-19 13:25:50 +0100coeus(~coeus@p200300d0274147008292896d606877b0.dip0.t-ipconnect.de) (Ping timeout: 264 seconds)
2021-01-19 13:29:24 +0100mattycoch(3aa56852@58.165.104.82)
2021-01-19 13:30:16 +0100mputz(~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de) (Quit: mputz)
2021-01-19 13:30:56 +0100jchia__(~jchia@58.32.38.49)
2021-01-19 13:31:58 +0100heatsink(~heatsink@2600:1700:bef1:5e10:a004:c2e:5fd9:3135)
2021-01-19 13:32:18 +0100viluon(uid453725@gateway/web/irccloud.com/x-buwkhmdreivhxbgq)
2021-01-19 13:34:53 +0100mattycochnphard
2021-01-19 13:37:14 +0100heatsink(~heatsink@2600:1700:bef1:5e10:a004:c2e:5fd9:3135) (Ping timeout: 264 seconds)
2021-01-19 13:39:20 +0100plutoniix(~q@184.82.204.73)
2021-01-19 13:42:09 +0100coeus(~coeus@p200300d0271a71003f6e8216a2f68215.dip0.t-ipconnect.de)
2021-01-19 13:44:14 +0100Wuzzy(~Wuzzy@p5b0df22a.dip0.t-ipconnect.de)
2021-01-19 13:44:17 +0100nphard(3aa56852@58.165.104.82) (Ping timeout: 248 seconds)
2021-01-19 13:45:11 +0100knupfer(~Thunderbi@200116b82c70da0034d2ffe034e16ff0.dip.versatel-1u1.de) (Quit: knupfer)
2021-01-19 13:45:20 +0100knupfer(~Thunderbi@200116b82c70da0049acd258c4c452c2.dip.versatel-1u1.de)
2021-01-19 13:45:52 +0100aveltras(uid364989@gateway/web/irccloud.com/x-pgszkpeaurxqzlip)
2021-01-19 13:48:23 +0100olligobber(olligobber@gateway/vpn/privateinternetaccess/olligobber) (Ping timeout: 260 seconds)
2021-01-19 13:49:20 +0100 <aveltras> i'd like to build a function which would only require the field accessor (eg mainCss or mainJs) to build a link with the following code, what would be the type of this function ? the goal is to only have to pass around that function on my app and not the Assets data type + the link builder
2021-01-19 13:49:27 +0100 <aveltras> https://www.irccloud.com/pastebin/swuxws9O/
2021-01-19 13:49:58 +0100 <aveltras> intended use with something like lucid would be
2021-01-19 13:50:01 +0100 <aveltras> script_ [src_ $ buildAssetLink mainCss] (mempty:: Text)
2021-01-19 13:50:13 +0100Deide(~Deide@217.155.19.23)
2021-01-19 13:50:27 +0100 <aveltras> the Assets data is gathered in the main function by parsing a manifest.json file
2021-01-19 13:50:39 +0100 <merijn> aveltras: You can't really avoid passing the Assets data type around?
2021-01-19 13:51:40 +0100 <merijn> aveltras: I mean, even if you *could* pass the field accessor (I'm not even sure what that'd mean?) how would you actually get the data without the Assets datatype?
2021-01-19 13:52:04 +0100 <aveltras> because the buildLink is already partially applied with the Assets data in my main function
2021-01-19 13:52:49 +0100 <merijn> aveltras: Right, but then you can just change buildLink to accept something like "(Asset -> Text) -> ... -> Link"
2021-01-19 13:53:15 +0100 <merijn> Since field accessors function simply as functions "mainCss :: Asset -> Text"?
2021-01-19 13:53:35 +0100 <aveltras> what i tried until now is
2021-01-19 13:53:39 +0100 <aveltras> https://www.irccloud.com/pastebin/oeHOLU6u/
2021-01-19 13:53:55 +0100 <aveltras> but then ghc complains that mainCss is not of type Assets obviously
2021-01-19 13:54:00 +0100p8m_(p8m@gateway/vpn/protonvpn/p8m) (Ping timeout: 246 seconds)
2021-01-19 13:54:04 +0100 <merijn> aveltras: that seems wrong
2021-01-19 13:54:11 +0100knupfer(~Thunderbi@200116b82c70da0049acd258c4c452c2.dip.versatel-1u1.de) (Quit: knupfer)
2021-01-19 13:54:14 +0100knupfer1(~Thunderbi@mue-88-130-61-193.dsl.tropolys.de)
2021-01-19 13:54:17 +0100 <aveltras> i think that s because that not guaranteed taht all fields would lead to a Text data
2021-01-19 13:54:33 +0100 <merijn> aveltras: "buildAssetLink :: Assets -> Link", but you apply it to "mainCss :: Asset -> Link"
2021-01-19 13:54:41 +0100 <merijn> eh
2021-01-19 13:54:47 +0100 <merijn> "mainCss :: Asset -> Text"
2021-01-19 13:55:10 +0100 <aveltras> there's no Link type here, only Text
2021-01-19 13:55:13 +0100niekvandepas(~niekvande@ip-145-116-131-65.wlan-int.ru.nl) (Remote host closed the connection)
2021-01-19 13:55:23 +0100 <merijn> Eh, my brain is fried
2021-01-19 13:55:25 +0100 <merijn> Anyway
2021-01-19 13:55:30 +0100 <aveltras> that s just bad naming on my part
2021-01-19 13:55:33 +0100p8m(p8m@gateway/vpn/protonvpn/p8m)
2021-01-19 13:55:38 +0100 <merijn> Pressumably "Assets" /= "Asset -> Text"
2021-01-19 13:55:39 +0100niekvandepas(~niekvande@ip-145-116-131-65.wlan-int.ru.nl)
2021-01-19 13:56:03 +0100 <aveltras> oh no
2021-01-19 13:56:06 +0100 <aveltras> damn
2021-01-19 13:56:08 +0100 <merijn> aveltras: So obviously it's a type error to apply "buildAssetLink :: Assets -> Text" to "mainCss :: Asset -> Text"
2021-01-19 13:56:08 +0100 <aveltras> so much time lost
2021-01-19 13:56:24 +0100 <aveltras> passed a wrong function type i my template function indeed
2021-01-19 13:56:36 +0100cheater(~user@unaffiliated/cheater) (Ping timeout: 264 seconds)
2021-01-19 13:56:36 +0100knupfer1knupfer
2021-01-19 13:56:37 +0100plutoniix(~q@184.82.204.73) (Quit: Leaving)
2021-01-19 13:56:39 +0100 <aveltras> ((Assets -> Text) -> Text) is much better indeed
2021-01-19 13:56:46 +0100 <merijn> Presumably you meant something like "(Asset -> Text) -> Assets -> Text)" or whatever
2021-01-19 13:57:11 +0100 <merijn> And then passing mainCss should just work
2021-01-19 13:57:11 +0100 <dminuoso> Manually constructing SQL queries with variable amounts of fields, tractable where-clauses... all with postgresql-simple
2021-01-19 13:57:16 +0100 <dminuoso> Is quite fun and easy.
2021-01-19 13:57:22 +0100 <aveltras> ye it works now
2021-01-19 13:57:37 +0100 <aveltras> thanks for your assistance here, should have double checked before asking
2021-01-19 13:57:40 +0100 <dminuoso> More and more do I not understand how people can deal with orm nonsense, say like in django..
2021-01-19 13:57:45 +0100 <aveltras> already had the right type in another function
2021-01-19 13:57:54 +0100 <merijn> dminuoso: :p
2021-01-19 13:58:50 +0100 <aveltras> while you're speaking of sql, has anyone tried using squeal ?
2021-01-19 13:59:44 +0100 <merijn> aveltras: At first glance looks just as painful and awful as beam >.>
2021-01-19 13:59:44 +0100niekvandepas(~niekvande@ip-145-116-131-65.wlan-int.ru.nl) (Ping timeout: 240 seconds)
2021-01-19 14:00:22 +0100 <dminuoso> Instead of trying to connect SQL into the Haskell type system, I'd rather explore tacking a type system onto SQL itself..
2021-01-19 14:00:29 +0100 <merijn> Typeclass with n billion parameters, everything lifted to the type level, etc.
2021-01-19 14:00:40 +0100 <merijn> 5000 modules...
2021-01-19 14:00:57 +0100 <merijn> dminuoso: tbh, I think it's kinda a dumb issue anyway
2021-01-19 14:01:25 +0100 <merijn> Writing tests to check hand-written SQL vs your schema is trivial and probably much less work than maintaining an entire postgres eDSL >.>
2021-01-19 14:01:33 +0100 <merijn> Probably compiles a billion times faster too :p
2021-01-19 14:01:46 +0100tv-(~tv@unaffiliated/tv-) (Quit: WeeChat 2.8)
2021-01-19 14:01:51 +0100 <dminuoso> Heh, most of my compile time is generics for aeson instances.
2021-01-19 14:02:03 +0100tv-(~tv@unaffiliated/tv-)
2021-01-19 14:02:03 +0100 <aveltras> i like that it had migration support but had trouble constructing basic queries with it
2021-01-19 14:02:10 +0100 <dminuoso> Which, if you tightly control the aeson generic options, are actually not so bad
2021-01-19 14:02:18 +0100 <dminuoso> aveltras: "migration support"
2021-01-19 14:02:24 +0100 <dminuoso> Do you wanna see how complicated migrations are?
2021-01-19 14:02:41 +0100 <aveltras> you mean with squeal ?
2021-01-19 14:02:59 +0100 <dminuoso> `data Migration = Migration { migTitle :: Text, migVersion :: Natural, migAction :: Connection -> IO ()`
2021-01-19 14:03:08 +0100 <dminuoso> one does not need library support for "migrations"
2021-01-19 14:03:57 +0100 <aveltras> i mean, the type checking that the migration you're building is indeed getting you from schemaA to schemaB
2021-01-19 14:04:09 +0100 <idnar> dminuoso: have you used Opaleye?
2021-01-19 14:04:19 +0100 <dminuoso> idnar: No, but it has caught my eyes a few times.
2021-01-19 14:04:45 +0100adeene(~adeene@181.131.0.191)
2021-01-19 14:07:08 +0100hackageuniversum 1.7.2 - Custom prelude used in Serokell https://hackage.haskell.org/package/universum-1.7.2 (gromak)
2021-01-19 14:08:15 +0100Tario(~Tario@201.192.165.173)
2021-01-19 14:10:28 +0100pjb(~t@2a01cb04063ec50089de8c855996f2de.ipv6.abo.wanadoo.fr) (Read error: Connection reset by peer)
2021-01-19 14:11:34 +0100cheater(~user@unaffiliated/cheater)
2021-01-19 14:11:35 +0100jackk_Doe(~jackk@205.178.111.134)
2021-01-19 14:12:41 +0100mirrorbird(~psutcliff@2a00:801:42b:aff3:74af:2f22:932d:eac0) (Remote host closed the connection)
2021-01-19 14:13:06 +0100mirrorbird(~psutcliff@2a00:801:42b:aff3:74af:2f22:932d:eac0)
2021-01-19 14:13:32 +0100jonathanx(~jonathan@h-176-109.A357.priv.bahnhof.se)
2021-01-19 14:14:11 +0100pjb(~t@2a01cb04063ec5001d96a6f28d2d22b9.ipv6.abo.wanadoo.fr)
2021-01-19 14:17:36 +0100jonathanx(~jonathan@h-176-109.A357.priv.bahnhof.se) (Read error: Connection reset by peer)
2021-01-19 14:17:57 +0100geekosaur(82650c7c@130.101.12.124)
2021-01-19 14:17:57 +0100jonathanx(~jonathan@h-176-109.A357.priv.bahnhof.se)
2021-01-19 14:19:29 +0100Kaeipi(~Kaiepi@47.54.252.148) (Read error: No route to host)
2021-01-19 14:19:53 +0100niekvandepas(~niekvande@dhcp-077-249-088-250.chello.nl)
2021-01-19 14:20:00 +0100Kaeipi(~Kaiepi@47.54.252.148)
2021-01-19 14:22:03 +0100jonathanx_(~jonathan@h-176-109.A357.priv.bahnhof.se)
2021-01-19 14:23:27 +0100jonathanx(~jonathan@h-176-109.A357.priv.bahnhof.se) (Read error: Connection reset by peer)
2021-01-19 14:23:36 +0100Kaeipi(~Kaiepi@47.54.252.148) (Remote host closed the connection)
2021-01-19 14:24:37 +0100niekvandepas(~niekvande@dhcp-077-249-088-250.chello.nl) (Ping timeout: 256 seconds)
2021-01-19 14:24:57 +0100bogdanp(~bogdanp@188.24.80.165) (Ping timeout: 256 seconds)
2021-01-19 14:26:32 +0100Kaeipi(~Kaiepi@47.54.252.148)
2021-01-19 14:27:41 +0100Kaeipi(~Kaiepi@47.54.252.148) (Read error: Connection reset by peer)
2021-01-19 14:28:06 +0100Kaeipi(~Kaiepi@47.54.252.148)
2021-01-19 14:30:14 +0100brisbin(~patrick@pool-173-49-158-4.phlapa.fios.verizon.net)
2021-01-19 14:31:09 +0100bogdanp(~bogdanp@188.24.80.165)
2021-01-19 14:33:09 +0100heatsink(~heatsink@2600:1700:bef1:5e10:a004:c2e:5fd9:3135)
2021-01-19 14:33:25 +0100Neuromancer(~Neuromanc@unaffiliated/neuromancer)
2021-01-19 14:34:03 +0100LKoen(~LKoen@16.175.9.109.rev.sfr.net) (Remote host closed the connection)
2021-01-19 14:35:57 +0100LKoen(~LKoen@16.175.9.109.rev.sfr.net)
2021-01-19 14:36:39 +0100cgfuh(~cgfuh@181.167.191.58)
2021-01-19 14:36:58 +0100larsan1(~larsan@84.39.117.57)
2021-01-19 14:37:50 +0100heatsink(~heatsink@2600:1700:bef1:5e10:a004:c2e:5fd9:3135) (Ping timeout: 264 seconds)
2021-01-19 14:41:20 +0100hexfive(~hexfive@50.35.83.177) (Quit: i must go. my people need me.)
2021-01-19 14:42:37 +0100m0rphism(~m0rphism@HSI-KBW-085-216-104-059.hsi.kabelbw.de)
2021-01-19 14:45:07 +0100nrh^(nrh@ip98-184-89-2.mc.at.cox.net) ()
2021-01-19 14:48:47 +0100encod3(~encod3@45-154-157-94.ftth.glasoperator.nl)
2021-01-19 14:48:53 +0100niekvandepas(~niekvande@dhcp-077-249-088-250.chello.nl)
2021-01-19 14:54:22 +0100urodna(~urodna@unaffiliated/urodna)
2021-01-19 14:54:23 +0100encod3(~encod3@45-154-157-94.ftth.glasoperator.nl) ()
2021-01-19 14:55:13 +0100hyperisco(~hyperisco@104-195-141-253.cpe.teksavvy.com)
2021-01-19 14:56:11 +0100frankdmartinez(~frankdmar@208.91.107.132) (Ping timeout: 272 seconds)
2021-01-19 14:57:02 +0100LKoen(~LKoen@16.175.9.109.rev.sfr.net) (Read error: Connection reset by peer)
2021-01-19 14:57:41 +0100dandart(~Thunderbi@home.dandart.co.uk)
2021-01-19 14:58:42 +0100LKoen(~LKoen@16.175.9.109.rev.sfr.net)
2021-01-19 14:58:59 +0100justanotheruser(~justanoth@unaffiliated/justanotheruser) (Ping timeout: 260 seconds)
2021-01-19 14:59:04 +0100elfets(~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de)
2021-01-19 14:59:42 +0100acidjnk_new(~acidjnk@p200300d0c704e732989dd075055fe92d.dip0.t-ipconnect.de)
2021-01-19 14:59:59 +0100elliott__(~elliott@pool-108-51-101-42.washdc.fios.verizon.net) (Ping timeout: 272 seconds)
2021-01-19 15:02:09 +0100ADG1089__(~aditya@223.226.159.22) (Remote host closed the connection)
2021-01-19 15:04:28 +0100st8less(~st8less@2603:a060:11fd:0:de2c:8831:13db:5b34)
2021-01-19 15:04:37 +0100cheater(~user@unaffiliated/cheater) (Ping timeout: 256 seconds)
2021-01-19 15:08:47 +0100p7lpa1ugixavugu(~atomic@2800:810:514:e7:7d4a:ba43:c831:bee6)
2021-01-19 15:08:52 +0100geowiesnot(~user@87-89-181-157.abo.bbox.fr)
2021-01-19 15:12:09 +0100ADG1089__(~aditya@223.226.159.22)
2021-01-19 15:14:15 +0100jackk_Doe(~jackk@205.178.111.134) (Quit: Going offline, see ya! (www.adiirc.com))
2021-01-19 15:16:31 +0100jackk_Doe(~jackk@205.178.111.134)
2021-01-19 15:21:31 +0100columbarius1columbarius
2021-01-19 15:22:01 +0100 <kuribas> iskander wilds
2021-01-19 15:22:27 +0100 <kuribas> sorry bout that...
2021-01-19 15:22:42 +0100 <kuribas> keyboard is acting weird
2021-01-19 15:22:57 +0100Saukk(~Saukk@83-148-239-3.dynamic.lounea.fi)
2021-01-19 15:22:57 +0100ystael(~ystael@209.6.50.55)
2021-01-19 15:23:19 +0100mirrorbird(~psutcliff@2a00:801:42b:aff3:74af:2f22:932d:eac0) (Ping timeout: 272 seconds)
2021-01-19 15:23:50 +0100evanjs-(~evanjs@075-129-098-007.res.spectrum.com) (Read error: Connection reset by peer)
2021-01-19 15:24:36 +0100Saukk(~Saukk@83-148-239-3.dynamic.lounea.fi) (Remote host closed the connection)
2021-01-19 15:25:45 +0100evanjs(~evanjs@075-129-098-007.res.spectrum.com)
2021-01-19 15:27:49 +0100jpds(~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection)
2021-01-19 15:28:24 +0100elfets(~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de) (Ping timeout: 264 seconds)
2021-01-19 15:28:28 +0100jpds(~jpds@gateway/tor-sasl/jpds)
2021-01-19 15:30:00 +0100Tario(~Tario@201.192.165.173) (Read error: Connection reset by peer)
2021-01-19 15:33:40 +0100heatsink(~heatsink@2600:1700:bef1:5e10:a004:c2e:5fd9:3135)
2021-01-19 15:38:13 +0100heatsink(~heatsink@2600:1700:bef1:5e10:a004:c2e:5fd9:3135) (Ping timeout: 244 seconds)
2021-01-19 15:42:54 +0100Tario(~Tario@201.192.165.173)
2021-01-19 15:43:56 +0100cheater(~user@unaffiliated/cheater)
2021-01-19 15:46:03 +0100mollberg(~mollberg@h-62-63-197-58.NA.cust.bahnhof.se)
2021-01-19 15:46:05 +0100geekosaur(82650c7c@130.101.12.124) (Quit: Connection closed)
2021-01-19 15:46:53 +0100mollberg(~mollberg@h-62-63-197-58.NA.cust.bahnhof.se) (Client Quit)
2021-01-19 15:48:12 +0100mollberg(~mollberg@h-62-63-197-58.NA.cust.bahnhof.se)
2021-01-19 15:49:47 +0100mollberg(~mollberg@h-62-63-197-58.NA.cust.bahnhof.se) (Client Quit)
2021-01-19 15:52:04 +0100mollberg(~mollberg@h-62-63-197-58.NA.cust.bahnhof.se)
2021-01-19 15:52:27 +0100mmmattyx(uid17782@gateway/web/irccloud.com/x-ohocdjlobxmifhzq)
2021-01-19 15:56:46 +0100 <mollberg> Any gurus around to help a Haskell beginner in distress? I could use some pointers in understanding recursive data structures...
2021-01-19 15:57:12 +0100 <mollberg> Recursive type classes, I should say.
2021-01-19 15:57:28 +0100 <kuribas> hmm, recursive type classes...
2021-01-19 15:57:31 +0100st8less(~st8less@2603:a060:11fd:0:de2c:8831:13db:5b34) (Ping timeout: 272 seconds)
2021-01-19 15:58:33 +0100 <ski> recursive, in which sense ?
2021-01-19 15:59:00 +0100 <mollberg> Every tutorial presents me with the binary tree traversal example, but I don't think I can "think recursively" enough to wrap my head around it.
2021-01-19 15:59:12 +0100st8less(~st8less@inet-167-224-197-181.isp.ozarksgo.net)
2021-01-19 15:59:36 +0100zebrag(~inkbottle@aaubervilliers-654-1-120-135.w86-198.abo.wanadoo.fr)
2021-01-19 15:59:44 +0100 <merijn> mollberg: typeclasses and data structures are pretty much entirely unrelated
2021-01-19 16:00:26 +0100 <kuribas> mollberg: do you know fractals?
2021-01-19 16:00:38 +0100 <merijn> Especially something like binary tree traversal sounds rather unrelated to type classes
2021-01-19 16:00:38 +0100 <kuribas> mollberg: the idea is that you have some part which looks like the whole.
2021-01-19 16:00:55 +0100 <mollberg> Sorry, still getting used to the terminology -- I mean a recursive algebraic data type.
2021-01-19 16:01:17 +0100benb(52456307@82-69-99-7.dsl.in-addr.zen.co.uk) (Quit: Ping timeout (120 seconds))
2021-01-19 16:01:33 +0100frankdmartinez(~frankdmar@208.91.107.132)
2021-01-19 16:02:19 +0100 <ski> do you have some experience with recursion on non-recursive data structures .. like numbers, arrays ?
2021-01-19 16:02:37 +0100 <ski> how about recursion with lists ?
2021-01-19 16:02:49 +0100Sgeo(~Sgeo@ool-18b98aa4.dyn.optonline.net)
2021-01-19 16:03:47 +0100 <mollberg> Yes, since a few days ago I know my way around Haskell well enough to write basic list operations recursively without folding.
2021-01-19 16:05:36 +0100 <ski> could you write insertion sort or selection sort ? how about "quick sort" or "merge sort" ?
2021-01-19 16:05:45 +0100 <merijn> Fold and recursion are essentially the same thing, except you skip the step of manually writing out the recursion with fold :p
2021-01-19 16:07:22 +0100 <dminuoso> mollberg: Start with the list type, that one is a recursive data type too.
2021-01-19 16:07:29 +0100 <mollberg> I can write both a merge sort and a quick sort, yes.
2021-01-19 16:07:37 +0100 <dminuoso> Or, perhaps, hand-rolled peano naturals are even simpler..
2021-01-19 16:07:39 +0100mouseghost(~draco@87-206-9-185.dynamic.chello.pl)
2021-01-19 16:07:39 +0100mouseghost(~draco@87-206-9-185.dynamic.chello.pl) (Changing host)
2021-01-19 16:07:39 +0100mouseghost(~draco@wikipedia/desperek)
2021-01-19 16:07:50 +0100 <dminuoso> % data Nat = Succ Nat | Zero
2021-01-19 16:07:51 +0100 <yahb> dminuoso:
2021-01-19 16:08:05 +0100 <ski> so it seems you're ok with non-linear-recursion, then
2021-01-19 16:08:19 +0100knupfer(~Thunderbi@mue-88-130-61-193.dsl.tropolys.de) (Ping timeout: 256 seconds)
2021-01-19 16:09:07 +0100 <ski> you are drawing pictures of trees, yes ?
2021-01-19 16:09:39 +0100son0p(~son0p@181.136.122.143)
2021-01-19 16:10:01 +0100 <mollberg> I know folding and recursion are essentially the same, was just clarifying that I understand recursion well enough to be able to write folds by myself.
2021-01-19 16:10:12 +0100 <mollberg> Haven't drawn pictures of trees yet, very good idea.
2021-01-19 16:11:19 +0100 <ski> is there some particular recursion you're having trouble with atm, that we could perhaps assist with ?
2021-01-19 16:12:07 +0100ADG1089__(~aditya@223.226.159.22) (Remote host closed the connection)
2021-01-19 16:19:16 +0100cfricke(~cfricke@unaffiliated/cfricke) (Quit: WeeChat 3.0)
2021-01-19 16:19:52 +0100niekvandepas(~niekvande@dhcp-077-249-088-250.chello.nl) (Remote host closed the connection)
2021-01-19 16:20:36 +0100pera(pera@gateway/vpn/mullvad/pera) (Ping timeout: 264 seconds)
2021-01-19 16:20:56 +0100niekvandepas(~niekvande@dhcp-077-249-088-250.chello.nl)
2021-01-19 16:22:23 +0100bitmagie(~Thunderbi@200116b80659d800054946a6cc2a64f2.dip.versatel-1u1.de)
2021-01-19 16:23:16 +0100 <mollberg> I'm trying to wrap my head around the Tree/Node example in Learn you a Haskell under "Recursive Data Structures". I don't really understand how the treeInsert function works, what 'left' and 'right' signify, etc.
2021-01-19 16:25:24 +0100niekvandepas(~niekvande@dhcp-077-249-088-250.chello.nl) (Ping timeout: 264 seconds)
2021-01-19 16:25:42 +0100pera(pera@gateway/vpn/mullvad/pera)
2021-01-19 16:25:44 +0100 <__monty__> mollberg: `(Node a left right)` is a pattern match. It binds the three fields of a "Node" value to the names "a," left and right.
2021-01-19 16:25:45 +0100 <ski> a tree is either empty, or it's a node, that's branching off into two (sub-)trees (and also contains an element at the node)
2021-01-19 16:26:10 +0100 <ski> `left' and `right' are names that are commonly given to these two sub-trees. the left and the right sub-tree
2021-01-19 16:26:37 +0100 <ski> (any names could be used, but these are conventional)
2021-01-19 16:29:31 +0100 <ski> could you draw e.g. the tree `Node 1 (Node 2 (Node 4 EmptyTree) EmptyTree) (Node 3 EmptyTree (Node 7 (Node 14 EmptyTree EmptyTree) EmptyTree))' in a picture ?
2021-01-19 16:29:46 +0100 <__monty__> mollberg: And to insert a value in a BST you compare with the value of the current node, if the new value is smaller it needs to go into the left subtree, etc.
2021-01-19 16:32:05 +0100machinedgod(~machinedg@135-23-192-217.cpe.pppoe.ca)
2021-01-19 16:32:38 +0100bitmagie(~Thunderbi@200116b80659d800054946a6cc2a64f2.dip.versatel-1u1.de) (Quit: bitmagie)
2021-01-19 16:33:24 +0100fangyrn(uid481529@gateway/web/irccloud.com/x-uookpebloxxoqjgr)
2021-01-19 16:34:24 +0100heatsink(~heatsink@2600:1700:bef1:5e10:a004:c2e:5fd9:3135)
2021-01-19 16:39:02 +0100heatsink(~heatsink@2600:1700:bef1:5e10:a004:c2e:5fd9:3135) (Ping timeout: 264 seconds)
2021-01-19 16:41:15 +0100adeene(~adeene@181.131.0.191) (Read error: Connection reset by peer)
2021-01-19 16:42:08 +0100 <mollberg> Going to try to draw a picture picture ans see if that clarifies it! Thanks for the help! (Unfortunately, I might be back, haha)
2021-01-19 16:43:02 +0100p-core(~Thunderbi@2001:718:1e03:5128:3697:eeda:19aa:8e56) (Quit: p-core)
2021-01-19 16:43:23 +0100p-core(~Thunderbi@2001:718:1e03:5128:3697:eeda:19aa:8e56)
2021-01-19 16:48:24 +0100ski. o O ( <https://www.bellman.net/texter/text.php?epistel=45> )
2021-01-19 16:49:48 +0100Andrologic_(~Andrologi@90.221.74.173) (Ping timeout: 260 seconds)
2021-01-19 16:51:54 +0100adeene(~adeene@181.131.0.191)
2021-01-19 16:52:06 +0100viluon(uid453725@gateway/web/irccloud.com/x-buwkhmdreivhxbgq) (Quit: Connection closed for inactivity)
2021-01-19 16:57:03 +0100niekvandepas(~niekvande@89.205.140.135)
2021-01-19 16:57:04 +0100p-core(~Thunderbi@2001:718:1e03:5128:3697:eeda:19aa:8e56) (Quit: p-core)
2021-01-19 16:57:24 +0100p-core(~Thunderbi@2001:718:1e03:5128:3697:eeda:19aa:8e56)
2021-01-19 16:58:11 +0100blissful(~blissful@unaffiliated/azuline) (Quit: owo)
2021-01-19 16:58:21 +0100 <Taneb> Template haskell question: I have a Type and I Want to see if it represents the same type as a known type (in this case NoContent from servant). How can I do this?
2021-01-19 16:58:27 +0100ADG1089__(~aditya@223.226.159.22)
2021-01-19 16:58:48 +0100blissful(~blissful@unaffiliated/azuline)
2021-01-19 17:00:15 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-01-19 17:01:16 +0100cr3(~cr3@192-222-143-195.qc.cable.ebox.net)
2021-01-19 17:01:47 +0100hnOsmium0001(uid453710@gateway/web/irccloud.com/x-szygrdcvutmfpknh)
2021-01-19 17:01:48 +0100andrologic(~Andrologi@90.221.74.173)
2021-01-19 17:02:15 +0100justanotheruser(~justanoth@unaffiliated/justanotheruser)
2021-01-19 17:07:52 +0100p7lpa1ugixavugu(~atomic@2800:810:514:e7:7d4a:ba43:c831:bee6) (Ping timeout: 260 seconds)
2021-01-19 17:08:29 +0100avdb(~avdb@gateway/tor-sasl/avdb)
2021-01-19 17:09:49 +0100djbeau(~dbeaureg@148.87.23.5)
2021-01-19 17:10:59 +0100ericsagnes(~ericsagne@2405:6580:0:5100:5b64:e916:ea7b:a5fd) (Ping timeout: 272 seconds)
2021-01-19 17:11:03 +0100shatriff(~vitaliish@176-52-216-242.irishtelecom.com)
2021-01-19 17:13:31 +0100ransom(~c4264035@8.48.134.30)
2021-01-19 17:15:28 +0100jneira[m](~jneira@4.red-176-87-17.dynamicip.rima-tde.net)
2021-01-19 17:15:32 +0100rayyyy(~nanoz@gateway/tor-sasl/nanoz)
2021-01-19 17:15:58 +0100ransom_(~c4264035@undergraduate-jvossen-9690.mines.edu)
2021-01-19 17:17:18 +0100nineonine(~nineonine@50.216.62.2)
2021-01-19 17:17:43 +0100 <glguy> Taneb, you could use http://hackage.haskell.org/package/th-abstraction-0.4.2.0/docs/Language-Haskell-TH-Datatype.html#v…
2021-01-19 17:18:01 +0100 <glguy> Not great for detecting failure though
2021-01-19 17:18:10 +0100 <glguy> I forget if you can catch that in Q
2021-01-19 17:18:35 +0100ransom(~c4264035@8.48.134.30) (Ping timeout: 256 seconds)
2021-01-19 17:18:55 +0100 <glguy> If you just want to compare for equality to a simple constructor that should be easy enough
2021-01-19 17:19:14 +0100frankdmartinez(~frankdmar@208.91.107.132) (Ping timeout: 264 seconds)
2021-01-19 17:22:50 +0100LKoen(~LKoen@16.175.9.109.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.”)
2021-01-19 17:22:51 +0100ericsagnes(~ericsagne@2405:6580:0:5100:3a7c:5d06:5699:8d8b)
2021-01-19 17:22:56 +0100cross_(~cross@spitfire.i.gajendra.net) (Ping timeout: 240 seconds)
2021-01-19 17:23:03 +0100nineonine(~nineonine@50.216.62.2) (Ping timeout: 260 seconds)
2021-01-19 17:23:10 +0100adeene(~adeene@181.131.0.191) (Quit: Leaving)
2021-01-19 17:23:24 +0100acidjnk_new(~acidjnk@p200300d0c704e732989dd075055fe92d.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
2021-01-19 17:24:24 +0100p7lpa1ugixavugu(~atomic@2800:810:514:e7:cd02:ce51:d5ac:d9bf)
2021-01-19 17:25:27 +0100avdb(~avdb@gateway/tor-sasl/avdb) (Quit: avdb)
2021-01-19 17:27:13 +0100jamm(~jamm@unaffiliated/jamm)
2021-01-19 17:28:57 +0100sMuNiX(~sMuNiX@vlnsm8-montreal02-142-122-8-233.internet.virginmobile.ca)
2021-01-19 17:29:12 +0100cross(~cross@spitfire.i.gajendra.net)
2021-01-19 17:31:47 +0100jamm(~jamm@unaffiliated/jamm) (Ping timeout: 260 seconds)
2021-01-19 17:39:47 +0100kritzefitz(~kritzefit@fw-front.credativ.com) (Remote host closed the connection)
2021-01-19 17:41:29 +0100hc(~hc@fsfe/hc) (Quit: leaving)
2021-01-19 17:41:38 +0100hc(~hc@fsfe/hc)
2021-01-19 17:42:23 +0100son0p(~son0p@181.136.122.143) (Quit: Lost terminal)
2021-01-19 17:42:43 +0100jneira[m](~jneira@4.red-176-87-17.dynamicip.rima-tde.net) (Remote host closed the connection)
2021-01-19 17:42:51 +0100heatsink(~heatsink@2600:1700:bef1:5e10:a004:c2e:5fd9:3135)
2021-01-19 17:44:10 +0100jackk_Doe(~jackk@205.178.111.134) (Quit: Going offline, see ya! (www.adiirc.com))
2021-01-19 17:46:17 +0100Alleria(~textual@zrcout.mskcc.org)
2021-01-19 17:46:40 +0100AlleriaGuest74635
2021-01-19 17:46:53 +0100niekvand_(~niekvande@89.205.140.135)
2021-01-19 17:47:02 +0100mouseghost(~draco@wikipedia/desperek) (Quit: mew wew)
2021-01-19 17:47:05 +0100Katarushisu9(~Katarushi@cpc152083-finc20-2-0-cust170.4-2.cable.virginm.net)
2021-01-19 17:47:06 +0100russruss40(~russruss@my.russellmcc.com)
2021-01-19 17:47:51 +0100petersen_(~petersen@redhat/juhp)
2021-01-19 17:48:30 +0100p8m(p8m@gateway/vpn/protonvpn/p8m) (Ping timeout: 256 seconds)
2021-01-19 17:48:31 +0100Guest33543(~textual@mskresolve-a.mskcc.org) (Ping timeout: 256 seconds)
2021-01-19 17:48:31 +0100Deide1(~Deide@217.155.19.23)
2021-01-19 17:48:37 +0100zebrag(~inkbottle@aaubervilliers-654-1-120-135.w86-198.abo.wanadoo.fr) (Remote host closed the connection)
2021-01-19 17:48:37 +0100niekvandepas(~niekvande@89.205.140.135) (Ping timeout: 256 seconds)
2021-01-19 17:48:37 +0100Neuromancer(~Neuromanc@unaffiliated/neuromancer) (Ping timeout: 256 seconds)
2021-01-19 17:48:37 +0100anoe(~anoe@delanoe.org) (Ping timeout: 256 seconds)
2021-01-19 17:48:37 +0100NieDzejkob(~quassel@188.123.215.55) (Ping timeout: 256 seconds)
2021-01-19 17:48:38 +0100p8m(p8m@gateway/vpn/protonvpn/p8m)
2021-01-19 17:48:47 +0100NieDzejkob(~quassel@188.123.215.55)
2021-01-19 17:48:52 +0100anoe(~anoe@delanoe.org)
2021-01-19 17:49:00 +0100zebrag(~inkbottle@aaubervilliers-654-1-120-135.w86-198.abo.wanadoo.fr)
2021-01-19 17:49:11 +0100andrologic(~Andrologi@90.221.74.173) (Ping timeout: 256 seconds)
2021-01-19 17:49:11 +0100Deide(~Deide@217.155.19.23) (Ping timeout: 256 seconds)
2021-01-19 17:49:11 +0100Katarushisu(~Katarushi@cpc152083-finc20-2-0-cust170.4-2.cable.virginm.net) (Ping timeout: 256 seconds)
2021-01-19 17:49:11 +0100petersen(~petersen@redhat/juhp) (Ping timeout: 256 seconds)
2021-01-19 17:49:11 +0100Tuplanolla(~Tuplanoll@91-159-68-239.elisa-laajakaista.fi) (Ping timeout: 256 seconds)
2021-01-19 17:49:11 +0100russruss4(~russruss@my.russellmcc.com) (Ping timeout: 256 seconds)
2021-01-19 17:49:12 +0100russruss40russruss4
2021-01-19 17:49:12 +0100Katarushisu9Katarushisu
2021-01-19 17:49:27 +0100petersen_petersen
2021-01-19 17:49:32 +0100andrologic(~Andrologi@90.221.74.173)
2021-01-19 17:49:47 +0100Tuplanolla(~Tuplanoll@91-159-68-239.elisa-laajakaista.fi)
2021-01-19 17:51:20 +0100niekvand_(~niekvande@89.205.140.135) (Remote host closed the connection)
2021-01-19 17:52:41 +0100Lord_of_Life_(~Lord@unaffiliated/lord-of-life/x-0885362)
2021-01-19 17:55:25 +0100Lord_of_Life(~Lord@unaffiliated/lord-of-life/x-0885362) (Ping timeout: 272 seconds)
2021-01-19 17:55:34 +0100Lord_of_Life_Lord_of_Life
2021-01-19 17:56:02 +0100niekvandepas(~niekvande@89.205.140.135)
2021-01-19 17:57:12 +0100pavonia(~user@unaffiliated/siracusa) (Quit: Bye!)
2021-01-19 17:57:15 +0100Neuromancer(~Neuromanc@unaffiliated/neuromancer)
2021-01-19 17:59:36 +0100kritzefitz(~kritzefit@212.86.56.80)
2021-01-19 17:59:37 +0100Tario(~Tario@201.192.165.173) (Read error: Connection reset by peer)
2021-01-19 17:59:58 +0100tzh(~tzh@c-24-21-73-154.hsd1.or.comcast.net)
2021-01-19 18:00:13 +0100Tario(~Tario@201.192.165.173)
2021-01-19 18:00:49 +0100Franciman(~francesco@host-79-51-37-36.retail.telecomitalia.it) (Quit: Leaving)
2021-01-19 18:00:52 +0100ubert(~Thunderbi@2a02:8109:9880:303c:ca5b:76ff:fe29:f233) (Remote host closed the connection)
2021-01-19 18:03:22 +0100ep1ctetus(~epictetus@ip184-187-162-163.sb.sd.cox.net)
2021-01-19 18:03:44 +0100rwdrich(560395a9@cpc159427-cmbg20-2-0-cust424.5-4.cable.virginm.net)
2021-01-19 18:03:59 +0100rwdrich(560395a9@cpc159427-cmbg20-2-0-cust424.5-4.cable.virginm.net) (Client Quit)
2021-01-19 18:04:18 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 256 seconds)
2021-01-19 18:04:57 +0100polyphem(~p0lyph3m@2a02:810d:640:776c:76d7:55f6:f85b:c889)
2021-01-19 18:08:00 +0100knupfer(~Thunderbi@dynamic-046-114-149-239.46.114.pool.telefonica.de)
2021-01-19 18:08:29 +0100worc3131(~quassel@2a02:c7f:dcc4:6500:cf0e:3346:8766:ab20)
2021-01-19 18:08:37 +0100hackagecall-stack 0.3.0 - Use GHC call-stacks in a backward compatible way https://hackage.haskell.org/package/call-stack-0.3.0 (SimonHengel)
2021-01-19 18:13:22 +0100geekosaur(82650c7c@130.101.12.124)
2021-01-19 18:14:25 +0100imjacobc_(~imjacobcl@host86-129-42-107.range86-129.btcentralplus.com) (Remote host closed the connection)
2021-01-19 18:14:29 +0100niekvandepas(~niekvande@89.205.140.135) (Remote host closed the connection)
2021-01-19 18:15:02 +0100niekvandepas(~niekvande@89.205.140.135)
2021-01-19 18:15:10 +0100imjacobclark(~imjacobcl@host86-129-42-107.range86-129.btcentralplus.com)
2021-01-19 18:16:51 +0100conal(~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
2021-01-19 18:17:34 +0100niekvandepas(~niekvande@89.205.140.135) (Read error: No route to host)
2021-01-19 18:19:53 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net)
2021-01-19 18:22:47 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Remote host closed the connection)
2021-01-19 18:23:22 +0100LKoen(~LKoen@16.175.9.109.rev.sfr.net)
2021-01-19 18:23:24 +0100nineonine(~nineonine@50.216.62.2)
2021-01-19 18:24:46 +0100heatsink(~heatsink@2600:1700:bef1:5e10:a004:c2e:5fd9:3135) (Remote host closed the connection)
2021-01-19 18:26:01 +0100Tario(~Tario@201.192.165.173) (Read error: Connection reset by peer)
2021-01-19 18:26:20 +0100conal(~conal@64.71.133.70)
2021-01-19 18:30:09 +0100jpds(~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection)
2021-01-19 18:30:31 +0100jpds(~jpds@gateway/tor-sasl/jpds)
2021-01-19 18:33:53 +0100Tario(~Tario@201.192.165.173)
2021-01-19 18:35:12 +0100ADG1089__(~aditya@223.226.159.22) (Remote host closed the connection)
2021-01-19 18:36:54 +0100imjacobclark(~imjacobcl@host86-129-42-107.range86-129.btcentralplus.com) (Remote host closed the connection)
2021-01-19 18:37:16 +0100pera(pera@gateway/vpn/mullvad/pera) (Quit: leaving)
2021-01-19 18:37:29 +0100imjacobclark(~imjacobcl@host86-129-42-107.range86-129.btcentralplus.com)
2021-01-19 18:41:45 +0100imjacobclark(~imjacobcl@host86-129-42-107.range86-129.btcentralplus.com) (Ping timeout: 240 seconds)
2021-01-19 18:43:10 +0100heatsink(~heatsink@2600:1700:bef1:5e10:a004:c2e:5fd9:3135)
2021-01-19 18:43:33 +0100Moyst(~moyst@85-76-109-176-nat.elisa-mobile.fi) (Ping timeout: 260 seconds)
2021-01-19 18:44:26 +0100juuandyy(~juuandyy@90.166.144.65)
2021-01-19 18:45:31 +0100Moyst(~moyst@212-149-213-144.bb.dnainternet.fi)
2021-01-19 18:48:21 +0100avdb(~avdb@gateway/tor-sasl/avdb)
2021-01-19 18:50:40 +0100orion(~orion@unaffiliated/orion) (Remote host closed the connection)
2021-01-19 18:53:06 +0100niekvandepas(~niekvande@2001:985:bebc:1:9458:ea67:4de:2943)
2021-01-19 18:53:39 +0100rajivr(uid269651@gateway/web/irccloud.com/x-sozgnodbahkqqgom) (Quit: Connection closed for inactivity)
2021-01-19 18:57:32 +0100niekvandepas(~niekvande@2001:985:bebc:1:9458:ea67:4de:2943) (Ping timeout: 260 seconds)
2021-01-19 18:59:02 +0100 <dminuoso> Say I have a `T -> Maybe (T, T)` type of generator function. Is there a standard corecursion trick similar to unfoldr that would let me build a tree rather than a list from that?
2021-01-19 19:00:08 +0100ransom(~c4264035@8.48.134.30)
2021-01-19 19:00:11 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-01-19 19:00:58 +0100brodie(~brodie@2607:f598:b992:f800:c059:1155:fde1:7ba2)
2021-01-19 19:01:26 +0100 <monochrom> The source code of Data.Tree.unfoldTree may inspire you.
2021-01-19 19:03:23 +0100ransom_(~c4264035@undergraduate-jvossen-9690.mines.edu) (Ping timeout: 260 seconds)
2021-01-19 19:04:08 +0100 <lyxia> dminuoso: How about ana from recursion schemes
2021-01-19 19:08:22 +0100 <dminuoso> lyxia: Mmm, I feared that recursion schemes was going to be an answer. Perhaps this is the time I finally take a look at it.
2021-01-19 19:09:06 +0100danso(~dan@2001:1970:52e7:d000:96b8:6dff:feb3:c009)
2021-01-19 19:09:25 +0100 <monochrom> You just need to understand catamorphisms and anamorphisms. Don't worry about the rest, they are not enlightening enough to worth one's time.
2021-01-19 19:09:39 +0100 <dminuoso> Well, ana looks very straight forward.
2021-01-19 19:10:07 +0100 <dminuoso> Presumably the "base functor" from recursion scheme can be turned into the recursive data structure via Fix?
2021-01-19 19:10:16 +0100 <monochrom> Yes.
2021-01-19 19:11:00 +0100mollberg(~mollberg@h-62-63-197-58.NA.cust.bahnhof.se) (Ping timeout: 264 seconds)
2021-01-19 19:11:00 +0100 <monochrom> "data IntList = Nil | Cons Int (IntList)" is "data F r = Nil | Cons Int r" then "Fix F"
2021-01-19 19:11:20 +0100 <dminuoso> Makes sense
2021-01-19 19:11:35 +0100worc3131(~quassel@2a02:c7f:dcc4:6500:cf0e:3346:8766:ab20) (Remote host closed the connection)
2021-01-19 19:11:43 +0100ransom_(~c4264035@undergraduate-jvossen-9690.mines.edu)
2021-01-19 19:12:39 +0100 <dminuoso> Okay, so both `embed` and `ana` seem exactly like what I was looking for. Thanks lyxia.
2021-01-19 19:13:03 +0100ransom(~c4264035@8.48.134.30) (Ping timeout: 256 seconds)
2021-01-19 19:13:25 +0100jespada_(~jespada@90.254.241.81) (Ping timeout: 240 seconds)
2021-01-19 19:14:46 +0100knupfer(~Thunderbi@dynamic-046-114-149-239.46.114.pool.telefonica.de) (Read error: Connection reset by peer)
2021-01-19 19:15:38 +0100jespada(~jespada@90.254.241.81)
2021-01-19 19:18:47 +0100dandart(~Thunderbi@home.dandart.co.uk) (Quit: dandart)
2021-01-19 19:21:29 +0100raichoo(~raichoo@213.240.178.58) (Quit: Lost terminal)
2021-01-19 19:25:08 +0100hackagedistribution-nixpkgs 1.4.0 - Types and functions to manipulate the Nixpkgs distribution https://hackage.haskell.org/package/distribution-nixpkgs-1.4.0 (PeterSimons)
2021-01-19 19:26:53 +0100ransom_(~c4264035@undergraduate-jvossen-9690.mines.edu) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-01-19 19:28:38 +0100hackageHUnit 1.6.2.0 - A unit testing framework for Haskell https://hackage.haskell.org/package/HUnit-1.6.2.0 (SimonHengel)
2021-01-19 19:29:33 +0100ransom(~c4264035@undergraduate-jvossen-9690.mines.edu)
2021-01-19 19:29:36 +0100 <kuribas> is there an easy tool for creating web interfaces, without having to code javascript?
2021-01-19 19:29:45 +0100 <kuribas> or at least minimal javascript?
2021-01-19 19:29:45 +0100 <merijn> HTML? *duck*
2021-01-19 19:30:13 +0100 <kuribas> merijn: actually, that's a good point
2021-01-19 19:30:31 +0100 <kuribas> I could just do old-style multi-page html forms...
2021-01-19 19:30:36 +0100 <aldum> html+css, check out what sr.ht can do without js
2021-01-19 19:30:44 +0100 <monochrom> May I bring back fond memories from old times: CGI
2021-01-19 19:31:07 +0100 <aldum> strictly perl, I'm sure
2021-01-19 19:31:17 +0100 <kuribas> aldum: sr.ht?
2021-01-19 19:31:24 +0100 <kuribas> that's a website?
2021-01-19 19:32:08 +0100hackagecabal2nix 2.16.0 - Convert Cabal files into Nix build instructions. https://hackage.haskell.org/package/cabal2nix-2.16.0 (PeterSimons)
2021-01-19 19:32:25 +0100Sheilong(uid293653@gateway/web/irccloud.com/x-rjsiiowahomjgmcc)
2021-01-19 19:32:46 +0100 <aldum> a website too, but mainly an open source forge
2021-01-19 19:32:50 +0100 <exarkun> kuribas: Just compile your Haskell to JavaScript. That's what you're looking for right?
2021-01-19 19:32:57 +0100hongminhee(~dahlia@207.148.91.209) (Ping timeout: 272 seconds)
2021-01-19 19:33:00 +0100 <exarkun> Or skip the intermediate step and compile it to webassembly.
2021-01-19 19:33:15 +0100hongminhee(~dahlia@207.148.91.209)
2021-01-19 19:33:30 +0100 <merijn> Just use Ur/Web ;)
2021-01-19 19:33:39 +0100 <dminuoso> exarkun: If only this would play nice with GC...
2021-01-19 19:33:57 +0100 <dminuoso> But since webassembly sits ontop of GC and does not offer manual memory management...
2021-01-19 19:34:01 +0100ransom(~c4264035@undergraduate-jvossen-9690.mines.edu) (Ping timeout: 256 seconds)
2021-01-19 19:34:41 +0100 <exarkun> dminuoso: This would differentiate it from most other websites how, exactly? :)
2021-01-19 19:34:59 +0100 <kuribas> exarkun: I'd like to avoid ghcjs
2021-01-19 19:35:13 +0100 <kuribas> exarkun: if I go that route, I'd use purescript
2021-01-19 19:35:28 +0100 <exarkun> We can't always have what we'd like
2021-01-19 19:35:31 +0100 <exarkun> especially on the web
2021-01-19 19:35:58 +0100frankdmartinez(~frankdmar@208.91.107.132)
2021-01-19 19:35:58 +0100frankdmartinez(~frankdmar@208.91.107.132) (Client Quit)
2021-01-19 19:36:20 +0100frankdmartinez(~frankdmar@208.91.107.132)
2021-01-19 19:36:21 +0100frankdmartinez(~frankdmar@208.91.107.132) (Client Quit)
2021-01-19 19:36:29 +0100 <dminuoso> exarkun: Well, they are usually not programmed on a language that sits ontop. With ghcjs that means you have two garbage collectors running
2021-01-19 19:36:45 +0100 <dminuoso> (The GHCJS RTS GC and the JS GC)
2021-01-19 19:36:55 +0100fresheyeball(~isaac@c-71-237-105-37.hsd1.co.comcast.net)
2021-01-19 19:37:06 +0100 <exarkun> dminuoso: You might be taking me too seriously
2021-01-19 19:37:14 +0100 <dminuoso> Oh.
2021-01-19 19:37:21 +0100 <exarkun> But at the same time, I have about 80 chromium processes running, many of them claiming 16+GB of RAM
2021-01-19 19:37:22 +0100 <dminuoso> I didn't notice any sarcasm there, sorry.
2021-01-19 19:37:36 +0100 <exarkun> So the serious take might be ... who would actually notice two layers of GC?
2021-01-19 19:37:38 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl) (Remote host closed the connection)
2021-01-19 19:37:45 +0100 <dminuoso> exarkun: Well this isn't about memory consumption, but rather program latency. GHCjs has quite terrible GC performance..
2021-01-19 19:37:54 +0100 <dminuoso> Note
2021-01-19 19:37:55 +0100 <exarkun> Hey look there's a 98GB WebKitProcess
2021-01-19 19:38:00 +0100 <dminuoso> Im not quite sure whether we're back at sarcasm or not.
2021-01-19 19:38:14 +0100 <exarkun> Yes, the web is so screwed up it's hard to tell
2021-01-19 19:38:27 +0100 <exarkun> Maybe it is already irretrievably broken and nothing you can do will make it worse?
2021-01-19 19:38:33 +0100 <exarkun> Or maybe I am joking around
2021-01-19 19:38:48 +0100 <exarkun> It's the Turing test of bankrupt ideas! Can you tell the difference??
2021-01-19 19:39:09 +0100 <geekosaur> you lost that one as soon as the web came up
2021-01-19 19:39:14 +0100 <monochrom> I think it's cynicism and/or nihilism rather than sarcasm.
2021-01-19 19:39:28 +0100 <dminuoso> The sad thing is, HTML was good conceptually. It would have been the right way to serve content.
2021-01-19 19:40:14 +0100frankdmartinez(~frankdmar@208.91.107.132)
2021-01-19 19:40:16 +0100frankdmartinez(~frankdmar@208.91.107.132) (Client Quit)
2021-01-19 19:41:09 +0100 <dminuoso> It was just held back by very poor implementation, and broken websites that implementations catered for.. and then there was JavaScript..
2021-01-19 19:44:02 +0100kritzefitz(~kritzefit@212.86.56.80) (Ping timeout: 256 seconds)
2021-01-19 19:44:58 +0100 <cnmne[m]> anyone use haskell snippets with org-babel in emacs? I'm having trouble resolving an issue
2021-01-19 19:46:21 +0100 <kuribas> dminuoso: html and css is good for what it was meant for. Which isn't a stateful application server.
2021-01-19 19:46:57 +0100 <dminuoso> kuribas: That's not true!
2021-01-19 19:47:32 +0100 <dminuoso> kuribas: HTML was designed for HTTP, which specifically has verbs and semantics *for* stateful servers.
2021-01-19 19:49:08 +0100sMuNiX(~sMuNiX@vlnsm8-montreal02-142-122-8-233.internet.virginmobile.ca) (Quit: WeeChat 3.0)
2021-01-19 19:49:20 +0100tsrt^(tsrt@ip98-184-89-2.mc.at.cox.net)
2021-01-19 19:49:22 +0100 <hpc> if you really want to get pedantic, MIME is the layer in between HTML and HTTP
2021-01-19 19:49:37 +0100 <hpc> and that for stateful web stuff, there's a different mime type for form data
2021-01-19 19:49:57 +0100hnOsmium0001(uid453710@gateway/web/irccloud.com/x-szygrdcvutmfpknh) (Quit: Connection closed for inactivity)
2021-01-19 19:50:05 +0100 <kuribas> dminuoso: state of the backend, not state of the application
2021-01-19 19:50:09 +0100 <hpc> (and a multipart mime type for form data with file uploads, which is the same mime type that emails use for messages with attachments or html/plaintext alternatives)
2021-01-19 19:50:27 +0100 <dminuoso> kuribas: There is no notion of "backend" in http.
2021-01-19 19:50:37 +0100 <dminuoso> You have resources represented by URIs, and you can interact with them via HTTP.
2021-01-19 19:51:04 +0100 <dminuoso> hpc: Thanks, your pedantry is quite good and right here.
2021-01-19 19:51:31 +0100 <kuribas> dminuoso: precisely
2021-01-19 19:52:01 +0100 <kuribas> dminuoso: it's made for acessing resources, not creating application UIs.
2021-01-19 19:52:05 +0100 <dminuoso> I think in the original statement you meant to write `Which [is] a stateful application server`
2021-01-19 19:52:12 +0100 <hpc> MIME is a great place to look for weird computer history in general, btw
2021-01-19 19:52:45 +0100 <dminuoso> kuribas: That's your opinion, and I doubt you will find good evidence to support that.
2021-01-19 19:52:45 +0100 <hpc> it's got unicode encodings that ensure the high bit of each byte is 0, and all sorts of other weird stuff
2021-01-19 19:53:22 +0100 <dminuoso> kuribas: Arguably, you'll find a lot of bits in HTTP relating to representation and UI.
2021-01-19 19:53:28 +0100avdb(~avdb@gateway/tor-sasl/avdb) (Ping timeout: 268 seconds)
2021-01-19 19:53:36 +0100vicfred(~vicfred@unaffiliated/vicfred)
2021-01-19 19:53:54 +0100 <monochrom> The line was crossed as soon as people started putting counters on their otherwise static web pages.
2021-01-19 19:53:55 +0100 <dminuoso> Notably, HTTP was designed specifically to contain MIME
2021-01-19 19:54:01 +0100 <dminuoso> So HTTP can carry whatever MIME can
2021-01-19 19:54:07 +0100 <monochrom> "this page has been visited 49384 times"
2021-01-19 19:54:24 +0100 <dminuoso> monochrom: Right! Something like `GET` is supposed to be idempotent.
2021-01-19 19:54:35 +0100 <kuribas> dminuoso: MIME was for transferring data and documents, not UI widgets.
2021-01-19 19:54:35 +0100 <monochrom> remember those? and in little numeric look-like-real-life-counters gifs?
2021-01-19 19:54:37 +0100 <dminuoso> (Though, that idempotency is questionable in the presence of DELETE)
2021-01-19 19:54:40 +0100avdb(~avdb@gateway/tor-sasl/avdb)
2021-01-19 19:54:54 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl)
2021-01-19 19:55:24 +0100 <monochrom> As per Turing, you can't philosophically draw a line between data and program.
2021-01-19 19:55:37 +0100 <dminuoso> monochrom: And yet, it wasnt his work that spawned lisp!
2021-01-19 19:55:39 +0100 <dminuoso> Curious, isnt it.
2021-01-19 19:55:58 +0100 <dminuoso> Though perhaps he just stole the quote from Church.
2021-01-19 19:56:16 +0100ransom(~c4264035@undergraduate-jvossen-9690.mines.edu)
2021-01-19 19:57:01 +0100kuribas(~user@ptr-25vy0i9v74bayflbmuo.18120a2.ip6.access.telenet.be) (Quit: ERC (IRC client for Emacs 26.3))
2021-01-19 19:58:05 +0100elfets(~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de)
2021-01-19 19:59:34 +0100coot(~coot@37.30.55.132.nat.umts.dynamic.t-mobile.pl) (Quit: coot)
2021-01-19 20:01:20 +0100ystael(~ystael@209.6.50.55) (Read error: Connection reset by peer)
2021-01-19 20:01:21 +0100 <dminuoso> merijn: Do you know of any work to generically derive optparse-applicative parsers from aeson?
2021-01-19 20:01:31 +0100 <merijn> No?
2021-01-19 20:01:47 +0100unlink_(~unlink2@p200300ebcf259600e4593ff5d42812d3.dip0.t-ipconnect.de) (Remote host closed the connection)
2021-01-19 20:01:49 +0100 <dminuoso> Was just wondering, it seemed like you'd know. :p
2021-01-19 20:01:55 +0100 <dminuoso> Since you're the biggest fan of it
2021-01-19 20:01:55 +0100unlink_(~unlink2@p200300ebcf259600e4593ff5d42812d3.dip0.t-ipconnect.de)
2021-01-19 20:01:59 +0100juuandyy(~juuandyy@90.166.144.65) (Quit: Konversation terminated!)
2021-01-19 20:02:00 +0100unlink2(~unlink2@p200300ebcf259600e4593ff5d42812d3.dip0.t-ipconnect.de) (Remote host closed the connection)
2021-01-19 20:02:04 +0100 <dminuoso> Errr. Sorry!
2021-01-19 20:02:08 +0100 <dminuoso> Not *aeson*. I meant to write *servant*
2021-01-19 20:02:16 +0100unlink2(~unlink2@p200300ebcf259600e4593ff5d42812d3.dip0.t-ipconnect.de)
2021-01-19 20:02:22 +0100dbmikus(~dbmikus@cpe-76-167-86-219.natsow.res.rr.com)
2021-01-19 20:02:25 +0100 <merijn> I don't use servant either, and I don't do web ;)
2021-01-19 20:02:37 +0100asheshambasta(~user@ptr-e1lysawdkgbchi3df06.18120a2.ip6.access.telenet.be) (Ping timeout: 272 seconds)
2021-01-19 20:02:42 +0100ystael(~ystael@209.6.50.55)
2021-01-19 20:03:38 +0100berberman(~berberman@unaffiliated/berberman) (Ping timeout: 264 seconds)
2021-01-19 20:03:39 +0100berberman_(~berberman@unaffiliated/berberman)
2021-01-19 20:03:53 +0100brodie(~brodie@2607:f598:b992:f800:c059:1155:fde1:7ba2) (Quit: brodie)
2021-01-19 20:03:56 +0100Kaeipi(~Kaiepi@47.54.252.148) (Remote host closed the connection)
2021-01-19 20:04:06 +0100lekc(~Neuromanc@unaffiliated/neuromancer)
2021-01-19 20:04:36 +0100Mzg(Mzg@s1.ct8.pl) (Ping timeout: 240 seconds)
2021-01-19 20:04:49 +0100ransom(~c4264035@undergraduate-jvossen-9690.mines.edu) (Read error: Connection reset by peer)
2021-01-19 20:05:19 +0100Mzg(Mzg@s1.ct8.pl)
2021-01-19 20:05:20 +0100Kaeipi(~Kaiepi@47.54.252.148)
2021-01-19 20:05:26 +0100LKoen(~LKoen@16.175.9.109.rev.sfr.net) (Remote host closed the connection)
2021-01-19 20:05:48 +0100hekkaidekapus](~tchouri@gateway/tor-sasl/hekkaidekapus) (Ping timeout: 268 seconds)
2021-01-19 20:05:53 +0100ransom(~c4264035@undergraduate-jvossen-9690.mines.edu)
2021-01-19 20:06:11 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl) (Remote host closed the connection)
2021-01-19 20:06:23 +0100shatriff(~vitaliish@176-52-216-242.irishtelecom.com) (Remote host closed the connection)
2021-01-19 20:06:25 +0100xelxebar(~xelxebar@gateway/tor-sasl/xelxebar) (Ping timeout: 268 seconds)
2021-01-19 20:07:45 +0100hekkaidekapus](~tchouri@gateway/tor-sasl/hekkaidekapus)
2021-01-19 20:07:50 +0100Neuromancer(~Neuromanc@unaffiliated/neuromancer) (Ping timeout: 256 seconds)
2021-01-19 20:07:51 +0100lekcNeuromancer
2021-01-19 20:08:07 +0100 <monochrom> Perhaps https://hackage.haskell.org/package/optparse-generic is good enough
2021-01-19 20:08:35 +0100 <monochrom> It just doesn't involve aeson.
2021-01-19 20:08:52 +0100 <dminuoso> monochrom: Sorry, I should have really written `servant` there originally.
2021-01-19 20:09:56 +0100xelxebar(~xelxebar@gateway/tor-sasl/xelxebar)
2021-01-19 20:11:28 +0100unlink2(~unlink2@p200300ebcf259600e4593ff5d42812d3.dip0.t-ipconnect.de) (Remote host closed the connection)
2021-01-19 20:11:28 +0100unlink_(~unlink2@p200300ebcf259600e4593ff5d42812d3.dip0.t-ipconnect.de) (Remote host closed the connection)
2021-01-19 20:12:01 +0100geekosaur(82650c7c@130.101.12.124) (Ping timeout: 248 seconds)
2021-01-19 20:12:57 +0100unlink2(~unlink2@p200300ebcf259600e4593ff5d42812d3.dip0.t-ipconnect.de)
2021-01-19 20:15:04 +0100LKoen(~LKoen@16.175.9.109.rev.sfr.net)
2021-01-19 20:15:28 +0100Mzg(Mzg@s1.ct8.pl) (Ping timeout: 265 seconds)
2021-01-19 20:15:39 +0100niekvandepas(~niekvande@2001:985:bebc:1:9458:ea67:4de:2943)
2021-01-19 20:16:44 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl)
2021-01-19 20:19:30 +0100shatriff(~vitaliish@176-52-216-242.irishtelecom.com)
2021-01-19 20:20:36 +0100Mzg(Mzg@s1.ct8.pl)
2021-01-19 20:22:04 +0100mmmattyx(uid17782@gateway/web/irccloud.com/x-ohocdjlobxmifhzq) (Quit: Connection closed for inactivity)
2021-01-19 20:24:31 +0100 <maerwald> how would that work?
2021-01-19 20:25:21 +0100 <dminuoso> Im thinking of translating endpoints into subcommands.
2021-01-19 20:26:01 +0100Ayo(~quassel@82.177.83.189)
2021-01-19 20:26:43 +0100ransom(~c4264035@undergraduate-jvossen-9690.mines.edu) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-01-19 20:26:57 +0100 <dminuoso> maerwald: Unrelatedly, this did the job https://gist.github.com/dminuoso/20d019778518958faa7649161433b632
2021-01-19 20:27:32 +0100 <dminuoso> But there's still some related sum-types for business logic that differs between IPv4 and IPv6.
2021-01-19 20:27:38 +0100frdg(~user@pool-96-252-123-136.bstnma.fios.verizon.net)
2021-01-19 20:28:46 +0100ransom(~c4264035@undergraduate-jvossen-9690.mines.edu)
2021-01-19 20:30:51 +0100 <frdg> Can I refer to functions defined in the current module with a qualification?
2021-01-19 20:31:01 +0100geekosaur(82650c7c@130.101.12.124)
2021-01-19 20:31:35 +0100 <dminuoso> frdg: Yes.
2021-01-19 20:31:48 +0100 <dminuoso> You can use the module name itself as a qualifier
2021-01-19 20:32:03 +0100 <frdg> ok thanks
2021-01-19 20:32:05 +0100 <dminuoso> i.e. `module Foo.Bar where f = 1; g = Foo.Bar.f`
2021-01-19 20:32:49 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl) (Remote host closed the connection)
2021-01-19 20:33:52 +0100 <niekvandepas> Hi everyone, I'm trying to follow this tutorial: https://caiorss.github.io/Functional-Programming/haskell/DatabaseHDBC.html
2021-01-19 20:34:26 +0100 <niekvandepas> But for some reason I can't import the package `HDBC-sqlite3`
2021-01-19 20:34:44 +0100Franciman(~francesco@host-79-51-37-36.retail.telecomitalia.it)
2021-01-19 20:34:49 +0100 <merijn> jDoes anyone actually still use HDBC?
2021-01-19 20:35:20 +0100 <Franciman> what do ytou use merijn ?
2021-01-19 20:35:22 +0100 <niekvandepas> What alternatives do you recommend? I've tried to use Selda but ran into similar issues there
2021-01-19 20:35:43 +0100 <niekvandepas> Maybe there's something wonky with my setup, but I'm pretty sure I've installed everything 'appropriately'
2021-01-19 20:35:44 +0100 <merijn> Franciman: What I *use* is persistent, what I *recommend* is sqlite-simple or postgres-simple :p
2021-01-19 20:35:46 +0100 <geekosaur> ad if you didn't name it, its name is Main
2021-01-19 20:35:47 +0100geekosaur(82650c7c@130.101.12.124) (Client Quit)
2021-01-19 20:36:02 +0100 <Franciman> merijn, neat
2021-01-19 20:36:24 +0100 <merijn> In fact, I would highly recommend "not persistent, just write SQL queries" >.>
2021-01-19 20:36:46 +0100kritzefitz(~kritzefit@212.86.56.80)
2021-01-19 20:37:04 +0100 <dminuoso> I'm currently working on a larger project, and we're handrolling all SQL queries with postgresql-simple. It's just simple programming tasks.. :)
2021-01-19 20:37:05 +0100geekosaur(82650c7c@130.101.12.124)
2021-01-19 20:37:25 +0100ixaxaar(~ixaxaar@49.207.210.215) (Ping timeout: 240 seconds)
2021-01-19 20:37:52 +0100 <dminuoso> geekosaur: Cheers, that's useful to know.
2021-01-19 20:38:14 +0100 <merijn> Franciman: Turns out that, if you like purely functional programming SQL is actually a pretty great purely functional language :p
2021-01-19 20:38:27 +0100 <merijn> Well, the "SELECT" side of it, anyway :p
2021-01-19 20:38:46 +0100 <Franciman> topkek it's true
2021-01-19 20:38:58 +0100 <Franciman> what I don't like is writing strings instead of typed and compile time checked code
2021-01-19 20:39:24 +0100 <merijn> niekvandepas: You're using stack?
2021-01-19 20:39:32 +0100 <merijn> Franciman: Yeah, but all the alternatives are worse
2021-01-19 20:39:51 +0100 <Franciman> for my work now I'm trying persistent, hope it's easy enough to stay in the zone
2021-01-19 20:39:55 +0100 <Franciman> so I can avoid a lot of tests
2021-01-19 20:40:05 +0100 <niekvandepas> merijn: yup
2021-01-19 20:40:22 +0100 <dminuoso> Franciman: The price for "typed/compile time checked code" is having to learn very crazy and complicated eDSLs that do not look anything like SQL.
2021-01-19 20:40:33 +0100 <dminuoso> And deal with unreadable type errors when it *does* blow up
2021-01-19 20:40:51 +0100 <merijn> Franciman: beam/squeal try to create embedded DSLs for the SQL, but, eh, those eDSLs look like
2021-01-19 20:41:06 +0100 <merijn> "join_ :: (Database be db, Table table, BeamSqlBackend be) => DatabaseEntity be db (TableEntity table) -> (table (QExpr be s) -> QExpr be s Bool) -> Q be db s (table (QExpr be s))"
2021-01-19 20:41:14 +0100 <dminuoso> Too often do you end up trying to figure out how to write something in the eDSL, so you sit down, think of what SQL you want to produce, and then spend an awful lot of time with the eDSL to make it generate the exact SQL you have in mind..
2021-01-19 20:41:16 +0100 <Franciman> lulz
2021-01-19 20:41:24 +0100 <merijn> Which I'm pretty sure is the documentation equivalent of telling a programmer to go fuck themselves?
2021-01-19 20:41:27 +0100 <Franciman> I think racket would be better at thiz
2021-01-19 20:41:32 +0100 <merijn> Franciman: https://hackage.haskell.org/package/beam-core-0.9.0.0/docs/Database-Beam-Query.html#g:7
2021-01-19 20:41:40 +0100 <merijn> squeal is just as bad
2021-01-19 20:41:51 +0100 <dminuoso> relatedBy_' :: forall be db rel s. (Database be db, Table rel, BeamSqlBackend be) => DatabaseEntity be db (TableEntity rel) -> (rel (QExpr be s) -> QExpr be s SqlBool) -> Q be db s (rel (QExpr be s))
2021-01-19 20:41:53 +0100 <dminuoso> Neat!
2021-01-19 20:42:01 +0100conal(~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
2021-01-19 20:42:18 +0100heatsink(~heatsink@2600:1700:bef1:5e10:a004:c2e:5fd9:3135) (Remote host closed the connection)
2021-01-19 20:42:18 +0100 <dminuoso> outerJoin_' :: forall s a b be db. (BeamSqlBackend be, BeamSqlBackendSupportsOuterJoin be, Projectible be a, Projectible be b, ThreadRewritable (QNested s) a, ThreadRewritable (QNested s) b, Retaggable (QExpr be s) (WithRewrittenThread (QNested s) s a), Retaggable (QExpr be s) (WithRewrittenThread (QNested s) s b)) => Q be db (QNested s) a -> Q be db (QNested s) b -> ((WithRewrittenThread (QNested
2021-01-19 20:42:20 +0100 <dminuoso> s) s a, WithRewrittenThread (QNested s) s b) -> QExpr be s SqlBool) -> Q be db s (Retag Nullable (WithRewrittenThread (QNested s) s a), Retag Nullable (WithRewrittenThread (QNested s) s b))
2021-01-19 20:42:22 +0100 <dminuoso> Oh yes.
2021-01-19 20:42:27 +0100 <Franciman> damn cool, sensei
2021-01-19 20:42:31 +0100conal(~conal@64.71.133.70)
2021-01-19 20:42:42 +0100conal(~conal@64.71.133.70) (Client Quit)
2021-01-19 20:42:50 +0100 <Franciman> at the end of the day, one has to write their own dsl
2021-01-19 20:42:50 +0100 <merijn> Franciman: persistent is pretty nice...until, you know, a version bump's migration corrupts all your foreign keys! https://github.com/yesodweb/persistent/issues/1184
2021-01-19 20:42:55 +0100 <dminuoso> Franciman: Not really.
2021-01-19 20:42:59 +0100 <Franciman> for their own logic
2021-01-19 20:43:07 +0100 <Franciman> I mean internally you write SQL code
2021-01-19 20:43:12 +0100 <dminuoso> You write an abstraction that hides the tedious details, and lets you think in precise semantics.
2021-01-19 20:43:13 +0100 <Franciman> but do you really externally expose bare sql code?
2021-01-19 20:43:17 +0100 <Franciman> yes
2021-01-19 20:43:21 +0100 <Franciman> exactly
2021-01-19 20:43:38 +0100 <dminuoso> But SQL is not what needs the abstractions, its your queries.
2021-01-19 20:43:43 +0100 <dminuoso> (Which can be written in SQL)
2021-01-19 20:43:53 +0100 <Franciman> merijn, that damn problem!
2021-01-19 20:44:12 +0100 <Franciman> also fpcomplete is at it again
2021-01-19 20:44:25 +0100 <Franciman> they try to squeeze everything out of the haskell ecosystem while giving back only what they want
2021-01-19 20:44:33 +0100Ayo(~quassel@82.177.83.189) (Ping timeout: 246 seconds)
2021-01-19 20:44:40 +0100 <Franciman> not that others are better
2021-01-19 20:44:41 +0100 <Franciman> eh
2021-01-19 20:44:46 +0100 <Franciman> just companies doing companies
2021-01-19 20:45:15 +0100 <Franciman> dminuoso, +1
2021-01-19 20:45:55 +0100conal(~conal@64.71.133.70)
2021-01-19 20:46:30 +0100 <dminuoso> At best, I might consider a raw relational algebra library (but one that doesn't try and tie this into the haskell type system) instead of SQL if you need compositionality
2021-01-19 20:46:39 +0100 <dminuoso> Haven't quite found one I like on hackage though
2021-01-19 20:47:19 +0100 <Franciman> anything that tries to be everything, is doomed to fail
2021-01-19 20:47:51 +0100puffnfresh(~puffnfres@119-17-138-164.77118a.mel.static.aussiebb.net) (Ping timeout: 265 seconds)
2021-01-19 20:48:21 +0100 <dolio> I'm skeptical that a relational algebra library would actually get you the results you want long term.
2021-01-19 20:48:55 +0100 <dminuoso> dolio: Im not sure, Im thinking that with QQs you could have a nice hybrid of both.
2021-01-19 20:48:56 +0100Kaeipi(~Kaiepi@47.54.252.148) (Remote host closed the connection)
2021-01-19 20:49:22 +0100 <dolio> Because you'd probably run into walls where relational algebra can't say something that is integral to a SQL query actually being fast enough.
2021-01-19 20:49:50 +0100 <dminuoso> So the QQ would translate your SQL into a relational algebra representation, allowing you to write raw SQL - but still get the benefits of working on an relational algebra tree
2021-01-19 20:50:01 +0100Kaeipi(~Kaiepi@47.54.252.148)
2021-01-19 20:50:02 +0100 <dminuoso> (Perhaps with some support for splicing trees back into SQL)
2021-01-19 20:50:12 +0100 <idnar> I quite like Opaleye
2021-01-19 20:50:44 +0100justsomeguy(~justsomeg@unaffiliated/--/x-3805311)
2021-01-19 20:50:56 +0100Kaeipi(~Kaiepi@47.54.252.148) (Remote host closed the connection)
2021-01-19 20:51:31 +0100conal(~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
2021-01-19 20:51:32 +0100Kaeipi(~Kaiepi@47.54.252.148)
2021-01-19 20:51:55 +0100conal(~conal@64.71.133.70)
2021-01-19 20:52:04 +0100 <dolio> Or, if you can say something that emits the right SQL, it's sensitive to the exact way you say it in relational algebra.
2021-01-19 20:52:13 +0100conal(~conal@64.71.133.70) (Client Quit)
2021-01-19 20:52:31 +0100 <dolio> In other words, SQL query optimization is too finnicky to treat relational algebra as a good abstraction.
2021-01-19 20:52:59 +0100 <dminuoso> dolio: Well you dont have to care too much about optimizations if we assume PG as a target, since that will retransform/optimize your query (through relational algebra) anyway.
2021-01-19 20:53:20 +0100 <dolio> Ah. They must be better than what I have experience with.
2021-01-19 20:54:13 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl)
2021-01-19 20:54:55 +0100 <dminuoso> From experience, the relational algebra approach works quite reasonably well. Ruby on Rails uses `arel` for its entire query generation, and with our data warehousing systems, I've been satisfied with the generated queries mostly.
2021-01-19 20:55:25 +0100 <monochrom> I wouldn't be surprised if this depended on how much money you pay. E.g., DB/2 and Oracle may have much smarter optimizations than Postgres.
2021-01-19 20:55:56 +0100 <dolio> Well, my experience is with MS SQL Server, which is more expensive than free, I think.
2021-01-19 20:56:40 +0100 <dminuoso> dolio: Ah yeah. PostgreSQL is quite good at optimizations. There's of course always the odd query where you need some handholding (similar to say writing Haskell with GHC).
2021-01-19 20:57:08 +0100Kaeipi(~Kaiepi@47.54.252.148) (Ping timeout: 260 seconds)
2021-01-19 20:57:09 +0100 <dminuoso> For low (by default sub-16) it actually does an exhaustive search through query plans, and picks the most efficient one.
2021-01-19 20:57:14 +0100 <dminuoso> (sub-16 joins that is)
2021-01-19 20:57:19 +0100jespada(~jespada@90.254.241.81) (Ping timeout: 256 seconds)
2021-01-19 20:57:36 +0100 <dminuoso> And for larger, it uses genetic algorithms
2021-01-19 20:57:40 +0100 <idnar> "sub-16"?
2021-01-19 20:57:50 +0100 <dminuoso> Less than 16 join tables.
2021-01-19 20:57:59 +0100 <dminuoso> (Im not quite sure about the number these days, might be less)
2021-01-19 20:58:28 +0100 <__monty__> GA in practical use? o.O
2021-01-19 20:58:35 +0100 <dminuoso> __monty__: Yes!
2021-01-19 20:58:42 +0100 <dminuoso> It's called the geqo (genetic query optimizer)
2021-01-19 20:58:56 +0100 <dminuoso> https://www.postgresql.org/docs/13/geqo-pg-intro.html
2021-01-19 20:59:43 +0100Kaiepi(~Kaiepi@47.54.252.148)
2021-01-19 21:00:13 +0100shatriff(~vitaliish@176-52-216-242.irishtelecom.com) (Remote host closed the connection)
2021-01-19 21:00:15 +0100jespada(~jespada@90.254.241.81)
2021-01-19 21:00:15 +0100 <idnar> the main problems I run into with pg are: 1) the cost estimate of something is way off, and 2) it fails to turn some subselect into a join
2021-01-19 21:00:33 +0100shatriff(~vitaliish@176-52-216-242.irishtelecom.com)
2021-01-19 21:01:01 +0100shatriff(~vitaliish@176-52-216-242.irishtelecom.com) (Remote host closed the connection)
2021-01-19 21:01:09 +0100 <dminuoso> idnar: What kind of datasets do you work with?
2021-01-19 21:01:18 +0100rayyyy(~nanoz@gateway/tor-sasl/nanoz) (Ping timeout: 268 seconds)
2021-01-19 21:01:19 +0100shatriff(~vitaliish@176-52-216-242.irishtelecom.com)
2021-01-19 21:01:50 +0100shatriff(~vitaliish@176-52-216-242.irishtelecom.com) (Remote host closed the connection)
2021-01-19 21:02:05 +0100shatriff(~vitaliish@176-52-216-242.irishtelecom.com)
2021-01-19 21:02:28 +0100 <idnar> dminuoso: hmm, not sure how to characterize beyond "random medium-size web apps"
2021-01-19 21:02:38 +0100shatriff(~vitaliish@176-52-216-242.irishtelecom.com) (Remote host closed the connection)
2021-01-19 21:02:57 +0100shatriff(~vitaliish@176-52-216-242.irishtelecom.com)
2021-01-19 21:03:18 +0100 <idnar> most of the time it Just Works :)
2021-01-19 21:03:26 +0100shatriff(~vitaliish@176-52-216-242.irishtelecom.com) (Remote host closed the connection)
2021-01-19 21:03:32 +0100Xnuk(~xnuk@vultr.xnu.kr) (Ping timeout: 260 seconds)
2021-01-19 21:03:35 +0100 <dminuoso> Fair enough, just curious. Are any of these databases of non-trivial size?
2021-01-19 21:04:02 +0100 <dminuoso> (By non-trivial I mean something along the lines of over a billion tuples, anything that just doesnt fit into RAM anymore)
2021-01-19 21:05:37 +0100aveltras(uid364989@gateway/web/irccloud.com/x-pgszkpeaurxqzlip) (Quit: Connection closed for inactivity)
2021-01-19 21:05:49 +0100conal(~conal@64.71.133.70)
2021-01-19 21:06:33 +0100 <idnar> don't think so
2021-01-19 21:07:02 +0100 <idnar> I'm usually not all in RAM; but due to the size of the host, not the db
2021-01-19 21:08:47 +0100Alleria_(~AllahuAkb@2603-7000-3040-0000-6117-a0fe-38af-8149.res6.spectrum.com) (Ping timeout: 260 seconds)
2021-01-19 21:09:38 +0100dbmikus(~dbmikus@cpe-76-167-86-219.natsow.res.rr.com) (Read error: Connection reset by peer)
2021-01-19 21:09:41 +0100 <idnar> certainly not Big Data™
2021-01-19 21:09:53 +0100mouseghost(~draco@87-206-9-185.dynamic.chello.pl)
2021-01-19 21:09:53 +0100mouseghost(~draco@87-206-9-185.dynamic.chello.pl) (Changing host)
2021-01-19 21:09:53 +0100mouseghost(~draco@wikipedia/desperek)
2021-01-19 21:09:56 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl) (Remote host closed the connection)
2021-01-19 21:10:06 +0100dbmikus(~dbmikus@cpe-76-167-86-219.natsow.res.rr.com)
2021-01-19 21:12:24 +0100avdb(~avdb@gateway/tor-sasl/avdb) (Ping timeout: 268 seconds)
2021-01-19 21:12:30 +0100WzC(~Frank@77-162-168-71.fixed.kpn.net) (Ping timeout: 265 seconds)
2021-01-19 21:12:43 +0100WarzoneCommand(~Frank@77-162-168-71.fixed.kpn.net)
2021-01-19 21:12:46 +0100justan0theruser(~justanoth@unaffiliated/justanotheruser)
2021-01-19 21:12:59 +0100_ht(~quassel@82-169-194-8.biz.kpn.net) (Ping timeout: 265 seconds)
2021-01-19 21:13:01 +0100acidjnk_new(~acidjnk@p200300d0c704e732989dd075055fe92d.dip0.t-ipconnect.de)
2021-01-19 21:13:04 +0100 <merijn> Nobody has Big Data >.>
2021-01-19 21:13:15 +0100Xnuk(~xnuk@vultr.xnu.kr)
2021-01-19 21:13:19 +0100 <merijn> I mean, Facebook, Google, and the NSA, maybe.
2021-01-19 21:13:28 +0100 <merijn> Everyone else is just pretending to look cool
2021-01-19 21:13:37 +0100hackageblaze-builder 0.4.2.1 - Efficient buffered output. https://hackage.haskell.org/package/blaze-builder-0.4.2.1 (JasperVanDerJeugt)
2021-01-19 21:13:37 +0100gentauro(~gentauro@unaffiliated/gentauro) (Read error: Connection reset by peer)
2021-01-19 21:13:40 +0100_ht(~quassel@82-169-194-8.biz.kpn.net)
2021-01-19 21:13:47 +0100 <monochrom> Also, along that line...
2021-01-19 21:14:03 +0100gentauro(~gentauro@unaffiliated/gentauro)
2021-01-19 21:14:26 +0100 <monochrom> If you are coding up high frequency trading, then you talk about performance.
2021-01-19 21:15:12 +0100 <merijn> Naah, performance is relevant in more things, but yeah, most people talking about performance are also LARPing their performance needs :p
2021-01-19 21:15:17 +0100Ayo(~quassel@82.177.83.189)
2021-01-19 21:15:38 +0100 <monochrom> If you have one single computer that has to serve a million requests per second, and serving fewer than 990 thousand requests per second already gets you bankrupt, then you talk about performance.
2021-01-19 21:16:14 +0100justanotheruser(~justanoth@unaffiliated/justanotheruser) (Ping timeout: 264 seconds)
2021-01-19 21:16:16 +0100 <davean> I've done 1Mqps on normal HW
2021-01-19 21:16:23 +0100 <davean> (HTTP)
2021-01-19 21:16:28 +0100 <dminuoso> monochrom: Percentage wise, we're on the same level. If our service has 5% loss, we might as well file for bankruptcy..
2021-01-19 21:16:31 +0100 <davean> In Haskell
2021-01-19 21:16:33 +0100 <dminuoso> (Well, permanent loss)
2021-01-19 21:16:33 +0100 <monochrom> If you have a general relativity galaxy simulation that you expect to finish in 2 months, and taking 2.3 months is already too long because someone else will publish earlier than you, then you talk about performance.
2021-01-19 21:16:42 +0100 <merijn> davean: Most of the web can run on one beefy machine easily :p
2021-01-19 21:16:51 +0100 <dminuoso> Well to be fair, what davean did was not *easily*
2021-01-19 21:17:15 +0100 <monochrom> But, if you have a program that is so "unoptimized" that it takes 1 second rather than 0.5 seconds, *pfffft*
2021-01-19 21:17:17 +0100 <davean> I wouldn't call it hard either.
2021-01-19 21:17:24 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Quit: WeeChat 3.0)
2021-01-19 21:18:00 +0100 <merijn> davean: Well, it's hard. But not in the technical sense :p
2021-01-19 21:18:01 +0100 <davean> Honestly the "hard" problems with HTTP I've encountered aren't rate, they're latency.
2021-01-19 21:18:03 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-01-19 21:18:58 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2021-01-19 21:19:03 +0100frdg(~user@pool-96-252-123-136.bstnma.fios.verizon.net) (Remote host closed the connection)
2021-01-19 21:19:30 +0100 <davean> merijn: eh, I already had the traffic :-p
2021-01-19 21:19:54 +0100frdg(~user@pool-96-252-123-136.bstnma.fios.verizon.net)
2021-01-19 21:20:40 +0100 <merijn> davean: Naah, I meant that, being fast isn't hard, but convincing people to make the investments/sacrifices to make things fast is hard :p
2021-01-19 21:21:16 +0100 <davean> ah, mmm, being fast is easier than being slow - the slower you are the more you have to deal with the cordination problem
2021-01-19 21:21:30 +0100 <davean> I ended up running 1+Mqps on a single machine because I was too lazy not to.
2021-01-19 21:21:43 +0100 <davean> but maybe thats because I actually did distributed systems :-p
2021-01-19 21:21:49 +0100 <davean> I knew what the option was
2021-01-19 21:22:00 +0100 <davean> or I could have just done it wrong
2021-01-19 21:24:34 +0100Alleria_(~AllahuAkb@2603-7000-3040-0000-0132-7991-54fc-9d8c.res6.spectrum.com)
2021-01-19 21:26:36 +0100tsrt^(tsrt@ip98-184-89-2.mc.at.cox.net) (Ping timeout: 264 seconds)
2021-01-19 21:26:39 +0100cole-h(~cole-h@c-73-48-197-220.hsd1.ca.comcast.net)
2021-01-19 21:27:56 +0100Kaiepi(~Kaiepi@47.54.252.148) (Remote host closed the connection)
2021-01-19 21:28:05 +0100 <__monty__> Advent of Code shows me every year how easy it is to write something that takes hours instead of seconds. So I'm not so surprised fledgling programmers talk about performance.
2021-01-19 21:28:18 +0100 <idnar> merijn: you probably want 3 machines for when 1 goes down :P
2021-01-19 21:28:49 +0100 <monochrom> Project Euler shows that everyday
2021-01-19 21:28:55 +0100raehik1(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-01-19 21:29:01 +0100 <dminuoso> __monty__: Let me rephrase that: The faster computers get, the worse programmers become.
2021-01-19 21:29:04 +0100 <monochrom> And we all know the true cause of those.
2021-01-19 21:29:46 +0100Gurkenglas_Gurkenglas
2021-01-19 21:29:47 +0100 <monochrom> A beginner who codes up the moral equivalent of "f n = g (f (n-1)) (f (n-1))" has no right to talk about performance, as I explained a couple of days ago.
2021-01-19 21:30:24 +0100 <dminuoso> Hey but GHC can do CSE...
2021-01-19 21:30:42 +0100 <monochrom> That's why I said "moral equivalent".
2021-01-19 21:30:55 +0100 <dminuoso> Oh
2021-01-19 21:31:13 +0100Kaiepi(~Kaiepi@47.54.252.148)
2021-01-19 21:31:26 +0100Kaiepi(~Kaiepi@47.54.252.148) (Remote host closed the connection)
2021-01-19 21:31:34 +0100 <monochrom> The actual beginners I have in mind code up list/tree traversal algorithms that look like "merely 2-pass"
2021-01-19 21:31:54 +0100 <__monty__> monochrom: Hmm, AoC tends to exhibit these performance issues on choice of data structure more than anything. Which, imo, is forgivable for beginners.
2021-01-19 21:32:36 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 264 seconds)
2021-01-19 21:32:51 +0100 <monochrom> But since it becomes "<work on size n> = g <work on size n-1> <work on the same size n-1 again but slightly different>" it is patently exponential to n, and patently unamenable to known optimizations.
2021-01-19 21:33:44 +0100howdoi(uid224@gateway/web/irccloud.com/x-axbmoogzhixorxhj)
2021-01-19 21:34:01 +0100 <monochrom> __monty__, that depends on whether beginner in CS at all or beginner in just Haskell.
2021-01-19 21:34:19 +0100 <merijn> __monty__: tbh, AoC problems are small enough that even stupid choices don't really matter
2021-01-19 21:34:25 +0100 <monochrom> I have a lot of 3rd-year CS students making the mistake I described.
2021-01-19 21:34:45 +0100 <davean> idnar: Oh I had failover :)
2021-01-19 21:35:05 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl)
2021-01-19 21:35:33 +0100 <monochrom> I wouldn't even use the word "forgive" if it's a beginner in CS. Not fair to require them to figure this out on their own.
2021-01-19 21:35:56 +0100ph88_(~ph88@ip5f5af71a.dynamic.kabel-deutschland.de)
2021-01-19 21:36:04 +0100 <dminuoso> davean: You wouldn't appreciate how we deal with high performance as an ISP..
2021-01-19 21:36:22 +0100 <monochrom> But a beginner in CS also has no right to talk about "performance".
2021-01-19 21:36:25 +0100 <dminuoso> We just scale up the entire network to levels, that we dont need to do internal traffic engineering..
2021-01-19 21:36:27 +0100ulidtko(~ulidtko@193.111.48.79)
2021-01-19 21:36:30 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-01-19 21:36:35 +0100 <justsomeguy> Where do you even start with that stuff? I don't even have a clue as to how measure if my recursive function(s) would have better or worse performance by just reading them.
2021-01-19 21:36:38 +0100 <davean> dminuoso: Hum.
2021-01-19 21:37:07 +0100 <justsomeguy> ...and the most convient data structure to use is usually a list, which is ill suited for a lot of things involving random access.
2021-01-19 21:37:31 +0100 <justsomeguy> But it's also pretty much the only one I'm familiar with as a beginner.
2021-01-19 21:37:33 +0100 <davean> justsomeguy: then you're using the wrong list? ;)
2021-01-19 21:38:02 +0100 <merijn> justsomeguy: tbh, it's not that different from reasoning about performance than other languages :p
2021-01-19 21:38:11 +0100Ayo(~quassel@82.177.83.189) (Read error: Connection reset by peer)
2021-01-19 21:38:17 +0100 <merijn> justsomeguy: Like, if you need random access a linked list like [] is...pretty bad :p
2021-01-19 21:38:27 +0100ulidtko|k(~ulidtko@194.54.80.38) (Ping timeout: 256 seconds)
2021-01-19 21:38:35 +0100 <merijn> justsomeguy: For random access you want
2021-01-19 21:38:37 +0100 <merijn> @hackage vector
2021-01-19 21:38:37 +0100 <lambdabot> https://hackage.haskell.org/package/vector
2021-01-19 21:39:02 +0100 <monochrom> The Array that comes with base can be good enough.
2021-01-19 21:39:03 +0100 <merijn> justsomeguy: And assuming you know other languages, you should feel right at home with the stuff in
2021-01-19 21:39:08 +0100 <merijn> @hackage containers
2021-01-19 21:39:08 +0100 <lambdabot> https://hackage.haskell.org/package/containers
2021-01-19 21:39:36 +0100 <justsomeguy> Yeah, I haven't had to reason about performance in any language until now. Mostly my approach has been to use the built-in type that seems most suitable, and I haven't had to care much after that. I'm going to have to look at Data.Vector.
2021-01-19 21:39:43 +0100raehik1(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 260 seconds)
2021-01-19 21:39:50 +0100elliott_(~elliott_@pool-108-51-101-42.washdc.fios.verizon.net) (Ping timeout: 256 seconds)
2021-01-19 21:39:51 +0100ph88^(~ph88@2a02:8109:9e00:7e5c:795a:5528:8c2c:51fe) (Ping timeout: 260 seconds)
2021-01-19 21:40:04 +0100justsomeguyhas also heard that the sequence type is pretty cool.
2021-01-19 21:40:11 +0100Ayo(~quassel@82.177.83.189)
2021-01-19 21:40:13 +0100 <merijn> justsomeguy: Vector is basically like C++'s std::vector/C's arrays
2021-01-19 21:40:14 +0100 <davean> merijn: the Array that comes with base is missing a TON of functions
2021-01-19 21:40:21 +0100 <davean> merijn: and instances.
2021-01-19 21:40:28 +0100 <monochrom> I think you mean me.
2021-01-19 21:40:33 +0100 <davean> er yes
2021-01-19 21:40:36 +0100 <davean> sorry
2021-01-19 21:40:52 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed)
2021-01-19 21:40:54 +0100 <monochrom> But vector is missing a ton of Ix instances, too.
2021-01-19 21:41:14 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2021-01-19 21:41:19 +0100 <exarkun> So I stumbled around with AES128 CTR some more and I found a surprising result, I think. Passing less than one block of data to `ctr` increments the counter. If the new IV (really the counter) is used subsequently, this means the output is wrong.
2021-01-19 21:41:32 +0100 <merijn> justsomeguy: It has mutable versions so you don't just have random access, but also just mutable arrays
2021-01-19 21:41:50 +0100 <exarkun> It seems like this is a misuse of the API but it also seems like the failure behavior could be improved?
2021-01-19 21:41:59 +0100conal(~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
2021-01-19 21:42:35 +0100 <geekosaur> exarkun, I'd expect it pads the block out given what you said about it yesterday
2021-01-19 21:42:40 +0100p8m(p8m@gateway/vpn/protonvpn/p8m) (Ping timeout: 256 seconds)
2021-01-19 21:42:45 +0100heatsink(~heatsink@2600:1700:bef1:5e10:a004:c2e:5fd9:3135)
2021-01-19 21:42:53 +0100 <exarkun> geekosaur: Yea, it doesn't seem to? length of the output equals length of the input.
2021-01-19 21:43:09 +0100frdg`(~user@pool-96-252-123-136.bstnma.fios.verizon.net)
2021-01-19 21:43:19 +0100 <geekosaur> and the counter is blocks, not bytes, so it can't track a partial block across calls
2021-01-19 21:43:25 +0100exarkunnods
2021-01-19 21:43:30 +0100usr25(~usr25@unaffiliated/usr25)
2021-01-19 21:43:40 +0100 <exarkun> Oh, you mean it pads it for internal book-keeping purposes?
2021-01-19 21:43:46 +0100 <geekosaur> yeh
2021-01-19 21:43:54 +0100Franciman(~francesco@host-79-51-37-36.retail.telecomitalia.it) (Quit: Leaving)
2021-01-19 21:44:05 +0100 <exarkun> I guess I could believe that ... but I'm not sure I'm convinced that's good behavior
2021-01-19 21:44:07 +0100 <geekosaur> it has to encrypt a full block, but it could strip the ret off if it knows the output should be the same size as the input
2021-01-19 21:44:09 +0100 <davean> monochrom: oh yah, and Ix its self isn't so great.
2021-01-19 21:44:14 +0100 <geekosaur> *rest off
2021-01-19 21:44:29 +0100 <exarkun> Hm.. It *has* to encrypt a full block ...
2021-01-19 21:44:32 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Quit: WeeChat 3.0)
2021-01-19 21:44:32 +0100 <davean> its missing a bunch of things derivable from its interface that can't be implimented efficiently externally.
2021-01-19 21:44:44 +0100 <frdg`> question from learning about concurrent haskell. I do not know why this code compiles. To me there should be a type error. http://dpaste.com/BMBL5PRJE
2021-01-19 21:44:55 +0100 <davean> Ix guarrentees a bunch of existing things that you can't impliment in better than O(N) genericlyu
2021-01-19 21:45:02 +0100puffnfresh(~puffnfres@119-17-138-164.77118a.mel.static.aussiebb.net)
2021-01-19 21:45:05 +0100 <exarkun> This makes me realize I must not understand what the OpenSSL implementation is doing. Because OpenSSL also accepts less than a full block. But for the next byte of input, it produces the same result as if you'd included that byte in the first call.
2021-01-19 21:45:14 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-01-19 21:45:42 +0100 <geekosaur> openssl implements a stream abstraction since it is used to encrypt streams
2021-01-19 21:45:43 +0100knupfer(~Thunderbi@200116b82c70da002457d3fffeafe7d8.dip.versatel-1u1.de)
2021-01-19 21:45:44 +0100knupfer(~Thunderbi@200116b82c70da002457d3fffeafe7d8.dip.versatel-1u1.de) (Client Quit)
2021-01-19 21:45:45 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 240 seconds)
2021-01-19 21:45:51 +0100 <davean> frdg`: why do you think its MVar () not MVar a?
2021-01-19 21:46:00 +0100knupfer(~Thunderbi@mue-88-130-61-193.dsl.tropolys.de)
2021-01-19 21:46:12 +0100 <exarkun> But how can it emit one byte of output before it has the other 15 bytes of input?
2021-01-19 21:46:23 +0100ransom(~c4264035@undergraduate-jvossen-9690.mines.edu) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-01-19 21:46:39 +0100 <frdg`> davean: I would expect an empty MVar to be an MVar holding `()`
2021-01-19 21:46:41 +0100 <monochrom> s/equal/::/
2021-01-19 21:46:43 +0100 <geekosaur> it can't; it quietly buffers the output (resp. input) until it has full blocks
2021-01-19 21:46:50 +0100 <davean> frdg`: but why
2021-01-19 21:47:01 +0100 <davean> why would you think that?
2021-01-19 21:47:09 +0100 <merijn> frdg`: "holding ()" doesn't sound empty to me
2021-01-19 21:47:09 +0100 <geekosaur> this puts some restrictions on how you make use of openssl's encrypted streams
2021-01-19 21:47:12 +0100frdg(~user@pool-96-252-123-136.bstnma.fios.verizon.net) (Ping timeout: 246 seconds)
2021-01-19 21:47:12 +0100 <davean> what makes () special to you
2021-01-19 21:47:14 +0100 <monochrom> But "Logger m" forces "m :: MVar LogCommand".
2021-01-19 21:47:18 +0100 <exarkun> I seem to be observing that it isn't buffering, it is producing results immediately
2021-01-19 21:47:20 +0100 <exarkun> Let me d ouble check
2021-01-19 21:47:26 +0100 <davean> yah what merijn said, () isn't empty
2021-01-19 21:47:26 +0100heatsink(~heatsink@2600:1700:bef1:5e10:a004:c2e:5fd9:3135) (Ping timeout: 264 seconds)
2021-01-19 21:47:28 +0100 <davean> () is something.
2021-01-19 21:47:56 +0100conal(~conal@64.71.133.70)
2021-01-19 21:48:14 +0100 <monochrom> () is as "special" as "data X = Ctor"
2021-01-19 21:48:51 +0100 <monochrom> At the meta level I am not confident that you know the line between terms and types.
2021-01-19 21:49:07 +0100 <geekosaur> exarkun, you are not working with openssl's stream abstraction last I checked, you were working with a ctr function that encrypts blocks
2021-01-19 21:49:16 +0100 <monochrom> You write like "myTerm equals myType" left right and centre, I begin to suspect that you actually believe it.
2021-01-19 21:49:19 +0100son0p(~son0p@181.136.122.143)
2021-01-19 21:49:25 +0100jneira(501ca940@gateway/web/cgi-irc/kiwiirc.com/ip.80.28.169.64)
2021-01-19 21:49:51 +0100 <exarkun> geekosaur: Uh ok. I guess I misunderstood. I thought you just told me I was.
2021-01-19 21:50:22 +0100 <geekosaur> no, you asked me why openssl could do things differently, so I told you what openssl is doing with its stream abstraction
2021-01-19 21:50:29 +0100 <geekosaur> it's a different beast
2021-01-19 21:50:51 +0100 <exarkun> I'm sorry, I'm lost now.
2021-01-19 21:51:15 +0100 <geekosaur> and it has specific requirements for it to work crrectly. similarly, the function you are using has its own different requirements
2021-01-19 21:51:18 +0100frdg`(~user@pool-96-252-123-136.bstnma.fios.verizon.net) (Remote host closed the connection)
2021-01-19 21:51:23 +0100 <exarkun> Here is some Python code that uses OpenSSL and shows some kind of behavior related to non-block-multiple inputs - https://gist.github.com/exarkun/10d4a416a3e9e5fdbae07ae60957b90a
2021-01-19 21:51:44 +0100frdg(~user@pool-96-252-123-136.bstnma.fios.verizon.net)
2021-01-19 21:51:52 +0100 <frdg> yes I am mixing up terms and types. Is this correct because `m :: MVar a` and because that a can be anything it can stand for a LogCommand
2021-01-19 21:51:57 +0100 <exarkun> I totally believe that I'm using it wrong. In fact, that was my assumption from the start. I don't know what I'm doing.
2021-01-19 21:52:16 +0100 <exarkun> But I'm not convinced that quietly giving the wrong output for violating undocumented requirements is ideal behavior for the library.
2021-01-19 21:52:41 +0100 <geekosaur> sadly, I don't either; I'm talking generically, I don't know what you're working with
2021-01-19 21:53:11 +0100 <monochrom> I wouldn't impose that on every bloody library function.
2021-01-19 21:53:38 +0100 <exarkun> Heh ok
2021-01-19 21:54:01 +0100 <monochrom> some library functions are meant to be higher level. they should live up to a higher standard, yes
2021-01-19 21:54:04 +0100 <geekosaur> there's also the consideration that crypto functions tend to be in the hot path and get to make such assumptions for performance reasons
2021-01-19 21:54:12 +0100 <monochrom> higher safety standard, that is.
2021-01-19 21:54:52 +0100 <monochrom> lower level functions live up to a lower safety standard because they live up to a higher efficiency standard and also more usable in unforseen circumstances
2021-01-19 21:55:01 +0100 <geekosaur> this is a fairly low level interface and it's expected that you use a higher level interface if you want such guarantees. as was suggested to you yesterday
2021-01-19 21:55:05 +0100 <exarkun> monochrom: How about the "undocumented" part though
2021-01-19 21:55:28 +0100 <exarkun> monochrom: Maybe the docs could say "If you don't pass a full block this will produce garbage output"
2021-01-19 21:55:42 +0100 <exarkun> That doesn't have a runtime cost
2021-01-19 21:56:15 +0100 <monochrom> That probably comes back to my explanation of how if a person is great at documenting, they stand to make more money as a lawyer than a programmer. So what does economics imply about what kind of people you get for programmers?
2021-01-19 21:56:19 +0100 <exarkun> As far as I can tell, `ctr`'s documentation is: "Counter (encryption)"
2021-01-19 21:57:01 +0100ransom(~c4264035@undergraduate-jvossen-9690.mines.edu)
2021-01-19 21:57:16 +0100 <exarkun> Ah, I am not super interested in a philosophical debate about the ethos of programming vs lawyering right now, I suppose.
2021-01-19 21:57:32 +0100 <monochrom> No, this is merely economics.
2021-01-19 21:57:32 +0100 <exarkun> I think I am trying to gauge whether it is worth filing a bug report or not
2021-01-19 21:58:02 +0100 <monochrom> Would it make you happier?
2021-01-19 21:58:13 +0100 <exarkun> Thank you for your help monochrom
2021-01-19 21:58:21 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2021-01-19 21:58:24 +0100revprez_anzio(~revprez_a@pool-108-49-213-40.bstnma.fios.verizon.net) (Ping timeout: 246 seconds)
2021-01-19 21:58:41 +0100 <geekosaur> you can file it but I suspect the response will be "this is a low level block crypto interface, you are expected to provide full blocks"
2021-01-19 21:59:04 +0100 <monochrom> I would call it a documentation bug.
2021-01-19 21:59:19 +0100revprez_anzio(~revprez_a@pool-108-49-213-40.bstnma.fios.verizon.net)
2021-01-19 21:59:51 +0100frdg(~user@pool-96-252-123-136.bstnma.fios.verizon.net) ("ERC (IRC client for Emacs 27.1)")
2021-01-19 22:00:05 +0100 <monochrom> Actually I would tone it as making a suggestion.
2021-01-19 22:01:26 +0100_ht(~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection)
2021-01-19 22:01:40 +0100 <monochrom> I am pretty much inspired by the movie Apollo 13. To be fair, I do not know whether the problem solving approaches in the movie are the real ones for the real Apollo 13.
2021-01-19 22:02:16 +0100 <monochrom> But basically, since accident has happened and they're in an exceptional circumstance, ...
2021-01-19 22:03:04 +0100 <monochrom> it is all very well to keep saying "we don't know what this component will do under this untested circumstance, it's outside the spec, it's undocumented"
2021-01-19 22:04:51 +0100 <monochrom> the whole point is that accident has happened and therefore they must stress out the components way outside their specs because that's the only chance of saving lives.
2021-01-19 22:05:12 +0100 <exarkun> fwiw #python-cryptography provided this helpful explanation of AES CTR
2021-01-19 22:05:19 +0100 <exarkun> "CTR mode encrypts a counter with AES, and then xors that block with the plaintext. So it's streaming."
2021-01-19 22:05:27 +0100mdunnio(~mdunnio@172.97.43.112)
2021-01-19 22:05:32 +0100 <monochrom> more importantly, if a component had a built-in "safety check" that forbade you from using it outside its spec, that would stand in the way
2021-01-19 22:05:33 +0100 <exarkun> no doubt someone here tried to explain this to me but I found this alternate formulation more approachable
2021-01-19 22:06:17 +0100fangyrn(uid481529@gateway/web/irccloud.com/x-uookpebloxxoqjgr) (Quit: Connection closed for inactivity)
2021-01-19 22:06:23 +0100 <exarkun> And I guess the solution for me is just to always handle whole blocks
2021-01-19 22:10:30 +0100bogdanp(~bogdanp@188.24.80.165) (Ping timeout: 265 seconds)
2021-01-19 22:12:15 +0100mmmattyx(uid17782@gateway/web/irccloud.com/x-bvruurhqwoxqskjs)
2021-01-19 22:14:03 +0100bogdanp(~bogdanp@188.24.80.165)
2021-01-19 22:15:23 +0100fnurglewitz(uid263868@gateway/web/irccloud.com/x-nhzoizuedcpgsddc) (Quit: Connection closed for inactivity)
2021-01-19 22:17:14 +0100desperek_(~draco@87-206-9-185.dynamic.chello.pl)
2021-01-19 22:17:35 +0100usr25_tm(~usr25@unaffiliated/usr25)
2021-01-19 22:17:51 +0100ransom_(~c4264035@8.48.134.30)
2021-01-19 22:19:21 +0100desperek_(~draco@87-206-9-185.dynamic.chello.pl) (Client Quit)
2021-01-19 22:19:24 +0100ransom(~c4264035@undergraduate-jvossen-9690.mines.edu) (Ping timeout: 246 seconds)
2021-01-19 22:19:39 +0100Varis(~Tadas@unaffiliated/varis) (Remote host closed the connection)
2021-01-19 22:20:38 +0100usr25(~usr25@unaffiliated/usr25) (Ping timeout: 256 seconds)
2021-01-19 22:20:38 +0100mouseghost(~draco@wikipedia/desperek) (Ping timeout: 256 seconds)
2021-01-19 22:21:12 +0100bogdanp(~bogdanp@188.24.80.165) (Ping timeout: 264 seconds)
2021-01-19 22:21:16 +0100heatsink(~heatsink@2600:1700:bef1:5e10:a004:c2e:5fd9:3135)
2021-01-19 22:22:29 +0100bogdanp(~bogdanp@188.24.80.165)
2021-01-19 22:23:19 +0100Rudd0(~Rudd0@185.189.115.108) (Ping timeout: 272 seconds)
2021-01-19 22:24:02 +0100larsan1(~larsan@84.39.117.57) (Ping timeout: 264 seconds)
2021-01-19 22:25:38 +0100p8m(p8m@gateway/vpn/protonvpn/p8m)
2021-01-19 22:28:52 +0100fresheyeball(~isaac@c-71-237-105-37.hsd1.co.comcast.net) (Quit: WeeChat 2.9)
2021-01-19 22:31:54 +0100tito_04(~taurux@net-188-216-43-78.cust.vodafonedsl.it)
2021-01-19 22:32:59 +0100taurux(~taurux@net-188-216-43-78.cust.vodafonedsl.it) (Ping timeout: 246 seconds)
2021-01-19 22:33:31 +0100kritzefitz(~kritzefit@212.86.56.80) (Remote host closed the connection)
2021-01-19 22:34:02 +0100justsomeguy(~justsomeg@unaffiliated/--/x-3805311) (Quit: WeeChat 2.9)
2021-01-19 22:34:23 +0100miklcct(quasselcor@2001:19f0:7001:5ad:5400:2ff:feb6:50d7) (Quit: No Ping reply in 180 seconds.)
2021-01-19 22:35:32 +0100miklcct(quasselcor@2001:19f0:7001:5ad:5400:2ff:feb6:50d7)
2021-01-19 22:36:41 +0100Rudd0(~Rudd0@185.189.115.108)
2021-01-19 22:40:20 +0100acidjnk_new(~acidjnk@p200300d0c704e732989dd075055fe92d.dip0.t-ipconnect.de) (Ping timeout: 244 seconds)
2021-01-19 22:41:06 +0100knupfer(~Thunderbi@mue-88-130-61-193.dsl.tropolys.de) (Ping timeout: 246 seconds)
2021-01-19 22:41:54 +0100geekosaur(82650c7c@130.101.12.124) (Quit: Connection closed)
2021-01-19 22:42:40 +0100Tario(~Tario@201.192.165.173) (Read error: Connection reset by peer)
2021-01-19 22:44:18 +0100Tario(~Tario@200.119.185.25)
2021-01-19 22:44:30 +0100olligobber(olligobber@gateway/vpn/privateinternetaccess/olligobber)
2021-01-19 22:47:09 +0100sord937(~sord937@gateway/tor-sasl/sord937) (Quit: sord937)
2021-01-19 22:48:08 +0100mputz(~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de)
2021-01-19 22:48:47 +0100conal(~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
2021-01-19 22:49:13 +0100bradparker(sid262931@gateway/web/irccloud.com/x-ccluxzrskgjvclod) (Read error: Connection reset by peer)
2021-01-19 22:49:49 +0100d0liver(sid363046@gateway/web/irccloud.com/x-vbakmemyhoumgknq) (Ping timeout: 272 seconds)
2021-01-19 22:49:53 +0100chele(~chele@ip5b40237d.dynamic.kabel-deutschland.de) (Remote host closed the connection)
2021-01-19 22:50:23 +0100davetapley(sid666@gateway/web/irccloud.com/x-grrqllwpjuypfeja) (Read error: Connection reset by peer)
2021-01-19 22:50:27 +0100gOOgler(uid125351@gateway/web/irccloud.com/x-kfwutrekvoilnxmc) (Ping timeout: 272 seconds)
2021-01-19 22:50:32 +0100SrPx(sid108780@gateway/web/irccloud.com/x-qhnqktdxfgqqzrqb) (Read error: Connection reset by peer)
2021-01-19 22:50:50 +0100ebutleriv(sid217783@gateway/web/irccloud.com/x-fnjwxppdlbxyqkzv) (Ping timeout: 246 seconds)
2021-01-19 22:51:02 +0100joshmeredith(sid387798@gateway/web/irccloud.com/x-ywduelldbxnktgum) (Ping timeout: 264 seconds)
2021-01-19 22:51:02 +0100d0liver(sid363046@gateway/web/irccloud.com/x-shzgavllbwpukuzz)
2021-01-19 22:51:18 +0100davetapley(sid666@gateway/web/irccloud.com/x-ivbkhipkkxhxgwwr)
2021-01-19 22:51:45 +0100gOOgler(uid125351@gateway/web/irccloud.com/x-tobpiglzofpntwns)
2021-01-19 22:51:57 +0100bradparker(sid262931@gateway/web/irccloud.com/x-auwfxjzsfyjewjox)
2021-01-19 22:52:02 +0100SrPx(sid108780@gateway/web/irccloud.com/x-xlyxuehzwnzezwmo)
2021-01-19 22:52:06 +0100ebutleriv(sid217783@gateway/web/irccloud.com/x-maylluzrkecggfca)
2021-01-19 22:53:05 +0100elliott_(~elliott_@pool-108-51-101-42.washdc.fios.verizon.net)
2021-01-19 22:53:14 +0100joshmeredith(sid387798@gateway/web/irccloud.com/x-cfzcqoupsfdhhgcd)
2021-01-19 22:53:33 +0100conal(~conal@64.71.133.70)
2021-01-19 22:56:07 +0100matryoshka(~matryoshk@2606:6080:1002:8:3285:30e:de43:8809) (Quit: ZNC 1.8.2 - https://znc.in)
2021-01-19 23:00:26 +0100 <__monty__> Do you control the counter?
2021-01-19 23:00:48 +0100epicte7us(~epictetus@ip184-187-162-163.sb.sd.cox.net)
2021-01-19 23:01:31 +0100unlink2(~unlink2@p200300ebcf259600e4593ff5d42812d3.dip0.t-ipconnect.de) (Ping timeout: 244 seconds)
2021-01-19 23:02:27 +0100ransom_(~c4264035@8.48.134.30) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-01-19 23:02:43 +0100unlink2(~unlink2@p5dc0af9a.dip0.t-ipconnect.de)
2021-01-19 23:03:11 +0100ep1ctetus(~epictetus@ip184-187-162-163.sb.sd.cox.net) (Ping timeout: 265 seconds)
2021-01-19 23:04:24 +0100ADG1089_(~adg1089@171.76.179.61)
2021-01-19 23:04:54 +0100Franciman(~francesco@host-79-51-37-36.retail.telecomitalia.it)
2021-01-19 23:04:54 +0100ADG1089_(~adg1089@171.76.179.61) (Read error: Connection reset by peer)
2021-01-19 23:05:04 +0100ADG1089_(~adg1089@223.226.159.22)
2021-01-19 23:06:50 +0100Tops21(~Tobias@dyndsl-095-033-095-048.ewe-ip-backbone.de) (Read error: Connection reset by peer)
2021-01-19 23:07:06 +0100jpds(~jpds@gateway/tor-sasl/jpds) (Ping timeout: 268 seconds)
2021-01-19 23:08:56 +0100jpds(~jpds@gateway/tor-sasl/jpds)
2021-01-19 23:19:46 +0100ADG1089__(~aditya@223.226.159.22)
2021-01-19 23:21:05 +0100ransom(~c4264035@2a09:bac0:98::830:861e)
2021-01-19 23:23:36 +0100Wuzzy(~Wuzzy@p5b0df22a.dip0.t-ipconnect.de) (Ping timeout: 264 seconds)
2021-01-19 23:24:12 +0100Franciman(~francesco@host-79-51-37-36.retail.telecomitalia.it) (Quit: Leaving)
2021-01-19 23:27:00 +0100tsrt^(tsrt@ip98-184-89-2.mc.at.cox.net)
2021-01-19 23:27:49 +0100jamm(~jamm@unaffiliated/jamm)
2021-01-19 23:30:05 +0100cheater(~user@unaffiliated/cheater) (Ping timeout: 256 seconds)
2021-01-19 23:30:34 +0100mirrorbird(~psutcliff@2a00:801:42b:aff3:74af:2f22:932d:eac0)
2021-01-19 23:32:26 +0100jamm(~jamm@unaffiliated/jamm) (Ping timeout: 264 seconds)
2021-01-19 23:32:28 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Remote host closed the connection)
2021-01-19 23:32:42 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com)
2021-01-19 23:33:30 +0100son0p(~son0p@181.136.122.143) (Quit: Lost terminal)
2021-01-19 23:40:15 +0100takuan_dozo(~takuan@178-116-218-225.access.telenet.be) (Ping timeout: 246 seconds)
2021-01-19 23:42:32 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Excess Flood)
2021-01-19 23:43:48 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com)
2021-01-19 23:44:01 +0100 <monochrom> __monty__: The whole thing was caused by a misunderstanding on how often the counter increments. The user has control, but the user can misunderstand how to control it.
2021-01-19 23:46:38 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed)
2021-01-19 23:47:02 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2021-01-19 23:48:48 +0100ADG1089_(~adg1089@223.226.159.22) (Ping timeout: 264 seconds)
2021-01-19 23:51:43 +0100ADG1089__(~aditya@223.226.159.22) (Remote host closed the connection)
2021-01-19 23:52:00 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 265 seconds)
2021-01-19 23:52:47 +0100MorrowM(~Moshe@bzq-110-168-31-106.red.bezeqint.net) (Ping timeout: 246 seconds)
2021-01-19 23:53:20 +0100ADG1089_(~adg1089@223.226.159.22)
2021-01-19 23:59:47 +0100jlamothe(~jlamothe@198.251.55.207) (Ping timeout: 246 seconds)
2021-01-19 23:59:50 +0100elfets(~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de) (Quit: Leaving)