2020/10/27

2020-10-27 00:04:34 +0100dhouthoo(~dhouthoo@ptr-eiv6509pb4ifhdr9lsd.18120a2.ip6.access.telenet.be) (Quit: WeeChat 2.9)
2020-10-27 00:05:10 +0100geowiesnot(~user@87-89-181-157.abo.bbox.fr)
2020-10-27 00:06:30 +0100damianfral3(~damianfra@174.red-37-13-187.dynamicip.rima-tde.net)
2020-10-27 00:06:47 +0100justanotheruser(~justanoth@unaffiliated/justanotheruser) (Ping timeout: 260 seconds)
2020-10-27 00:08:00 +0100Chi1thangoo(~Chi1thang@87.112.60.168) (Read error: Connection reset by peer)
2020-10-27 00:08:34 +0100Chi1thangoo(~Chi1thang@87.112.60.168)
2020-10-27 00:09:13 +0100Katarushisu(~Katarushi@cpc149712-finc20-2-0-cust535.4-2.cable.virginm.net) (Ping timeout: 264 seconds)
2020-10-27 00:09:22 +0100Katarushisu(~Katarushi@cpc149712-finc20-2-0-cust535.4-2.cable.virginm.net)
2020-10-27 00:10:33 +0100tmciver(~tmciver@cpe-172-101-40-226.maine.res.rr.com) (Ping timeout: 265 seconds)
2020-10-27 00:10:59 +0100ericsagnes(~ericsagne@2405:6580:0:5100:c9f4:39c8:ab29:a9e1) (Ping timeout: 272 seconds)
2020-10-27 00:12:26 +0100tmciver(~tmciver@cpe-172-101-40-226.maine.res.rr.com)
2020-10-27 00:13:37 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
2020-10-27 00:14:32 +0100jbox(~atlas@unaffiliated/jbox)
2020-10-27 00:14:39 +0100zebrag(~inkbottle@aaubervilliers-654-1-111-120.w86-198.abo.wanadoo.fr)
2020-10-27 00:14:50 +0100Katarushisu(~Katarushi@cpc149712-finc20-2-0-cust535.4-2.cable.virginm.net) (Ping timeout: 256 seconds)
2020-10-27 00:14:57 +0100xerox_(~xerox@unaffiliated/xerox) (Ping timeout: 260 seconds)
2020-10-27 00:15:13 +0100dbmikus(~dbmikus@cpe-76-167-86-219.natsow.res.rr.com) (Ping timeout: 264 seconds)
2020-10-27 00:15:18 +0100gehmehgeh(~ircuser1@gateway/tor-sasl/gehmehgeh) (Quit: Leaving)
2020-10-27 00:15:23 +0100vacm(~vacwm@70.23.92.191) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-10-27 00:15:27 +0100mrchampion(~mrchampio@216-211-57-41.dynamic.tbaytel.net) (Quit: Leaving)
2020-10-27 00:15:40 +0100mbomba(~mbomba@142.114.9.241)
2020-10-27 00:16:39 +0100christo(~chris@81.96.113.213)
2020-10-27 00:17:17 +0100inkbottle(~inkbottle@aaubervilliers-654-1-117-120.w86-198.abo.wanadoo.fr) (Ping timeout: 260 seconds)
2020-10-27 00:17:36 +0100mrchampion(~mrchampio@216-211-57-41.dynamic.tbaytel.net)
2020-10-27 00:17:54 +0100dbmikus(~dbmikus@cpe-76-167-86-219.natsow.res.rr.com)
2020-10-27 00:18:25 +0100damianfral3(~damianfra@174.red-37-13-187.dynamicip.rima-tde.net) (Ping timeout: 240 seconds)
2020-10-27 00:18:42 +0100damianfral3(~damianfra@174.red-37-13-187.dynamicip.rima-tde.net)
2020-10-27 00:19:04 +0100DirefulSalt(DirefulSal@gateway/vpn/privateinternetaccess/direfulsalt) (Remote host closed the connection)
2020-10-27 00:19:07 +0100fendor(~fendor@078132040188.public.t-mobile.at) (Remote host closed the connection)
2020-10-27 00:19:40 +0100DirefulSalt(DirefulSal@gateway/vpn/privateinternetaccess/direfulsalt)
2020-10-27 00:21:43 +0100cr3(~cr3@192-222-143-195.qc.cable.ebox.net)
2020-10-27 00:22:22 +0100 <Raito_Bezarius> is there a way to compose boolean functions of the form a -> Bool arbitrarly using && and || ?
2020-10-27 00:22:23 +0100vacm(~vacwm@70.23.92.191)
2020-10-27 00:22:32 +0100 <Raito_Bezarius> (>= 32) && (<= 42) for example
2020-10-27 00:22:42 +0100 <Raito_Bezarius> (which is not valid Haskell)
2020-10-27 00:22:59 +0100 <dolio> liftA2 (&&)
2020-10-27 00:23:20 +0100 <Raito_Bezarius> thanks dolio
2020-10-27 00:23:20 +0100akad(~akad@109107030050.radomsko.vectranet.pl) (Remote host closed the connection)
2020-10-27 00:23:57 +0100 <Raito_Bezarius> dolio: is there a liftAn generalization?
2020-10-27 00:24:04 +0100ericsagnes(~ericsagne@2405:6580:0:5100:4528:7514:3a09:f12e)
2020-10-27 00:24:18 +0100 <Raito_Bezarius> my use case is for 4 functions
2020-10-27 00:25:41 +0100frdg(47b88ff9@pool-71-184-143-249.bstnma.fios.verizon.net)
2020-10-27 00:26:02 +0100 <Raito_Bezarius> but I guess I can just do three liftA2
2020-10-27 00:27:12 +0100Deide(~Deide@217.155.19.23) (Quit: Seeee yaaaa)
2020-10-27 00:27:25 +0100 <dolio> Depends what you want. The incremental sort of solution is `f <$> x <*> y <*> z` where `f` is your boolean function, and x,y,z are your tests.
2020-10-27 00:27:48 +0100 <dolio> You could use ApplicativeDo, too.
2020-10-27 00:29:00 +0100darjeeling_(~darjeelin@115.215.42.47) (Ping timeout: 256 seconds)
2020-10-27 00:29:55 +0100 <Raito_Bezarius> Okay, I'll check out those, but maybe it's over kill to my usecase and I should just write the explicit function
2020-10-27 00:31:28 +0100darjeeling_(~darjeelin@115.215.42.47)
2020-10-27 00:33:12 +0100jonatan_(~nate@h77-53-70-163.cust.a3fiber.se) (Read error: Connection reset by peer)
2020-10-27 00:36:47 +0100nuncanada(~dude@179.235.160.168)
2020-10-27 00:38:00 +0100 <motte> say i have a record like this: data A = Foo String deriving (Show, Read)
2020-10-27 00:38:04 +0100plutoniix(~q@ppp-27-55-68-183.revip3.asianet.co.th)
2020-10-27 00:38:10 +0100 <motte> doing read "Foo a" :: A fails, read "Foo \"a\"" :: A succeeds. is there a way to avoid the need for these quotes?
2020-10-27 00:40:59 +0100danso(~dan@69-165-210-185.cable.teksavvy.com)
2020-10-27 00:41:01 +0100vacm(~vacwm@70.23.92.191) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-10-27 00:42:12 +0100frdg(47b88ff9@pool-71-184-143-249.bstnma.fios.verizon.net) (Remote host closed the connection)
2020-10-27 00:43:00 +0100mimi1vx(~mimi@tulipan.habr.nat.praha12.net) (Quit: WeeChat 2.9)
2020-10-27 00:45:51 +0100mceier(~mceier@89-68-132-187.dynamic.chello.pl) (Remote host closed the connection)
2020-10-27 00:45:56 +0100 <Squarism> motte, would need to reimplement Read for String's
2020-10-27 00:46:11 +0100mceier(~mceier@89-68-132-187.dynamic.chello.pl)
2020-10-27 00:46:39 +0100 <Squarism> but sounds really cumbersome and how would you deal with space
2020-10-27 00:54:52 +0100acidjnk_new(~acidjnk@p200300d0c7237822f9c109cfb48a3b3a.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
2020-10-27 00:55:19 +0100cebola(~cebola@2804:14d:149a:a093:35e4:2df:ca12:a86d)
2020-10-27 00:56:05 +0100 <motte> Squarism: alright, guess i won't bother then, thanks
2020-10-27 00:58:23 +0100cr3(~cr3@192-222-143-195.qc.cable.ebox.net) (Ping timeout: 260 seconds)
2020-10-27 00:58:46 +0100z0(~z0@bl15-166-165.dsl.telepac.pt)
2020-10-27 00:59:35 +0100fresheyeball(~isaac@c-71-237-105-37.hsd1.co.comcast.net)
2020-10-27 01:00:01 +0100unknown1(~unknown@195.206.169.184) ()
2020-10-27 01:00:04 +0100 <fresheyeball> hey
2020-10-27 01:00:09 +0100 <fresheyeball> I have an api I need to query
2020-10-27 01:00:20 +0100 <fresheyeball> that returns a gzip, and all I care about is the status code
2020-10-27 01:00:27 +0100 <fresheyeball> is this doable with servant client?
2020-10-27 01:00:43 +0100justanotheruser(~justanoth@unaffiliated/justanotheruser)
2020-10-27 01:01:14 +0100akad(~akad@109107030050.radomsko.vectranet.pl)
2020-10-27 01:02:55 +0100xff0x(~fox@2001:1a81:53e0:c700:623b:a273:9fc7:c0b1) (Ping timeout: 272 seconds)
2020-10-27 01:03:26 +0100xff0x(~fox@2001:1a81:53e0:c700:bc1e:f03e:962e:40cd)
2020-10-27 01:07:05 +0100darjeeling_(~darjeelin@115.215.42.47) (Ping timeout: 240 seconds)
2020-10-27 01:09:23 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:146b:c489:8b41:e2cb) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-10-27 01:10:38 +0100KhoN_2(~KhoN@cm-84.208.147.132.getinternet.no)
2020-10-27 01:10:43 +0100darjeeling_(~darjeelin@115.215.42.47)
2020-10-27 01:11:02 +0100nuncanada(~dude@179.235.160.168) (Read error: Connection reset by peer)
2020-10-27 01:11:02 +0100cr3(~cr3@192-222-143-195.qc.cable.ebox.net)
2020-10-27 01:12:10 +0100lambda-11235(~lambda-11@2600:1700:7c70:4600:252e:56ab:ce70:1eed) (Quit: Bye)
2020-10-27 01:12:22 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:146b:c489:8b41:e2cb)
2020-10-27 01:13:28 +0100falafel_(~falafel@71-34-132-121.clsp.qwest.net) (Ping timeout: 246 seconds)
2020-10-27 01:14:00 +0100KhoN_1(~KhoN@cm-84.208.147.132.getinternet.no) (Ping timeout: 256 seconds)
2020-10-27 01:14:08 +0100 <dsal> :t foldMap (All .) -- Raito_Bezarius
2020-10-27 01:14:09 +0100 <lambdabot> Foldable t => t (a -> Bool) -> a -> All
2020-10-27 01:15:47 +0100fresheyeball(~isaac@c-71-237-105-37.hsd1.co.comcast.net) (Quit: WeeChat 2.7.1)
2020-10-27 01:15:54 +0100 <dsal> > getAll . foldMap (All .) [even, (>5)] $ 4
2020-10-27 01:15:56 +0100 <lambdabot> False
2020-10-27 01:15:57 +0100 <dsal> > getAll . foldMap (All .) [even, (>5)] $ 6
2020-10-27 01:15:59 +0100 <lambdabot> True
2020-10-27 01:16:25 +0100GyroW(~GyroW@unaffiliated/gyrow) (Ping timeout: 264 seconds)
2020-10-27 01:16:43 +0100GyroW(~GyroW@d54c03e98.access.telenet.be)
2020-10-27 01:16:43 +0100GyroW(~GyroW@d54c03e98.access.telenet.be) (Changing host)
2020-10-27 01:16:43 +0100GyroW(~GyroW@unaffiliated/gyrow)
2020-10-27 01:17:01 +0100oisdk(~oisdk@2001:bb6:3329:d100:4d5c:1d2c:a660:df1)
2020-10-27 01:17:28 +0100 <dsal> > let isEvenAndBigEnough = getAll . foldMap (All .) [even, (>5)] in isEvenAndBigEnough <$> [4..7]
2020-10-27 01:17:30 +0100 <lambdabot> [False,False,True,False]
2020-10-27 01:19:57 +0100Alleria_(~AllahuAkb@2604:2000:1484:26:9062:c31d:ffbb:9534) (Ping timeout: 260 seconds)
2020-10-27 01:20:01 +0100wroathe(~wroathe@c-73-24-27-54.hsd1.mn.comcast.net) (Ping timeout: 264 seconds)
2020-10-27 01:20:22 +0100nyaomi(~naomi@2604:6000:1509:c86e:c878:29ff:fedf:ce89)
2020-10-27 01:20:29 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2020-10-27 01:21:04 +0100Alleria_(~AllahuAkb@2604:2000:1484:26:6857:8c0f:5834:bc03)
2020-10-27 01:21:57 +0100altoid(~altoid@154.13.1.56)
2020-10-27 01:23:11 +0100alp(~alp@2a01:e0a:58b:4920:1c2f:db12:618d:602c) (Ping timeout: 272 seconds)
2020-10-27 01:24:08 +0100erisco(~erisco@d24-57-249-233.home.cgocable.net)
2020-10-27 01:25:32 +0100pfurla(~pfurla@ool-182ed2e2.dyn.optonline.net) (Ping timeout: 260 seconds)
2020-10-27 01:25:37 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:146b:c489:8b41:e2cb) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-10-27 01:27:43 +0100pfurla(~pfurla@ool-182ed2e2.dyn.optonline.net)
2020-10-27 01:30:17 +0100plutoniix(~q@ppp-27-55-68-183.revip3.asianet.co.th) (Quit: Leaving)
2020-10-27 01:35:15 +0100atondwal(~atondwal@ip68-107-107-53.sd.sd.cox.net)
2020-10-27 01:35:22 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2020-10-27 01:37:42 +0100vacm(~vacwm@70.23.92.191)
2020-10-27 01:39:04 +0100hekkaidekapus_hekkaidekapus
2020-10-27 01:39:39 +0100 <hekkaidekapus> > sortBy (comparing even <> comparing (> 5)) [4..7] -- dsal, let’s golf :)
2020-10-27 01:39:40 +0100 <lambdabot> [5,7,4,6]
2020-10-27 01:39:51 +0100 <hekkaidekapus> > sortBy (comparing even <> comparing (< 5)) [4..7]
2020-10-27 01:39:53 +0100 <lambdabot> [5,7,6,4]
2020-10-27 01:40:20 +0100 <hekkaidekapus> > sortBy (comparing odd <> comparing (> 5)) [4..7]
2020-10-27 01:40:21 +0100 <lambdabot> [4,6,5,7]
2020-10-27 01:41:03 +0100thir(~thir@p200300f27f0b7e004c18ab60065ea01b.dip0.t-ipconnect.de)
2020-10-27 01:43:40 +0100jedws(~jedws@101.184.148.229)
2020-10-27 01:44:35 +0100Tuplanolla(~Tuplanoll@91-159-68-239.elisa-laajakaista.fi) (Quit: Leaving.)
2020-10-27 01:45:37 +0100thir(~thir@p200300f27f0b7e004c18ab60065ea01b.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
2020-10-27 01:48:54 +0100notnatebtw(~nate@125.161.130.165) (Ping timeout: 256 seconds)
2020-10-27 01:50:06 +0100 <olligobber> :t even
2020-10-27 01:50:07 +0100 <lambdabot> Integral a => a -> Bool
2020-10-27 01:50:09 +0100acidjnk_new(~acidjnk@p200300d0c723784541890f3c35543fb8.dip0.t-ipconnect.de)
2020-10-27 01:50:39 +0100 <olligobber> what?
2020-10-27 01:50:57 +0100la-jesystani(~thorn@158.140.231.126)
2020-10-27 01:51:08 +0100notnatebtw(~nate@125.161.130.165)
2020-10-27 01:51:09 +0100 <hekkaidekapus> olligobber, what did you expect?
2020-10-27 01:51:45 +0100 <olligobber> I'm just confused by what comparing and <> are doing in your code
2020-10-27 01:51:59 +0100 <dsal> :t comparing
2020-10-27 01:52:00 +0100 <lambdabot> Ord a => (b -> a) -> b -> b -> Ordering
2020-10-27 01:52:14 +0100 <olligobber> oh I see
2020-10-27 01:52:22 +0100 <hekkaidekapus> > sortBy (comparing even <> comparing (>5)) (reverse [1..11])
2020-10-27 01:52:24 +0100 <lambdabot> [5,3,1,11,9,7,4,2,10,8,6]
2020-10-27 01:52:31 +0100 <olligobber> wait, there's a <> instance for Ord?
2020-10-27 01:52:31 +0100 <dsal> It's a sort thing to take two values and a function to build a shwartzian transform for sorting.
2020-10-27 01:52:40 +0100 <dsal> Yeah, it's super useful.
2020-10-27 01:52:45 +0100Lord_of_Life(~Lord@unaffiliated/lord-of-life/x-0885362) (Ping timeout: 240 seconds)
2020-10-27 01:52:47 +0100 <olligobber> *Ordering
2020-10-27 01:52:55 +0100whald(~trem@2a02:810a:8100:11a6:719f:1c0f:efe6:863b) (Remote host closed the connection)
2020-10-27 01:52:55 +0100whald_(~trem@2a02:810a:8100:11a6:719f:1c0f:efe6:863b)
2020-10-27 01:52:59 +0100Lord_of_Life_(~Lord@46.217.223.11)
2020-10-27 01:53:00 +0100 <dsal> * Semigroup :)
2020-10-27 01:53:04 +0100 <dsal> > LT <> GT
2020-10-27 01:53:06 +0100 <lambdabot> LT
2020-10-27 01:53:15 +0100 <hekkaidekapus> @where monoids -- olligobber, the monoid instance for functions is a superstar topic around here.
2020-10-27 01:53:15 +0100 <lambdabot> comment on "Monoids? In my programming language?" by Cale in 2008 (or 2009 ?) at <http://www.reddit.com/r/programming/comments/7cf4r/monoids_in_my_programming_language/c06adnx> about a use of `
2020-10-27 01:53:15 +0100 <lambdabot> instance Monoid a => Monoid (rho -> a)'
2020-10-27 01:53:38 +0100 <olligobber> oh, I know about the monoid instance for functions
2020-10-27 01:53:46 +0100 <olligobber> used it myself when golfing a quine
2020-10-27 01:54:37 +0100 <dsal> > fold [EQ, EQ, LT, GT]
2020-10-27 01:54:39 +0100 <lambdabot> LT
2020-10-27 01:54:45 +0100 <dsal> > fold [EQ, EQ, GT, LT, GT]
2020-10-27 01:54:46 +0100 <lambdabot> GT
2020-10-27 01:54:53 +0100 <dsal> In practice, it does the thing you'd want.
2020-10-27 01:55:04 +0100christo(~chris@81.96.113.213) (Remote host closed the connection)
2020-10-27 01:55:22 +0100conal(~conal@64.71.133.70)
2020-10-27 01:55:22 +0100 <dsal> > mempty :: Comparing
2020-10-27 01:55:25 +0100 <lambdabot> error:
2020-10-27 01:55:25 +0100 <lambdabot> Not in scope: type constructor or class ‘Comparing’
2020-10-27 01:55:31 +0100 <olligobber> it returns the first non-EQ thing?
2020-10-27 01:55:32 +0100 <dsal> > mempty :: Ordering
2020-10-27 01:55:33 +0100 <lambdabot> EQ
2020-10-27 01:55:37 +0100 <dsal> *sigh* But yeah, it's a monoid as well.
2020-10-27 01:55:40 +0100 <dsal> Yeah.
2020-10-27 01:56:47 +0100 <olligobber> I still haven't used comparing enough to figure this code out
2020-10-27 01:57:01 +0100 <olligobber> I'm starting to get it though
2020-10-27 01:57:07 +0100 <MarcelineVQ> :t comparing even
2020-10-27 01:57:08 +0100 <lambdabot> Integral a => a -> a -> Ordering
2020-10-27 01:57:23 +0100 <olligobber> ok, I think I get it now
2020-10-27 01:57:41 +0100 <dsal> The question Raito_Bezarius had was about combining `a -> Bool` functions, which means you have to ask what it means to combine bools. So there are two different monoids.
2020-10-27 01:57:42 +0100mbomba(~mbomba@142.114.9.241) (Ping timeout: 260 seconds)
2020-10-27 01:58:04 +0100 <dsal> even is a weird way to compare numbers.
2020-10-27 01:58:44 +0100 <dsal> > comparing length "a long string" "x"
2020-10-27 01:58:46 +0100 <lambdabot> GT
2020-10-27 01:58:54 +0100cr3(~cr3@192-222-143-195.qc.cable.ebox.net) (Quit: leaving)
2020-10-27 02:01:10 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-10-27 02:04:08 +0100 <la-jesystani> howdy, has anyone here built a program using nix flakes? id be really interested to hear about it
2020-10-27 02:06:07 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 256 seconds)
2020-10-27 02:06:42 +0100hexfive(~hexfive@50.35.90.193)
2020-10-27 02:06:49 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds)
2020-10-27 02:09:10 +0100servo(~servo@41.92.79.35)
2020-10-27 02:09:19 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:146b:c489:8b41:e2cb)
2020-10-27 02:10:42 +0100 <servo> HELLO ALL MEMEBERS
2020-10-27 02:11:18 +0100 <hekkaidekapus> Hi, servo.
2020-10-27 02:11:44 +0100 <servo> what type of work her ? plz
2020-10-27 02:12:44 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2020-10-27 02:13:04 +0100 <hekkaidekapus> servo, please ask a Haskell-related question?
2020-10-27 02:13:20 +0100jespada(~jespada@90.254.243.98) (Ping timeout: 272 seconds)
2020-10-27 02:15:06 +0100 <hekkaidekapus> dsal | “even is a weird way to compare numbers.” What else to use when comparing numbers without even being odd?
2020-10-27 02:17:01 +0100jespada(~jespada@90.254.243.98)
2020-10-27 02:18:37 +0100m0rphism(~m0rphism@HSI-KBW-046-005-177-122.hsi8.kabel-badenwuerttemberg.de) (Ping timeout: 260 seconds)
2020-10-27 02:19:55 +0100hexfive(~hexfive@50.35.90.193) (Quit: i must go. my people need me.)
2020-10-27 02:20:02 +0100acidjnk_new(~acidjnk@p200300d0c723784541890f3c35543fb8.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
2020-10-27 02:20:03 +0100geowiesnot(~user@87-89-181-157.abo.bbox.fr) (Ping timeout: 260 seconds)
2020-10-27 02:23:28 +0100dbmikus(~dbmikus@cpe-76-167-86-219.natsow.res.rr.com) (Ping timeout: 265 seconds)
2020-10-27 02:24:26 +0100akad(~akad@109107030050.radomsko.vectranet.pl) (Ping timeout: 265 seconds)
2020-10-27 02:24:49 +0100darjeeling_(~darjeelin@115.215.42.47) (Ping timeout: 256 seconds)
2020-10-27 02:26:09 +0100darjeeling_(~darjeelin@115.215.42.47)
2020-10-27 02:27:34 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 260 seconds)
2020-10-27 02:33:43 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-10-27 02:36:16 +0100nuncanada(~dude@179.235.160.168)
2020-10-27 02:36:34 +0100tito_04(~taurux@net-93-146-109-245.cust.vodafonedsl.it) (Ping timeout: 256 seconds)
2020-10-27 02:38:19 +0100taurux(~taurux@net-188-152-14-58.cust.vodafonedsl.it)
2020-10-27 02:39:29 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:146b:c489:8b41:e2cb) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-10-27 02:41:40 +0100justanotheruser(~justanoth@unaffiliated/justanotheruser) (Ping timeout: 246 seconds)
2020-10-27 02:47:11 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:146b:c489:8b41:e2cb)
2020-10-27 02:47:57 +0100hackagereanimate 1.1.2.0 - Animation library based on SVGs. https://hackage.haskell.org/package/reanimate-1.1.2.0 (DavidHimmelstrup)
2020-10-27 02:54:50 +0100oisdk(~oisdk@2001:bb6:3329:d100:4d5c:1d2c:a660:df1) (Quit: oisdk)
2020-10-27 02:57:41 +0100dbmikus(~dbmikus@cpe-76-167-86-219.natsow.res.rr.com)
2020-10-27 02:58:30 +0100Stanley00(~stanley00@unaffiliated/stanley00)
2020-10-27 03:00:37 +0100solonarv(~solonarv@astrasbourg-552-1-23-6.w90-13.abo.wanadoo.fr) (Ping timeout: 260 seconds)
2020-10-27 03:01:45 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2020-10-27 03:01:54 +0100vacm(~vacwm@70.23.92.191) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-10-27 03:02:38 +0100dbmikus(~dbmikus@cpe-76-167-86-219.natsow.res.rr.com) (Ping timeout: 260 seconds)
2020-10-27 03:03:50 +0100nuncanada(~dude@179.235.160.168) (Quit: Leaving)
2020-10-27 03:06:15 +0100 <simon> dsal, isn't xor a third candidate?
2020-10-27 03:06:43 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 260 seconds)
2020-10-27 03:08:48 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2020-10-27 03:13:47 +0100DirefulSalt(DirefulSal@gateway/vpn/privateinternetaccess/direfulsalt) (Remote host closed the connection)
2020-10-27 03:16:01 +0100urodna(~urodna@unaffiliated/urodna) (Quit: urodna)
2020-10-27 03:16:38 +0100vacm(~vacwm@70.23.92.191)
2020-10-27 03:17:13 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 260 seconds)
2020-10-27 03:19:04 +0100firstlove(~firstlove@58.246.122.242) (Remote host closed the connection)
2020-10-27 03:20:10 +0100firstlove(~firstlove@58.246.122.242)
2020-10-27 03:22:37 +0100howdoi(uid224@gateway/web/irccloud.com/x-lyptkrhyywcfcsfh) (Quit: Connection closed for inactivity)
2020-10-27 03:23:48 +0100notnatebtw(~nate@125.161.130.165) (Quit: WeeChat 2.9)
2020-10-27 03:25:49 +0100texasmynsted(~texasmyns@99.96.221.112)
2020-10-27 03:27:11 +0100cebola(~cebola@2804:14d:149a:a093:35e4:2df:ca12:a86d) ()
2020-10-27 03:29:18 +0100toorevitimirp(~tooreviti@117.182.180.36)
2020-10-27 03:29:36 +0100mud(~mud@unaffiliated/kadoban)
2020-10-27 03:29:48 +0100 <dsal> simon: not sure how that would work, but give it a shot! :)
2020-10-27 03:33:07 +0100Gurkenglas(~Gurkengla@unaffiliated/gurkenglas) (Ping timeout: 246 seconds)
2020-10-27 03:33:20 +0100 <koz_> dsal: Bool is a monoid under xor and False.
2020-10-27 03:33:37 +0100 <koz_> s/False/True/ argh
2020-10-27 03:33:49 +0100 <koz_> Nope it was False, lol.
2020-10-27 03:33:52 +0100 <koz_> I always get this wrong.
2020-10-27 03:36:18 +0100texasmynsted(~texasmyns@99.96.221.112) (Remote host closed the connection)
2020-10-27 03:36:24 +0100 <dsal> You mean mempty is true? Where is this defined?
2020-10-27 03:36:51 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2020-10-27 03:37:20 +0100AndresFutur(~androirc@190.18.144.100)
2020-10-27 03:37:39 +0100AndresFutur(~androirc@190.18.144.100) ()
2020-10-27 03:39:03 +0100dbmikus(~dbmikus@cpe-76-167-86-219.natsow.res.rr.com)
2020-10-27 03:39:42 +0100djellemah(~djellemah@2601:5c2:100:96c:e008:b638:39fe:6a54) (Ping timeout: 260 seconds)
2020-10-27 03:40:04 +0100lucasb(uid333435@gateway/web/irccloud.com/x-uadkacgdennrevsw) (Quit: Connection closed for inactivity)
2020-10-27 03:40:30 +0100xff0x(~fox@2001:1a81:53e0:c700:bc1e:f03e:962e:40cd) (Remote host closed the connection)
2020-10-27 03:40:38 +0100texasmynsted(~texasmyns@99.96.221.112)
2020-10-27 03:40:50 +0100xff0x(~fox@2001:1a81:53e0:c700:5271:1170:9270:a56e)
2020-10-27 03:40:55 +0100 <koz_> dsal: Nowhere presently.
2020-10-27 03:41:12 +0100 <koz_> I did send a thing to the libraries ML a while ago for newtypes to this effect, but it attracted zero attention.
2020-10-27 03:41:24 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-10-27 03:41:30 +0100 <koz_> (and it's False for xor)
2020-10-27 03:41:56 +0100 <koz_> Because False `xor` False = False (because they're the same) and False `xor` True = True (because they're different).
2020-10-27 03:42:32 +0100thir(~thir@p200300f27f0b7e004c18ab60065ea01b.dip0.t-ipconnect.de)
2020-10-27 03:44:01 +0100dbmikus(~dbmikus@cpe-76-167-86-219.natsow.res.rr.com) (Ping timeout: 264 seconds)
2020-10-27 03:45:08 +0100servo(~servo@41.92.79.35) (Ping timeout: 256 seconds)
2020-10-27 03:46:25 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
2020-10-27 03:47:17 +0100thir(~thir@p200300f27f0b7e004c18ab60065ea01b.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
2020-10-27 03:49:03 +0100justsomeguy(~justsomeg@216.186.218.241)
2020-10-27 03:49:03 +0100justsomeguy(~justsomeg@216.186.218.241) (Changing host)
2020-10-27 03:49:03 +0100justsomeguy(~justsomeg@unaffiliated/--/x-3805311)
2020-10-27 03:53:28 +0100drbean(~drbean@TC210-63-209-87.static.apol.com.tw)
2020-10-27 03:53:28 +0100texasmynsted(~texasmyns@99.96.221.112) (Remote host closed the connection)
2020-10-27 03:54:56 +0100 <int-e> > let xor = (/=) in xor <$> [False,True] <*> [False,True]
2020-10-27 03:54:58 +0100 <lambdabot> [False,True,True,False]
2020-10-27 03:57:15 +0100efficiently(~user@209.58.189.165)
2020-10-27 03:57:54 +0100polyrain(~polyrain@2001:8003:e501:6901:caf:e594:a7fb:67e) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-10-27 03:58:54 +0100entropyga1n(levitate@unaffiliated/entropygain) (Remote host closed the connection)
2020-10-27 03:59:43 +0100SeMas(uid32977@gateway/web/irccloud.com/x-rjkgugwtutnfvjwx)
2020-10-27 04:00:02 +0100altoid(~altoid@154.13.1.56) ()
2020-10-27 04:00:07 +0100xff0x(~fox@2001:1a81:53e0:c700:5271:1170:9270:a56e) (Ping timeout: 260 seconds)
2020-10-27 04:00:39 +0100entropygain(levitate@unaffiliated/entropygain)
2020-10-27 04:02:09 +0100xff0x(~fox@2001:1a81:5219:2300:4b1c:219b:a3ac:1af9)
2020-10-27 04:02:15 +0100texasmynsted(~texasmyns@99.96.221.112)
2020-10-27 04:05:37 +0100machinedgod(~machinedg@24.105.81.50) (Ping timeout: 264 seconds)
2020-10-27 04:06:02 +0100justanotheruser(~justanoth@unaffiliated/justanotheruser)
2020-10-27 04:11:00 +0100_Marcos(2db67ff5@45.182.127.245)
2020-10-27 04:11:10 +0100la-jesystani(~thorn@158.140.231.126) (Ping timeout: 260 seconds)
2020-10-27 04:11:16 +0100_Marcos(2db67ff5@45.182.127.245) ()
2020-10-27 04:11:39 +0100ericsagnes(~ericsagne@2405:6580:0:5100:4528:7514:3a09:f12e) (Ping timeout: 272 seconds)
2020-10-27 04:12:37 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:146b:c489:8b41:e2cb) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-10-27 04:13:56 +0100lagothrixGuest43873
2020-10-27 04:13:56 +0100Guest43873(~lagothrix@unaffiliated/lagothrix) (Killed (rothfuss.freenode.net (Nickname regained by services)))
2020-10-27 04:14:04 +0100lagothrix(~lagothrix@unaffiliated/lagothrix)
2020-10-27 04:14:45 +0100Rudd0(~Rudd0@185.189.115.98) (Ping timeout: 240 seconds)
2020-10-27 04:15:13 +0100Chi1thangoo(~Chi1thang@87.112.60.168) (Ping timeout: 264 seconds)
2020-10-27 04:15:35 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-10-27 04:15:58 +0100acidjnk_new(~acidjnk@p200300d0c7237845edac044e40ff5816.dip0.t-ipconnect.de)
2020-10-27 04:20:13 +0100justHaunted(~justache@unaffiliated/justache) (Ping timeout: 260 seconds)
2020-10-27 04:23:46 +0100vacm(~vacwm@70.23.92.191) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-10-27 04:23:56 +0100ericsagnes(~ericsagne@2405:6580:0:5100:6142:ab79:42d1:afc1)
2020-10-27 04:30:20 +0100drbean(~drbean@TC210-63-209-87.static.apol.com.tw) (Quit: ZNC 1.8.2+cygwin1 - https://znc.in)
2020-10-27 04:32:31 +0100Saukk(~Saukk@2001:998:f9:2914:1c59:9bb5:b94c:4)
2020-10-27 04:34:14 +0100theDon(~td@94.134.91.49) (Ping timeout: 258 seconds)
2020-10-27 04:36:04 +0100theDon(~td@muedsl-82-207-238-193.citykom.de)
2020-10-27 04:36:48 +0100justHaunted(~justache@unaffiliated/justache)
2020-10-27 04:36:51 +0100GyroW(~GyroW@unaffiliated/gyrow) (Ping timeout: 256 seconds)
2020-10-27 04:37:22 +0100GyroW(~GyroW@ptr-48ujrfd1ztq5fjywfw3.18120a2.ip6.access.telenet.be)
2020-10-27 04:37:22 +0100GyroW(~GyroW@ptr-48ujrfd1ztq5fjywfw3.18120a2.ip6.access.telenet.be) (Changing host)
2020-10-27 04:37:22 +0100GyroW(~GyroW@unaffiliated/gyrow)
2020-10-27 04:39:28 +0100justHaunted(~justache@unaffiliated/justache) ()
2020-10-27 04:39:37 +0100texasmynsted(~texasmyns@99.96.221.112) (Remote host closed the connection)
2020-10-27 04:39:58 +0100drbean(~drbean@TC210-63-209-18.static.apol.com.tw)
2020-10-27 04:41:05 +0100falafel_(~falafel@71-34-132-121.clsp.qwest.net)
2020-10-27 04:42:32 +0100andi-(~andi-@NixOS/user/andi-) (Remote host closed the connection)
2020-10-27 04:45:02 +0100ddellacosta(~dd@86.106.121.168) (Ping timeout: 260 seconds)
2020-10-27 04:47:01 +0100andi-(~andi-@NixOS/user/andi-)
2020-10-27 04:49:25 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
2020-10-27 04:53:39 +0100falafel_(~falafel@71-34-132-121.clsp.qwest.net) (Remote host closed the connection)
2020-10-27 04:54:16 +0100erisco(~erisco@d24-57-249-233.home.cgocable.net) (Read error: Connection reset by peer)
2020-10-27 04:55:40 +0100falafel(~falafel@71-34-132-121.clsp.qwest.net)
2020-10-27 04:56:01 +0100nkly(~nkly@ip5b405665.dynamic.kabel-deutschland.de) (Ping timeout: 264 seconds)
2020-10-27 04:56:28 +0100nkly(~nkly@ip5b405665.dynamic.kabel-deutschland.de)
2020-10-27 04:56:39 +0100superfly1(~superfly@s91904426.blix.com)
2020-10-27 04:57:09 +0100falafel(~falafel@71-34-132-121.clsp.qwest.net) (Remote host closed the connection)
2020-10-27 04:58:00 +0100avoandmayo(~textual@122-58-158-238-adsl.sparkbb.co.nz)
2020-10-27 04:58:29 +0100ransom(~c4264035@c-73-243-2-10.hsd1.co.comcast.net) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-10-27 04:59:27 +0100hackagevulkan 3.6.11 - Bindings to the Vulkan graphics API. https://hackage.haskell.org/package/vulkan-3.6.11 (jophish)
2020-10-27 05:00:32 +0100Rudd0(~Rudd0@185.189.115.98)
2020-10-27 05:01:04 +0100nkly(~nkly@ip5b405665.dynamic.kabel-deutschland.de) (Ping timeout: 258 seconds)
2020-10-27 05:02:58 +0100nkly(~nkly@ip5b405665.dynamic.kabel-deutschland.de)
2020-10-27 05:03:17 +0100z0_(~z0@bl15-160-182.dsl.telepac.pt)
2020-10-27 05:04:17 +0100Nik05(~Nik05@unaffiliated/nik05) (Read error: Connection reset by peer)
2020-10-27 05:04:36 +0100Stanley|00(~stanley00@unaffiliated/stanley00)
2020-10-27 05:06:18 +0100z0(~z0@bl15-166-165.dsl.telepac.pt) (Ping timeout: 260 seconds)
2020-10-27 05:07:10 +0100Stanley00(~stanley00@unaffiliated/stanley00) (Ping timeout: 260 seconds)
2020-10-27 05:07:25 +0100tmciver(~tmciver@cpe-172-101-40-226.maine.res.rr.com) (Ping timeout: 264 seconds)
2020-10-27 05:12:16 +0100christo(~chris@81.96.113.213)
2020-10-27 05:14:29 +0100tmciver(~tmciver@cpe-172-101-40-226.maine.res.rr.com)
2020-10-27 05:14:38 +0100taurux(~taurux@net-188-152-14-58.cust.vodafonedsl.it) (Ping timeout: 260 seconds)
2020-10-27 05:15:00 +0100taurux(~taurux@net-93-151-203-8.cust.dsl.teletu.it)
2020-10-27 05:17:47 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-10-27 05:22:23 +0100__skn-__skn
2020-10-27 05:23:01 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
2020-10-27 05:23:10 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2020-10-27 05:24:49 +0100johnw(~johnw@haskell/developer/johnw) (Quit: ZNC - http://znc.in)
2020-10-27 05:27:17 +0100acidjnk_new(~acidjnk@p200300d0c7237845edac044e40ff5816.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
2020-10-27 05:32:45 +0100nkly(~nkly@ip5b405665.dynamic.kabel-deutschland.de) (Ping timeout: 240 seconds)
2020-10-27 05:36:03 +0100plutoniix(~q@175.176.222.7)
2020-10-27 05:39:01 +0100nkly(~nkly@2a02:8109:9ac0:4a4c::baa2)
2020-10-27 05:39:57 +0100dbmikus(~dbmikus@cpe-76-167-86-219.natsow.res.rr.com)
2020-10-27 05:44:38 +0100dbmikus(~dbmikus@cpe-76-167-86-219.natsow.res.rr.com) (Ping timeout: 256 seconds)
2020-10-27 05:46:18 +0100xiinotulp(~q@175.176.222.7)
2020-10-27 05:46:52 +0100xiinotulp(~q@175.176.222.7) (Read error: Connection reset by peer)
2020-10-27 05:48:31 +0100drbean(~drbean@TC210-63-209-18.static.apol.com.tw) (Quit: ZNC 1.8.2+cygwin1 - https://znc.in)
2020-10-27 05:50:53 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-10-27 05:52:58 +0100tito_04(~taurux@net-93-151-203-8.cust.dsl.teletu.it)
2020-10-27 05:53:43 +0100taurux(~taurux@net-93-151-203-8.cust.dsl.teletu.it) (Ping timeout: 265 seconds)
2020-10-27 05:54:16 +0100damianfral3(~damianfra@174.red-37-13-187.dynamicip.rima-tde.net) (Ping timeout: 256 seconds)
2020-10-27 05:57:32 +0100Jonkimi727406120(~Jonkimi@119.123.241.90)
2020-10-27 06:02:17 +0100servo(~servo@41.92.79.35)
2020-10-27 06:02:20 +0100servo(~servo@41.92.79.35) (Remote host closed the connection)
2020-10-27 06:02:26 +0100Saukk(~Saukk@2001:998:f9:2914:1c59:9bb5:b94c:4) (Remote host closed the connection)
2020-10-27 06:08:11 +0100Amras(~Amras@unaffiliated/amras0000) (Ping timeout: 272 seconds)
2020-10-27 06:08:32 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 258 seconds)
2020-10-27 06:14:25 +0100jchia__(~jchia@58.32.37.146) (Ping timeout: 240 seconds)
2020-10-27 06:15:35 +0100xerox_(~xerox@unaffiliated/xerox)
2020-10-27 06:20:25 +0100danso(~dan@69-165-210-185.cable.teksavvy.com) (Quit: WeeChat 2.9)
2020-10-27 06:20:36 +0100elliott_(~elliott_@pool-108-51-141-12.washdc.fios.verizon.net)
2020-10-27 06:22:08 +0100dansho(~dansho@ip68-108-167-185.lv.lv.cox.net)
2020-10-27 06:22:21 +0100drbean(~drbean@TC210-63-209-17.static.apol.com.tw)
2020-10-27 06:23:16 +0100drbean(~drbean@TC210-63-209-17.static.apol.com.tw) (Client Quit)
2020-10-27 06:24:25 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
2020-10-27 06:24:50 +0100day_(~Unknown@unaffiliated/day)
2020-10-27 06:28:34 +0100day(~Unknown@unaffiliated/day) (Ping timeout: 272 seconds)
2020-10-27 06:28:34 +0100day_day
2020-10-27 06:35:38 +0100dbmikus(~dbmikus@cpe-76-167-86-219.natsow.res.rr.com)
2020-10-27 06:38:14 +0100alexelcu(~alexelcu@142.93.180.198) (Quit: ZNC 1.8.2 - https://znc.in)
2020-10-27 06:38:37 +0100alexelcu(~alexelcu@142.93.180.198)
2020-10-27 06:40:48 +0100dbmikus(~dbmikus@cpe-76-167-86-219.natsow.res.rr.com) (Ping timeout: 260 seconds)
2020-10-27 06:44:15 +0100bgamari(~bgamari@72.65.102.81) (Ping timeout: 260 seconds)
2020-10-27 06:44:34 +0100avoandmayo(~textual@122-58-158-238-adsl.sparkbb.co.nz) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-10-27 06:44:44 +0100bgamari(~bgamari@2001:470:e438::1)
2020-10-27 06:44:55 +0100TooDifficult(~TooDiffic@139.59.59.230) (Ping timeout: 256 seconds)
2020-10-27 06:45:38 +0100Sanchayan(~Sanchayan@106.201.124.173)
2020-10-27 06:47:45 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 256 seconds)
2020-10-27 06:48:47 +0100idhugo(~idhugo@563472ae.rev.stofanet.dk)
2020-10-27 06:49:44 +0100polyrain(~polyrain@2001:8003:e501:6901:caf:e594:a7fb:67e)
2020-10-27 06:50:22 +0100mbomba(~mbomba@142.114.9.241)
2020-10-27 06:52:25 +0100mbomba(~mbomba@142.114.9.241) (Quit: WeeChat 2.9)
2020-10-27 06:53:12 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-10-27 06:57:07 +0100avoandmayo(~textual@122-58-158-238-adsl.sparkbb.co.nz)
2020-10-27 06:58:24 +0100Tops22(~Tobias@dyndsl-095-033-095-051.ewe-ip-backbone.de) (Read error: Connection reset by peer)
2020-10-27 06:58:43 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
2020-10-27 06:59:31 +0100bartemius(~bartemius@109.252.20.20)
2020-10-27 07:00:02 +0100superfly1(~superfly@s91904426.blix.com) ()
2020-10-27 07:00:30 +0100lpy(~nyd@unaffiliated/elysian)
2020-10-27 07:01:57 +0100TooDifficult(~TooDiffic@139.59.59.230)
2020-10-27 07:03:37 +0100Varis(~Tadas@unaffiliated/varis) (Remote host closed the connection)
2020-10-27 07:15:49 +0100idhugo(~idhugo@563472ae.rev.stofanet.dk) (Ping timeout: 264 seconds)
2020-10-27 07:17:10 +0100whatisRT(~whatisRT@2002:5b41:6a33:0:c56a:ceb4:6140:c4a1)
2020-10-27 07:17:16 +0100tuple(~igloo@c-67-169-78-228.hsd1.ca.comcast.net)
2020-10-27 07:17:35 +0100tuple(~igloo@c-67-169-78-228.hsd1.ca.comcast.net) (Client Quit)
2020-10-27 07:21:12 +0100GsC_RuL3Z(~GsC_RuL3Z@s91904426.blix.com)
2020-10-27 07:21:41 +0100TooDifficult(~TooDiffic@139.59.59.230) (Quit: TooDifficult)
2020-10-27 07:21:58 +0100TooDifficult(~TooDiffic@139.59.59.230)
2020-10-27 07:23:15 +0100DTZUZU(~DTZUZU@S0106bcd165662a4d.vs.shawcable.net) (Read error: Connection reset by peer)
2020-10-27 07:25:08 +0100TooDifficult(~TooDiffic@139.59.59.230) (Client Quit)
2020-10-27 07:25:50 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-10-27 07:26:23 +0100plutoniix(~q@175.176.222.7) (Quit: Leaving)
2020-10-27 07:35:59 +0100johnw(~johnw@haskell/developer/johnw)
2020-10-27 07:38:58 +0100hackagetelegram-bot-simple 0.3.3 - Easy to use library for building Telegram bots. https://hackage.haskell.org/package/telegram-bot-simple-0.3.3 (swamp_agr)
2020-10-27 07:40:56 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2020-10-27 07:41:22 +0100Varis(~Tadas@unaffiliated/varis)
2020-10-27 07:41:26 +0100lxsameer(lxsameer@gateway/vpn/protonvpn/lxsameer) (Ping timeout: 256 seconds)
2020-10-27 07:43:58 +0100thir(~thir@p200300f27f0b7e004c18ab60065ea01b.dip0.t-ipconnect.de)
2020-10-27 07:46:47 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 260 seconds)
2020-10-27 07:47:14 +0100conal(~conal@64.71.133.70) (Read error: Connection reset by peer)
2020-10-27 07:48:27 +0100thir(~thir@p200300f27f0b7e004c18ab60065ea01b.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
2020-10-27 07:50:48 +0100tuple(~igloo@c-67-169-78-228.hsd1.ca.comcast.net)
2020-10-27 07:51:36 +0100tuple(~igloo@c-67-169-78-228.hsd1.ca.comcast.net) (Client Quit)
2020-10-27 07:54:18 +0100conal(~conal@64.71.133.70)
2020-10-27 07:57:38 +0100alp(~alp@2a01:e0a:58b:4920:487d:f3bf:e4da:7752)
2020-10-27 07:58:06 +0100chaosmasttter(~chaosmast@p200300c4a73c4601c5635e0548f7339d.dip0.t-ipconnect.de)
2020-10-27 07:58:12 +0100danvet(~Daniel@2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa)
2020-10-27 07:59:17 +0100whatisRT(~whatisRT@2002:5b41:6a33:0:c56a:ceb4:6140:c4a1) (Ping timeout: 260 seconds)
2020-10-27 07:59:43 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2020-10-27 08:06:13 +0100asheshambasta(~user@ptr-e1lysawl9rr13i61o92.18120a2.ip6.access.telenet.be)
2020-10-27 08:07:30 +0100MikeD(ad5822ca@cpe-173-88-34-202.columbus.res.rr.com) (Remote host closed the connection)
2020-10-27 08:09:45 +0100mmohammadi9812(~mmohammad@5.238.178.31) (Ping timeout: 240 seconds)
2020-10-27 08:10:10 +0100mmohammadi9812(~mmohammad@5.115.65.59)
2020-10-27 08:10:18 +0100Zetagon(~leo@c151-177-52-233.bredband.comhem.se)
2020-10-27 08:12:49 +0100chele(~chele@ip5b416ea2.dynamic.kabel-deutschland.de)
2020-10-27 08:16:48 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl) (Remote host closed the connection)
2020-10-27 08:18:01 +0100xsperry(~as@unaffiliated/xsperry) (Ping timeout: 246 seconds)
2020-10-27 08:18:59 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2020-10-27 08:21:47 +0100Zetagon(~leo@c151-177-52-233.bredband.comhem.se) (Remote host closed the connection)
2020-10-27 08:22:28 +0100cfricke(~cfricke@unaffiliated/cfricke)
2020-10-27 08:22:48 +0100Zetagon(~leo@c151-177-52-233.bredband.comhem.se)
2020-10-27 08:25:49 +0100sfvm(~sfvm@37.228.215.148) (Quit: off to the basement, mixing up the medicine)
2020-10-27 08:26:19 +0100cfricke(~cfricke@unaffiliated/cfricke) (Client Quit)
2020-10-27 08:26:27 +0100xsperry(~as@unaffiliated/xsperry)
2020-10-27 08:26:37 +0100cgfbee(~bot@oc1.itim-cj.ro) (Ping timeout: 264 seconds)
2020-10-27 08:29:21 +0100atondwal(~atondwal@ip68-107-107-53.sd.sd.cox.net) (Quit: Leaving.)
2020-10-27 08:30:47 +0100perry69420(6ee39f85@110.227.159.133)
2020-10-27 08:30:50 +0100Sgeo(~Sgeo@ool-18b982ad.dyn.optonline.net) (Read error: Connection reset by peer)
2020-10-27 08:31:50 +0100idhugo(~idhugo@users-1190.st.net.au.dk)
2020-10-27 08:35:07 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-10-27 08:36:01 +0100britva(~britva@31-10-157-156.cgn.dynamic.upc.ch)
2020-10-27 08:36:31 +0100dbmikus(~dbmikus@cpe-76-167-86-219.natsow.res.rr.com)
2020-10-27 08:39:24 +0100avoandmayo(~textual@122-58-158-238-adsl.sparkbb.co.nz) (Read error: Connection reset by peer)
2020-10-27 08:40:31 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2020-10-27 08:41:05 +0100dbmikus(~dbmikus@cpe-76-167-86-219.natsow.res.rr.com) (Ping timeout: 240 seconds)
2020-10-27 08:44:48 +0100wei2912(~wei2912@unaffiliated/wei2912)
2020-10-27 08:44:51 +0100jedws(~jedws@101.184.148.229) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-10-27 08:48:11 +0100raichoo(~raichoo@213.240.178.58)
2020-10-27 08:48:52 +0100hiroaki(~hiroaki@ip4d176049.dynamic.kabel-deutschland.de) (Ping timeout: 260 seconds)
2020-10-27 08:53:12 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl)
2020-10-27 08:53:19 +0100mirrorbird(~psutcliff@2a00:801:42b:7891:16b1:e53f:55b2:15e1)
2020-10-27 08:53:19 +0100DTZUZU(~DTZUZU@S0106bcd165662a4d.vs.shawcable.net)
2020-10-27 08:56:03 +0100mmohammadi9812(~mmohammad@5.115.65.59) (Ping timeout: 258 seconds)
2020-10-27 08:56:29 +0100mmohammadi9812(~mmohammad@5.238.178.31)
2020-10-27 08:57:13 +0100xsperry(~as@unaffiliated/xsperry) (Remote host closed the connection)
2020-10-27 08:57:27 +0100hackageukrainian-phonetics-basic 0.1.5.0 - A library to work with the basic Ukrainian phonetics and syllable segmentation. https://hackage.haskell.org/package/ukrainian-phonetics-basic-0.1.5.0 (OleksandrZhabenko)
2020-10-27 08:58:28 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl) (Ping timeout: 260 seconds)
2020-10-27 08:59:25 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl)
2020-10-27 09:01:31 +0100mananamenos(~mananamen@84.122.202.215.dyn.user.ono.com)
2020-10-27 09:02:07 +0100jedws(~jedws@101.184.148.229)
2020-10-27 09:03:12 +0100dhouthoo(~dhouthoo@ptr-eiv6509pb4ifhdr9lsd.18120a2.ip6.access.telenet.be)
2020-10-27 09:06:17 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-10-27 09:06:38 +0100SeMas(uid32977@gateway/web/irccloud.com/x-rjkgugwtutnfvjwx) (Quit: Connection closed for inactivity)
2020-10-27 09:07:44 +0100christo(~chris@81.96.113.213) (Remote host closed the connection)
2020-10-27 09:07:58 +0100hackagestack-clean-old 0.2 - Clean away old stack build artefacts https://hackage.haskell.org/package/stack-clean-old-0.2 (JensPetersen)
2020-10-27 09:08:39 +0100Franciman(~francesco@host-82-54-10-114.retail.telecomitalia.it)
2020-10-27 09:09:07 +0100jedws(~jedws@101.184.148.229) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-10-27 09:09:35 +0100kritzefitz(~kritzefit@fw-front.credativ.com)
2020-10-27 09:10:01 +0100polyrain(~polyrain@2001:8003:e501:6901:caf:e594:a7fb:67e) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-10-27 09:12:05 +0100cfricke(~cfricke@unaffiliated/cfricke)
2020-10-27 09:12:32 +0100MindlessDrone(~MindlessD@unaffiliated/mindlessdrone) (Ping timeout: 258 seconds)
2020-10-27 09:13:01 +0100GyroW(~GyroW@unaffiliated/gyrow) (Quit: Someone ate my pie)
2020-10-27 09:13:16 +0100GyroW(~GyroW@ptr-48ujrfd1ztq5fjywfw3.18120a2.ip6.access.telenet.be)
2020-10-27 09:13:16 +0100GyroW(~GyroW@ptr-48ujrfd1ztq5fjywfw3.18120a2.ip6.access.telenet.be) (Changing host)
2020-10-27 09:13:16 +0100GyroW(~GyroW@unaffiliated/gyrow)
2020-10-27 09:14:40 +0100jedws(~jedws@101.184.148.229)
2020-10-27 09:14:59 +0100christo(~chris@81.96.113.213)
2020-10-27 09:15:02 +0100jedws(~jedws@101.184.148.229) (Client Quit)
2020-10-27 09:16:32 +0100ericsagnes(~ericsagne@2405:6580:0:5100:6142:ab79:42d1:afc1) (Ping timeout: 260 seconds)
2020-10-27 09:16:56 +0100MindlessDrone(~MindlessD@unaffiliated/mindlessdrone)
2020-10-27 09:18:01 +0100vodkaInf1rno(~wormphleg@104.131.156.184)
2020-10-27 09:18:14 +0100vodkaInferno(~wormphleg@104.131.156.184) (Read error: Connection reset by peer)
2020-10-27 09:18:38 +0100styledash(~styledash@157.230.173.136) (Read error: Connection reset by peer)
2020-10-27 09:18:46 +0100styledash7(~styledash@157.230.173.136)
2020-10-27 09:19:11 +0100beka(~beka@gothdyke.mom) (Ping timeout: 260 seconds)
2020-10-27 09:19:28 +0100christo(~chris@81.96.113.213) (Ping timeout: 256 seconds)
2020-10-27 09:19:49 +0100beka(~beka@gothdyke.mom)
2020-10-27 09:19:50 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
2020-10-27 09:20:24 +0100gehmehgeh(~ircuser1@gateway/tor-sasl/gehmehgeh)
2020-10-27 09:20:59 +0100tuple(~igloo@66.115.157.106)
2020-10-27 09:21:58 +0100SanchayanM(~Sanchayan@122.167.95.166)
2020-10-27 09:23:05 +0100Sanchayan(~Sanchayan@106.201.124.173) (Ping timeout: 240 seconds)
2020-10-27 09:24:15 +0100tuple(~igloo@66.115.157.106) (Client Quit)
2020-10-27 09:24:30 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 256 seconds)
2020-10-27 09:28:41 +0100tuple(~igloo@66.115.157.106)
2020-10-27 09:28:57 +0100ericsagnes(~ericsagne@2405:6580:0:5100:198:130b:ef87:cdda)
2020-10-27 09:32:00 +0100tuple(~igloo@66.115.157.106) (Client Quit)
2020-10-27 09:33:12 +0100xsperry(~as@unaffiliated/xsperry)
2020-10-27 09:37:07 +0100Tuplanolla(~Tuplanoll@91-159-68-239.elisa-laajakaista.fi)
2020-10-27 09:40:32 +0100texasmynsted(~texasmyns@99.96.221.112)
2020-10-27 09:45:07 +0100texasmynsted(~texasmyns@99.96.221.112) (Ping timeout: 256 seconds)
2020-10-27 09:49:14 +0100Lord_of_Life_Lord_of_Life
2020-10-27 09:50:23 +0100cantstanya(~chatting@gateway/tor-sasl/cantstanya) (Ping timeout: 240 seconds)
2020-10-27 09:50:26 +0100knupfer(~Thunderbi@200116b82cb7c400f4108508b0e1b154.dip.versatel-1u1.de)
2020-10-27 09:53:05 +0100hnOsmium0001(uid453710@gateway/web/irccloud.com/x-slcbmpdbycbqjlou) (Quit: Connection closed for inactivity)
2020-10-27 09:55:33 +0100alp(~alp@2a01:e0a:58b:4920:487d:f3bf:e4da:7752) (Ping timeout: 272 seconds)
2020-10-27 09:55:42 +0100cantstanya(~chatting@gateway/tor-sasl/cantstanya)
2020-10-27 09:57:15 +0100alp(~alp@2a01:e0a:58b:4920:d873:f5b:1d39:8a1c)
2020-10-27 09:59:05 +0100Jonkimi727406120(~Jonkimi@119.123.241.90) (Ping timeout: 240 seconds)
2020-10-27 09:59:37 +0100__monty__(~toonn@unaffiliated/toonn)
2020-10-27 10:00:01 +0100GsC_RuL3Z(~GsC_RuL3Z@s91904426.blix.com) ()
2020-10-27 10:02:06 +0100jedws(~jedws@101.184.148.229)
2020-10-27 10:05:57 +0100hackagelorentz 0.7.0 - EDSL for the Michelson Language https://hackage.haskell.org/package/lorentz-0.7.0 (gromak)
2020-10-27 10:06:58 +0100hackagehie-compat 0.1.0.0 - HIE files for GHC 8.6 and other HIE file backports https://hackage.haskell.org/package/hie-compat-0.1.0.0 (wz1000)
2020-10-27 10:08:58 +0100 <gentauro> with PRAGMAs like: `{-# Language DerivingVia #-}` taken from https://old.reddit.com/r/haskell/comments/jibgfe/validpreorder_ord_aa_bool/ga5jalm/ will that not make it more complicated for newcomers to understand how to code in Haskell?
2020-10-27 10:10:15 +0100 <gentauro> and would such a PRAGMA be part of the GHC20xx (global) PRAGMA? https://github.com/ghc-proposals/ghc-proposals/pull/372
2020-10-27 10:13:51 +0100thc202(~thc202@unaffiliated/thc202)
2020-10-27 10:15:52 +0100lxsameer(~lxsameer@unaffiliated/lxsameer)
2020-10-27 10:20:44 +0100smtx(~smtx@185.244.214.217)
2020-10-27 10:21:06 +0100jonathanx(~jonathan@dyn-8-sc.cdg.chalmers.se)
2020-10-27 10:21:52 +0100cfricke(~cfricke@unaffiliated/cfricke) (Ping timeout: 260 seconds)
2020-10-27 10:22:12 +0100cole-h(~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) (Ping timeout: 260 seconds)
2020-10-27 10:23:30 +0100jedws(~jedws@101.184.148.229) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-10-27 10:23:43 +0100vcxvxvxcvcx(57cf5f18@87-207-95-24.dynamic.chello.pl)
2020-10-27 10:24:06 +0100vcxvxvxcvcx(57cf5f18@87-207-95-24.dynamic.chello.pl) ()
2020-10-27 10:24:29 +0100damianfral3(~damianfra@174.red-37-13-187.dynamicip.rima-tde.net)
2020-10-27 10:24:51 +0100fendor(~fendor@078132040188.public.t-mobile.at)
2020-10-27 10:26:43 +0100bartemius(~bartemius@109.252.20.20) (Remote host closed the connection)
2020-10-27 10:29:14 +0100damianfral3(~damianfra@174.red-37-13-187.dynamicip.rima-tde.net) (Ping timeout: 272 seconds)
2020-10-27 10:32:35 +0100oisdk(~oisdk@2001:bb6:3329:d100:4d5c:1d2c:a660:df1)
2020-10-27 10:37:24 +0100dbmikus(~dbmikus@cpe-76-167-86-219.natsow.res.rr.com)
2020-10-27 10:38:10 +0100Jonkimi727406120(~Jonkimi@119.123.241.90)
2020-10-27 10:42:08 +0100dbmikus(~dbmikus@cpe-76-167-86-219.natsow.res.rr.com) (Ping timeout: 256 seconds)
2020-10-27 10:46:21 +0100rinwa(~rinwa@5.102.238.236)
2020-10-27 10:48:40 +0100dansho(~dansho@ip68-108-167-185.lv.lv.cox.net) (Quit: Leaving)
2020-10-27 10:48:46 +0100Katarushisu(~Katarushi@cpc149712-finc20-2-0-cust535.4-2.cable.virginm.net)
2020-10-27 10:49:11 +0100siggard(michalc@gateway/shell/xshellz/x-bewvahwmjpoxlmze)
2020-10-27 10:49:23 +0100polyrain(~polyrain@2001:8003:e501:6901:caf:e594:a7fb:67e)
2020-10-27 10:52:12 +0100 <siggard> Hello. I come to you from iOS dev world and started studing Haskell with book "Learn You a Haskell for Great Good!". Before that I played a bit with Scala and did that basic Scala course by Martin Odersky.
2020-10-27 10:52:51 +0100 <siggard> There is no slack channel nor gitter for Haskell community, isn't it? :-)
2020-10-27 10:53:15 +0100dbmikus(~dbmikus@cpe-76-167-86-219.natsow.res.rr.com)
2020-10-27 10:53:42 +0100xff0x(~fox@2001:1a81:5219:2300:4b1c:219b:a3ac:1af9) (Ping timeout: 260 seconds)
2020-10-27 10:54:18 +0100xff0x(~fox@2001:1a81:5219:2300:9ba4:4fa:1a33:4ccd)
2020-10-27 10:54:41 +0100 <merijn> I'm sure someone has made something like that at some point
2020-10-27 10:55:00 +0100 <merijn> tbh, LYAH isn't a particularly great book
2020-10-27 10:55:35 +0100 <Zetagon> there is a functional programming zulip
2020-10-27 10:55:39 +0100raichoo(~raichoo@213.240.178.58) (Quit: Lost terminal)
2020-10-27 10:57:14 +0100 <siggard> merijn: What would you recommen for someone who has programmed in object oriented environment for last 10 years? :-)
2020-10-27 10:58:22 +0100dbmikus(~dbmikus@cpe-76-167-86-219.natsow.res.rr.com) (Ping timeout: 272 seconds)
2020-10-27 10:58:36 +0100 <Cale> siggard: I often recommend "Programming in Haskell" by Graham Hutton as a good intro.
2020-10-27 10:58:36 +0100 <merijn> There's "Programming in Haskell" by Graham Hutton, "Thinking Functionally with Haskell" by Richard Bird and of course https://haskellbook.com/
2020-10-27 10:59:04 +0100 <merijn> siggard: The problem with LYAH is: It's not greatly structured, glosses over some details, and has no exercises (and kinda dated)
2020-10-27 10:59:18 +0100 <Rembane> It has cute images though
2020-10-27 10:59:26 +0100 <merijn> So the end result is that LYAH is great at "showing you cool things", but not so great in preparing you to "write actual code that does something"
2020-10-27 10:59:50 +0100 <merijn> LYAH is importance/relevance is mostly historical
2020-10-27 11:00:05 +0100 <merijn> In that it came out when there wasn't that much written about Haskell that was accessible
2020-10-27 11:00:21 +0100 <Zetagon> I like https://www.seas.upenn.edu/~cis194/spring13/lectures.html . I'm not sure how good the introduction is because I didn't read it, but I like the last few parts
2020-10-27 11:00:42 +0100 <merijn> And helped start (well, fuel, maybe?) the semi-mainstream popularity of Haskell
2020-10-27 11:01:26 +0100 <merijn> I remember it coming out and the only other text I could find was the infamous tutorial :p
2020-10-27 11:01:39 +0100 <merijn> @quote Brend whoever.named
2020-10-27 11:01:39 +0100 <lambdabot> No quotes match. Are you on drugs?
2020-10-27 11:01:41 +0100 <merijn> aww
2020-10-27 11:01:51 +0100efficiently(~user@209.58.189.165) (Ping timeout: 260 seconds)
2020-10-27 11:02:02 +0100 <merijn> @quote Brend
2020-10-27 11:02:02 +0100 <lambdabot> Brend says: Whoever chose the title "A Gentle Introduction to Haskell" is obviously accustomed to wrestling bears in piranha pits or something.
2020-10-27 11:04:09 +0100m0rphism(~m0rphism@HSI-KBW-046-005-177-122.hsi8.kabel-badenwuerttemberg.de)
2020-10-27 11:04:14 +0100cfricke(~cfricke@unaffiliated/cfricke)
2020-10-27 11:05:05 +0100olligobber(olligobber@gateway/vpn/privateinternetaccess/olligobber) (Ping timeout: 240 seconds)
2020-10-27 11:05:18 +0100jbox(~atlas@unaffiliated/jbox) (Quit: WeeChat 2.9)
2020-10-27 11:05:41 +0100akegalj(~akegalj@93-142-98-67.adsl.net.t-com.hr)
2020-10-27 11:06:33 +0100 <siggard> Thanks people. I will take a look on your recommendations. :-) Zetagon thanks, it looks like this course is from 2013 but there are homeworks so maybe it'll be easier to follow. Thanks!
2020-10-27 11:06:56 +0100 <siggard> merijn: "infamous tutorial"? ;-)
2020-10-27 11:07:11 +0100 <Zetagon> siggard: I particularily like the functor homeworks
2020-10-27 11:09:10 +0100GyroW(~GyroW@unaffiliated/gyrow) (Quit: Someone ate my pie)
2020-10-27 11:09:20 +0100GyroW(~GyroW@d54C03E98.access.telenet.be)
2020-10-27 11:09:20 +0100GyroW(~GyroW@d54C03E98.access.telenet.be) (Changing host)
2020-10-27 11:09:20 +0100GyroW(~GyroW@unaffiliated/gyrow)
2020-10-27 11:11:06 +0100 <siggard> Cale: looks like i have that Haskell Book in my emoyer's library. But it's in PDF only which makes it hard to read on Kindle. :D
2020-10-27 11:11:19 +0100 <siggard> But you think it's worth it, right?
2020-10-27 11:12:42 +0100 <merijn> siggard: See the above quote :p
2020-10-27 11:13:01 +0100 <merijn> siggard: There's an e-reader PDF version too, iirc
2020-10-27 11:14:47 +0100bliminse(~bliminse@host109-158-26-29.range109-158.btcentralplus.com) (Quit: leaving)
2020-10-27 11:15:17 +0100aarvar(~foewfoiew@50.35.43.33) (Ping timeout: 260 seconds)
2020-10-27 11:16:40 +0100ubert(~Thunderbi@2a02:8109:9880:303c:ca5b:76ff:fe29:f233)
2020-10-27 11:17:16 +0100bliminse(~bliminse@host109-158-26-29.range109-158.btcentralplus.com)
2020-10-27 11:20:21 +0100bartemius(~bartemius@109-252-20-20.nat.spd-mgts.ru)
2020-10-27 11:21:30 +0100bliminse(~bliminse@host109-158-26-29.range109-158.btcentralplus.com) (Client Quit)
2020-10-27 11:21:41 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
2020-10-27 11:22:52 +0100 <ulidtko> does Cabal's build-type: Simple support distributing custom files?
2020-10-27 11:23:40 +0100 <dcoutts__> ulidtko: do you mean installing extra files, or just including extra files into the source tarball?
2020-10-27 11:23:45 +0100 <ulidtko> I can see there're apis like installOrdinaryFile in Distribution.Simple.Utils, but not sure how to use that
2020-10-27 11:23:54 +0100 <ulidtko> dcoutts__, the former, installing
2020-10-27 11:24:22 +0100 <dcoutts__> ulidtko: no it just supports installing header files I think
2020-10-27 11:24:40 +0100 <merijn> You can install data files
2020-10-27 11:24:57 +0100 <merijn> So it depends exactly what these files are for
2020-10-27 11:24:57 +0100 <dcoutts__> oh yes, and data files
2020-10-27 11:25:05 +0100dcoutts__dcoutts
2020-10-27 11:25:11 +0100 <ulidtko> exactly, data files is what i need
2020-10-27 11:25:20 +0100 <ulidtko> any guide links?..
2020-10-27 11:26:20 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 256 seconds)
2020-10-27 11:26:30 +0100 <merijn> ulidtko: https://cabal.readthedocs.io/en/latest/cabal-package.html#accessing-data-files-from-package-code
2020-10-27 11:27:00 +0100 <ulidtko> merijn, thank you
2020-10-27 11:27:18 +0100 <merijn> ulidtko: and https://cabal.readthedocs.io/en/latest/cabal-package.html#pkg-field-data-files
2020-10-27 11:28:34 +0100raichoo(~raichoo@213.240.178.58)
2020-10-27 11:29:44 +0100Kolkrabe(~user@unaffiliated/siracusa) (Quit: Bye!)
2020-10-27 11:32:06 +0100bliminse(~bliminse@host109-158-129-241.range109-158.btcentralplus.com)
2020-10-27 11:32:06 +0100Stanley|00(~stanley00@unaffiliated/stanley00) (Remote host closed the connection)
2020-10-27 11:36:00 +0100tito_04(~taurux@net-93-151-203-8.cust.dsl.teletu.it) (Quit: ZNC 1.7.5 - https://znc.in)
2020-10-27 11:39:52 +0100invaser(~Thunderbi@31.148.23.125)
2020-10-27 11:40:07 +0100avn(~avn@78-56-108-78.static.zebra.lt)
2020-10-27 11:42:00 +0100son0p(~son0p@181.58.39.86)
2020-10-27 11:44:58 +0100unlink2(~unlink2@p200300ebcf180b00a39cfda93b79d512.dip0.t-ipconnect.de) (Remote host closed the connection)
2020-10-27 11:45:26 +0100thir(~thir@p200300f27f0b7e004c18ab60065ea01b.dip0.t-ipconnect.de)
2020-10-27 11:46:23 +0100unlink2(~unlink2@p200300ebcf180b00a39cfda93b79d512.dip0.t-ipconnect.de)
2020-10-27 11:46:38 +0100knupfer(~Thunderbi@200116b82cb7c400f4108508b0e1b154.dip.versatel-1u1.de) (Quit: knupfer)
2020-10-27 11:46:48 +0100knupfer(~Thunderbi@200116b82cb7c400ed5464f4c167feaa.dip.versatel-1u1.de)
2020-10-27 11:47:13 +0100knupfer(~Thunderbi@200116b82cb7c400ed5464f4c167feaa.dip.versatel-1u1.de) (Client Quit)
2020-10-27 11:47:21 +0100knupfer(~Thunderbi@200116b82cb7c400050f6fe9a7d2b159.dip.versatel-1u1.de)
2020-10-27 11:47:57 +0100averell(~averell@unaffiliated/averell) (Quit: .)
2020-10-27 11:50:17 +0100thir(~thir@p200300f27f0b7e004c18ab60065ea01b.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
2020-10-27 11:50:33 +0100GyroW_(~GyroW@d54C03E98.access.telenet.be)
2020-10-27 11:50:33 +0100GyroW_(~GyroW@d54C03E98.access.telenet.be) (Changing host)
2020-10-27 11:50:33 +0100GyroW_(~GyroW@unaffiliated/gyrow)
2020-10-27 11:50:55 +0100GyroW(~GyroW@unaffiliated/gyrow) (Ping timeout: 256 seconds)
2020-10-27 11:51:54 +0100Jonkimi727406120(~Jonkimi@119.123.241.90) (Ping timeout: 256 seconds)
2020-10-27 11:54:37 +0100taurux(~taurux@net-93-151-203-8.cust.vodafonedsl.it)
2020-10-27 11:54:55 +0100raichoo(~raichoo@213.240.178.58) (Quit: Lost terminal)
2020-10-27 11:56:04 +0100ptrcmd(~ptrcmd@unaffiliated/petercommand) (Remote host closed the connection)
2020-10-27 11:57:22 +0100ptrcmd(~ptrcmd@unaffiliated/petercommand)
2020-10-27 11:58:04 +0100p8m(p8m@gateway/vpn/protonvpn/p8m) (Ping timeout: 256 seconds)
2020-10-27 11:58:19 +0100GyroW_(~GyroW@unaffiliated/gyrow) (Ping timeout: 260 seconds)
2020-10-27 11:58:46 +0100GyroW(~GyroW@d54c03e98.access.telenet.be)
2020-10-27 11:58:46 +0100GyroW(~GyroW@d54c03e98.access.telenet.be) (Changing host)
2020-10-27 11:58:46 +0100GyroW(~GyroW@unaffiliated/gyrow)
2020-10-27 12:01:53 +0100averell(~averell@unaffiliated/averell)
2020-10-27 12:02:28 +0100hackagereanimate 1.1.2.1 - Animation library based on SVGs. https://hackage.haskell.org/package/reanimate-1.1.2.1 (DavidHimmelstrup)
2020-10-27 12:04:32 +0100machinedgod(~machinedg@24.105.81.50)
2020-10-27 12:05:50 +0100is_null(~jpic@pdpc/supporter/professional/is-null)
2020-10-27 12:06:07 +0100petersen(~petersen@redhat/juhp) (Quit: petersen)
2020-10-27 12:08:23 +0100tsrt^(tsrt@ip98-184-89-2.mc.at.cox.net) ()
2020-10-27 12:08:33 +0100alp(~alp@2a01:e0a:58b:4920:d873:f5b:1d39:8a1c) (Ping timeout: 272 seconds)
2020-10-27 12:08:57 +0100nkly(~nkly@2a02:8109:9ac0:4a4c::baa2) (Ping timeout: 260 seconds)
2020-10-27 12:09:57 +0100ndbopoi^(ndbopoi@ip98-184-89-2.mc.at.cox.net)
2020-10-27 12:10:55 +0100alx741(~alx741@186.178.110.169) (Ping timeout: 260 seconds)
2020-10-27 12:13:48 +0100obihann(~jhann@156.34.160.69)
2020-10-27 12:14:35 +0100nkly(~nkly@2a02:8109:9ac0:4a4c::9b9d)
2020-10-27 12:14:44 +0100ptrcmd(~ptrcmd@unaffiliated/petercommand) (Quit: leaving)
2020-10-27 12:16:47 +0100chaosmasttter(~chaosmast@p200300c4a73c4601c5635e0548f7339d.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
2020-10-27 12:16:54 +0100rprije(~rprije@194-193-168-77.tpgi.com.au) (Ping timeout: 272 seconds)
2020-10-27 12:17:28 +0100wei2912(~wei2912@unaffiliated/wei2912) (Remote host closed the connection)
2020-10-27 12:18:55 +0100ericsagnes(~ericsagne@2405:6580:0:5100:198:130b:ef87:cdda) (Ping timeout: 240 seconds)
2020-10-27 12:24:15 +0100nkly(~nkly@2a02:8109:9ac0:4a4c::9b9d) (Quit: ZNC 1.6.6+deb1ubuntu0.2 - http://znc.in)
2020-10-27 12:25:05 +0100nkly(~nkly@ip5f5bd51d.dynamic.kabel-deutschland.de)
2020-10-27 12:25:07 +0100plutoniix(~q@175.176.222.7)
2020-10-27 12:25:24 +0100alx741(~alx741@186.178.110.246)
2020-10-27 12:31:43 +0100ericsagnes(~ericsagne@2405:6580:0:5100:dc8a:5173:1db7:7a54)
2020-10-27 12:36:40 +0100xerox_(~xerox@unaffiliated/xerox) (Ping timeout: 256 seconds)
2020-10-27 12:37:57 +0100hackagemorley 1.8.1 - Developer tools for the Michelson Language https://hackage.haskell.org/package/morley-1.8.1 (gromak)
2020-10-27 12:38:02 +0100 <__monty__> I think arian was talking about the original issue, i.e., they don't exist after just building the expression.
2020-10-27 12:38:15 +0100 <__monty__> Whoops, wrong chan.
2020-10-27 12:39:28 +0100hackageindigo 0.3.1 - Convenient imperative eDSL over Lorentz. https://hackage.haskell.org/package/indigo-0.3.1 (gromak)
2020-10-27 12:40:22 +0100alp(~alp@2a01:e0a:58b:4920:ecb1:3ebe:b736:8221)
2020-10-27 12:41:22 +0100geowiesnot(~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr)
2020-10-27 12:41:22 +0100 <dminuoso> Are there QQs for ghc-lib-parser, to generate AST fragments from?
2020-10-27 12:41:41 +0100 <dminuoso> (Say via TH Exp?)
2020-10-27 12:43:29 +0100son0p(~son0p@181.58.39.86) (Quit: leaving)
2020-10-27 12:46:53 +0100drbean(~drbean@TC210-63-209-53.static.apol.com.tw)
2020-10-27 12:52:24 +0100chaosmasttter(~chaosmast@p200300c4a73c4601c5635e0548f7339d.dip0.t-ipconnect.de)
2020-10-27 12:54:05 +0100dbmikus(~dbmikus@cpe-76-167-86-219.natsow.res.rr.com)
2020-10-27 12:57:15 +0100jchia__(~jchia@45.32.62.73)
2020-10-27 12:58:17 +0100jchia__(~jchia@45.32.62.73) (Remote host closed the connection)
2020-10-27 12:58:45 +0100dbmikus(~dbmikus@cpe-76-167-86-219.natsow.res.rr.com) (Ping timeout: 240 seconds)
2020-10-27 12:59:15 +0100jchia__(~jchia@45.32.62.73)
2020-10-27 13:00:02 +0100smtx(~smtx@185.244.214.217) ()
2020-10-27 13:01:02 +0100jchia__(~jchia@45.32.62.73) (Remote host closed the connection)
2020-10-27 13:01:32 +0100ptrcmd(~ptrcmd@unaffiliated/petercommand)
2020-10-27 13:01:49 +0100jchia__(~jchia@58.32.37.146)
2020-10-27 13:01:52 +0100britva(~britva@31-10-157-156.cgn.dynamic.upc.ch) (Quit: This computer has gone to sleep)
2020-10-27 13:03:30 +0100urodna(~urodna@unaffiliated/urodna)
2020-10-27 13:08:09 +0100p8m(p8m@gateway/vpn/protonvpn/p8m)
2020-10-27 13:09:58 +0100dbmikus(~dbmikus@cpe-76-167-86-219.natsow.res.rr.com)
2020-10-27 13:11:54 +0100raichoo(~raichoo@213.240.178.58)
2020-10-27 13:13:47 +0100alp(~alp@2a01:e0a:58b:4920:ecb1:3ebe:b736:8221) (Ping timeout: 272 seconds)
2020-10-27 13:14:34 +0100dbmikus(~dbmikus@cpe-76-167-86-219.natsow.res.rr.com) (Ping timeout: 256 seconds)
2020-10-27 13:17:45 +0100geekosaur(82659a09@host154-009.vpn.uakron.edu)
2020-10-27 13:18:45 +0100Rudd0(~Rudd0@185.189.115.98) (Ping timeout: 240 seconds)
2020-10-27 13:21:22 +0100whatisRT(~whatisRT@2002:5b41:6a33:0:c56a:ceb4:6140:c4a1)
2020-10-27 13:22:10 +0100geowiesnot(~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) (Ping timeout: 246 seconds)
2020-10-27 13:26:55 +0100knupfer(~Thunderbi@200116b82cb7c400050f6fe9a7d2b159.dip.versatel-1u1.de) (Ping timeout: 240 seconds)
2020-10-27 13:31:13 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:d1e5:1a77:fd52:7b88)
2020-10-27 13:31:43 +0100petersen(~petersen@redhat/juhp)
2020-10-27 13:33:06 +0100Stanley00(~stanley00@unaffiliated/stanley00)
2020-10-27 13:33:35 +0100PlasmaStrike(~mattplasm@38.73.141.198)
2020-10-27 13:34:05 +0100akad(~akad@109107030050.radomsko.vectranet.pl)
2020-10-27 13:37:20 +0100fendor(~fendor@078132040188.public.t-mobile.at) (Ping timeout: 272 seconds)
2020-10-27 13:37:23 +0100PlasmaStrike(~mattplasm@38.73.141.198) (Client Quit)
2020-10-27 13:37:37 +0100damianfral3(~damianfra@174.red-37-13-187.dynamicip.rima-tde.net)
2020-10-27 13:37:46 +0100PlasmaStrike(~mattplasm@38.73.141.198)
2020-10-27 13:37:53 +0100Stanley00(~stanley00@unaffiliated/stanley00) (Ping timeout: 260 seconds)
2020-10-27 13:39:05 +0100Gurkenglas(~Gurkengla@unaffiliated/gurkenglas)
2020-10-27 13:39:09 +0100cfricke(~cfricke@unaffiliated/cfricke) (Ping timeout: 256 seconds)
2020-10-27 13:40:15 +0100PlasmaStrike(~mattplasm@38.73.141.198) (Client Quit)
2020-10-27 13:40:29 +0100PlasmaStrike(~mattplasm@38.73.141.198)
2020-10-27 13:43:32 +0100PlasmaStrike(~mattplasm@38.73.141.198) (Client Quit)
2020-10-27 13:43:45 +0100PlasmaStrike(~mattplasm@38.73.141.198)
2020-10-27 13:44:45 +0100 <Raito_Bezarius> is it a good idea to use Alex & Megaparsec together?
2020-10-27 13:45:25 +0100 <Raito_Bezarius> I'm trying to write a parser for programming language which requires to add automatically semicolon to the end of certain lexemes, I'm not sure megaparsec is built to handle this by itself
2020-10-27 13:45:31 +0100 <dminuoso> It can be sensible, sure
2020-10-27 13:46:13 +0100kish`(~oracle@unaffiliated/oracle)
2020-10-27 13:46:25 +0100xff0x(~fox@2001:1a81:5219:2300:9ba4:4fa:1a33:4ccd) (Ping timeout: 240 seconds)
2020-10-27 13:46:31 +0100 <dminuoso> Raito_Bezarius: You can trivially do this yourself
2020-10-27 13:46:53 +0100thir(~thir@p200300f27f0b7e004c18ab60065ea01b.dip0.t-ipconnect.de)
2020-10-27 13:47:00 +0100 <Raito_Bezarius> using megaparsec?
2020-10-27 13:47:08 +0100 <dminuoso> Sure
2020-10-27 13:47:17 +0100 <dminuoso> lexeme spc p = p <* spc
2020-10-27 13:47:19 +0100 <Raito_Bezarius> Is there any pointer to where should I look in the megaparsec docs?
2020-10-27 13:47:25 +0100 <dminuoso> lexemeSemi spc p = p <* semi <* spc
2020-10-27 13:47:29 +0100 <dminuoso> Done
2020-10-27 13:47:31 +0100xff0x(~fox@2001:1a81:5219:2300:5d08:4351:f573:c6af)
2020-10-27 13:47:35 +0100 <Raito_Bezarius> ha
2020-10-27 13:48:05 +0100 <dminuoso> (Note that the first definition is already defined in megaparsec, I just included it for reference)
2020-10-27 13:48:07 +0100 <Raito_Bezarius> well, I'll read more the docs until I understand why is it enough/trivial enough
2020-10-27 13:48:13 +0100 <Raito_Bezarius> but like
2020-10-27 13:48:20 +0100 <dminuoso> lexing and parsing are really the same thing. :)
2020-10-27 13:48:20 +0100 <Raito_Bezarius> if I want to add a semicolon to a lexeme if only it's a certain lexeme
2020-10-27 13:48:26 +0100 <Raito_Bezarius> I can just really chain lexeme & lexemeSemi ?
2020-10-27 13:48:35 +0100 <dminuoso> Raito_Bezarius: Yes, that's why you use both lexeme and lexemeSemi
2020-10-27 13:48:38 +0100 <dminuoso> For example:
2020-10-27 13:48:55 +0100cfricke(~cfricke@unaffiliated/cfricke)
2020-10-27 13:49:05 +0100kish(~oracle@unaffiliated/oracle) (Ping timeout: 240 seconds)
2020-10-27 13:49:13 +0100 <dminuoso> say you have:
2020-10-27 13:49:23 +0100 <dminuoso> lexemeSemi = p <* semi <* spc
2020-10-27 13:49:23 +0100carlomagno(~cararell@148.87.23.7) (Remote host closed the connection)
2020-10-27 13:49:26 +0100 <dminuoso> Where spc is your space consumer
2020-10-27 13:49:28 +0100 <dminuoso> Then you can define
2020-10-27 13:49:39 +0100 <dminuoso> err
2020-10-27 13:49:42 +0100 <dminuoso> lexemeSemi p = p <* semi <* spc
2020-10-27 13:49:53 +0100 <dminuoso> foo = lexemeSemi (string "foo")
2020-10-27 13:50:00 +0100 <dminuoso> which would lex `foo;` plus leading whitespace
2020-10-27 13:50:05 +0100 <dminuoso> (or trailing I guess)
2020-10-27 13:50:09 +0100PlasmaStrike(~mattplasm@38.73.141.198) ("ERC (IRC client for Emacs 28.0.50)")
2020-10-27 13:50:10 +0100 <Raito_Bezarius> yes
2020-10-27 13:50:17 +0100 <Raito_Bezarius> now if I give foo; can I still get foo; without error?
2020-10-27 13:50:28 +0100 <dminuoso> "get foo; without error"?
2020-10-27 13:50:29 +0100Zetagon(~leo@c151-177-52-233.bredband.comhem.se) (Ping timeout: 256 seconds)
2020-10-27 13:50:31 +0100 <Raito_Bezarius> sorry
2020-10-27 13:50:36 +0100 <Raito_Bezarius> if I give as input `foo;`
2020-10-27 13:50:36 +0100lpy(~nyd@unaffiliated/elysian) (Quit: lpy)
2020-10-27 13:50:41 +0100 <Raito_Bezarius> can I still make it so it lex to `foo;`
2020-10-27 13:50:44 +0100 <geekosaur> I think Raito_Bezarius wants the opposite of what you're providing
2020-10-27 13:50:50 +0100 <Raito_Bezarius> I want both
2020-10-27 13:50:51 +0100PlasmaStrike(~mattplasm@38.73.141.198)
2020-10-27 13:50:55 +0100thir(~thir@p200300f27f0b7e004c18ab60065ea01b.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
2020-10-27 13:50:58 +0100 <Raito_Bezarius> I want semicolon to be automatically added when it's relevant
2020-10-27 13:50:59 +0100 <geekosaur> insert a virtual semicolon after some lexemes, but allow it to be explicit as well
2020-10-27 13:51:05 +0100 <dminuoso> ahh
2020-10-27 13:51:11 +0100 <Raito_Bezarius> something like lexemeSemi (string "foo") <|> lexeme (string "foo;") or something like this
2020-10-27 13:51:15 +0100 <dminuoso> Well, I'd just get rid of it in the parser
2020-10-27 13:51:19 +0100 <dminuoso> or lexer
2020-10-27 13:51:31 +0100 <dminuoso> I see
2020-10-27 13:51:36 +0100 <dminuoso> You can make the semi optional
2020-10-27 13:51:43 +0100 <dminuoso> lexemeSemi p = p <* optional semi <* spc
2020-10-27 13:52:03 +0100 <Raito_Bezarius> but then, this separator won't always appear right?
2020-10-27 13:52:12 +0100 <dminuoso> what do you mean by separator?
2020-10-27 13:52:15 +0100 <Raito_Bezarius> the ;
2020-10-27 13:52:18 +0100 <Raito_Bezarius> it will lex as foo or foo;
2020-10-27 13:52:20 +0100 <Raito_Bezarius> right?
2020-10-27 13:52:28 +0100 <dminuoso> Raito_Bezarius: What do you mean with "lex as"?
2020-10-27 13:52:32 +0100 <dminuoso> It will *consume* both
2020-10-27 13:52:57 +0100 <Raito_Bezarius> I mean, my grammar assumes that those semicolons always appear
2020-10-27 13:53:32 +0100 <Raito_Bezarius> so the parser will expect semicolons for certain rules, but without automatically adding them explicitly, the rules will fail
2020-10-27 13:53:43 +0100 <dminuoso> Im not quite sure what "adding" even means?
2020-10-27 13:53:54 +0100 <dminuoso> We're in a parser, we dont generate a string, we consume it
2020-10-27 13:53:56 +0100 <Raito_Bezarius> in this case, I'm looking at Julia
2020-10-27 13:54:09 +0100 <Raito_Bezarius> if I have, `while foo end`
2020-10-27 13:54:15 +0100carlomagno(~cararell@148.87.23.12)
2020-10-27 13:54:23 +0100 <Raito_Bezarius> it should appear as `while foo end;`
2020-10-27 13:54:29 +0100 <dminuoso> what do you mean by "appear"?
2020-10-27 13:54:56 +0100 <dminuoso> A parser usually transforms `while foo end;` into some concrete or abstract syntax tree
2020-10-27 13:55:02 +0100 <Raito_Bezarius> Yes
2020-10-27 13:55:08 +0100 <Raito_Bezarius> Hm, maybe I am creating a XY problem or something
2020-10-27 13:55:54 +0100Criggie1(~Criggie@154.13.1.56)
2020-10-27 13:56:16 +0100 <Raito_Bezarius> dminuoso: thanks for the ideas, I'll try to go for implementation first and expose the precise problem when I encounter it
2020-10-27 13:56:19 +0100 <Raito_Bezarius> That was very helpful
2020-10-27 13:56:20 +0100 <geekosaur> if you want to parse something and then prettyprint it, just have the prettyprinter always print the semicolons while rendering the AST back into text
2020-10-27 13:56:34 +0100 <Raito_Bezarius> I'm not in the prettyprint phase though I plan to do so
2020-10-27 13:56:42 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:d1e5:1a77:fd52:7b88) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-10-27 13:56:46 +0100 <Raito_Bezarius> I was rather adapting a set of rules from a grammar into megaparsec parsing code
2020-10-27 13:57:00 +0100 <Raito_Bezarius> and the set of rules expects semicolon because the lexical analysis suggests to automatically add them
2020-10-27 13:57:02 +0100 <dminuoso> Raito_Bezarius: So this is where things can very very quickly become complicated.
2020-10-27 13:57:16 +0100 <dminuoso> Do you need to preserve the exact input?
2020-10-27 13:57:21 +0100 <Raito_Bezarius> No I do not need
2020-10-27 13:57:34 +0100perry69420(6ee39f85@110.227.159.133) (Ping timeout: 245 seconds)
2020-10-27 13:57:39 +0100 <Raito_Bezarius> I didn't want to go for custom lexer code because I wanted to benefit from megaparsec source position stuff
2020-10-27 13:57:48 +0100 <dminuoso> Raito_Bezarius: Okay. I think there may be some confusion here of what the output of a parser really is
2020-10-27 13:57:58 +0100 <Raito_Bezarius> I want to output an AST right now
2020-10-27 13:58:12 +0100 <Raito_Bezarius> I have an AST in terms of data
2020-10-27 13:58:13 +0100 <dminuoso> Raito_Bezarius: Do you represent semicolons in that AST?
2020-10-27 13:58:19 +0100 <Raito_Bezarius> No, so I can just discard them
2020-10-27 13:58:32 +0100 <Raito_Bezarius> But I was afraid of stuff like ambiguous things in the grammar
2020-10-27 14:00:59 +0100acarrico(~acarrico@dhcp-68-142-39-249.greenmountainaccess.net)
2020-10-27 14:01:31 +0100djellemah(~djellemah@2601:5c2:100:96c:e008:b638:39fe:6a54)
2020-10-27 14:03:45 +0100britva(~britva@31-10-157-156.cgn.dynamic.upc.ch)
2020-10-27 14:04:27 +0100hyperisco(~hyperisco@d192-186-117-226.static.comm.cgocable.net)
2020-10-27 14:05:09 +0100 <Raito_Bezarius> maybe stupid question, I'm trying to have "some digitChar" but I cannot because "Illegal equational constraint Token s ~ Char", should I just enable TypeFamilies or GADTs?
2020-10-27 14:05:16 +0100 <Raito_Bezarius> or am I doing something wrong?
2020-10-27 14:05:22 +0100 <Raito_Bezarius> integer = some digitChar <?> "an integer"
2020-10-27 14:05:33 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:d1e5:1a77:fd52:7b88)
2020-10-27 14:06:08 +0100plutoniix(~q@175.176.222.7) (Quit: Leaving)
2020-10-27 14:07:09 +0100 <dminuoso> Raito_Bezarius: What's the type signature of integer?
2020-10-27 14:07:33 +0100 <dminuoso> Or.. that error mmm
2020-10-27 14:07:36 +0100ClaudiusMaximus(~claude@198.123.199.146.dyn.plus.net)
2020-10-27 14:07:36 +0100ClaudiusMaximus(~claude@198.123.199.146.dyn.plus.net) (Changing host)
2020-10-27 14:07:36 +0100ClaudiusMaximus(~claude@unaffiliated/claudiusmaximus)
2020-10-27 14:07:38 +0100 <dminuoso> Which ghc are you using?
2020-10-27 14:07:52 +0100vacm(~vacwm@70.23.92.191)
2020-10-27 14:07:53 +0100 <Raito_Bezarius> I want something like (MonadParsec m, …) => m [Char]
2020-10-27 14:07:56 +0100 <Raito_Bezarius> GHC8 dminuoso
2020-10-27 14:08:01 +0100 <Raito_Bezarius> 8.10
2020-10-27 14:08:36 +0100 <Raito_Bezarius> enabling GADT made it work
2020-10-27 14:09:05 +0100xerox_(~xerox@unaffiliated/xerox)
2020-10-27 14:09:55 +0100 <dminuoso> It's possible this is due to some changes in 8.10
2020-10-27 14:10:23 +0100 <dminuoso> "GHC now performs more validity checks on inferred type signatures."
2020-10-27 14:10:27 +0100 <dminuoso> That's very non-descript.
2020-10-27 14:10:34 +0100 <dminuoso> But Im guessing that's why
2020-10-27 14:11:17 +0100 <geekosaur> this might be worth asking haskell-cafe about, if it's affecting random Megaparsec parsers then it might be surprising to a bunch of people
2020-10-27 14:11:36 +0100 <geekosaur> lthough 8.10 has been out for a while now so it should have already caused an uproar, hm
2020-10-27 14:12:12 +0100danza(~francesco@151.53.87.185)
2020-10-27 14:12:17 +0100 <Raito_Bezarius> Well, I'm okay with enabling type families or GADT meanwhile
2020-10-27 14:13:29 +0100 <geekosaur> I'm kinda not so comfortable with it tbh. Megaparsec seems a strange place for a hidden dependency on GADTs to arise
2020-10-27 14:14:14 +0100 <Raito_Bezarius> Could one of you verify in a REPL I'm not saying stupid things?
2020-10-27 14:14:26 +0100 <Raito_Bezarius> I just imported a bunch of megaparsec classic things, everything is built-in
2020-10-27 14:14:28 +0100 <dminuoso> Raito_Bezarius: Im very sure this is why.
2020-10-27 14:14:31 +0100 <merijn> dminuoso: I think it's basically like before where GHC would infer types that required extensions that weren't enabled
2020-10-27 14:14:47 +0100 <merijn> And then when it (correctly) demanded those extensions be enabled, stuff broke
2020-10-27 14:14:50 +0100 <dminuoso> Raito_Bezarius: The release notes even lists a similar example, albeit with a different extension.
2020-10-27 14:14:58 +0100 <Raito_Bezarius> Fair enough
2020-10-27 14:15:09 +0100 <dminuoso> merijn: Oh because it affected the semantics of other code?
2020-10-27 14:15:15 +0100 <dminuoso> Like ScopedTypeVariables?
2020-10-27 14:15:17 +0100whatisRT(~whatisRT@2002:5b41:6a33:0:c56a:ceb4:6140:c4a1) (Read error: Connection reset by peer)
2020-10-27 14:15:26 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl) (Remote host closed the connection)
2020-10-27 14:15:51 +0100 <merijn> dminuoso: No, stuff like, if you left out a type signature and GHC inferred one that used MultiParamTypeclasses, then it would allow the inferred type *even* if MPTC wasn't enabled
2020-10-27 14:15:55 +0100 <merijn> Which is, of course, wrong
2020-10-27 14:16:02 +0100 <dminuoso> (Say because you're doing something like `(\(e :: FooException) -> ...)`, then enabling ScopedTypeVariables could actually alter the meaning in other places where if you have ExplicitForAll
2020-10-27 14:16:22 +0100 <dminuoso> mmm
2020-10-27 14:16:40 +0100 <merijn> So it used to allow types with extensions that weren't enabled *iff* the types were inferred, which is a bug, but one you can accidentally rely on
2020-10-27 14:16:43 +0100denisse(~spaceCat@gateway/tor-sasl/alephzer0) (Ping timeout: 240 seconds)
2020-10-27 14:16:49 +0100ptrcmd(~ptrcmd@unaffiliated/petercommand) (Remote host closed the connection)
2020-10-27 14:17:12 +0100xerox__(~xerox@unaffiliated/xerox)
2020-10-27 14:17:13 +0100denisse(~spaceCat@gateway/tor-sasl/alephzer0)
2020-10-27 14:17:29 +0100 <dminuoso> merijn: I cant even fathom what kind of engineering complexity language extensions brings with them because you have precisely this kind of cross-module friction.
2020-10-27 14:17:30 +0100Franciman(~francesco@host-82-54-10-114.retail.telecomitalia.it) (Read error: Connection reset by peer)
2020-10-27 14:17:47 +0100Franciman(~francesco@host-82-54-10-114.retail.telecomitalia.it)
2020-10-27 14:18:03 +0100 <merijn> So it looks like, in Raito_Bezarius's example is that due to the lack of type signature, the inferred type has megaparsec Token constraint, which uses type families, but type families isn't enabled in his code
2020-10-27 14:18:10 +0100 <dminuoso> merijn: Right.
2020-10-27 14:18:18 +0100 <merijn> So writing out a non-polymorphic type would *also* fix the issue
2020-10-27 14:18:21 +0100 <dminuoso> merijn: Im just saying the release note could have explained this better
2020-10-27 14:18:23 +0100 <Raito_Bezarius> merijn: I see
2020-10-27 14:18:23 +0100 <dminuoso> I *assumed* what you said
2020-10-27 14:18:54 +0100 <merijn> Raito_Bezarius: If you write out a specific type, then the constraint is already solved and the extension unneeded
2020-10-27 14:18:54 +0100 <dminuoso> I sometimes wish, GHC would roll out such things with deprecation notices
2020-10-27 14:18:56 +0100 <dminuoso> like
2020-10-27 14:19:02 +0100 <dminuoso> "This is going to fail in a future GHC"
2020-10-27 14:19:06 +0100PragCypher(~cypher@li1507-98.members.linode.com) (Quit: ZNC 1.7.5 - https://znc.in)
2020-10-27 14:19:09 +0100 <merijn> dminuoso: Where do you draw the line, though?
2020-10-27 14:19:09 +0100ptrcmd(~ptrcmd@unaffiliated/petercommand)
2020-10-27 14:19:20 +0100 <merijn> Does every bugfix need a deprecation warning?
2020-10-27 14:19:20 +0100PragCypher(~cypher@li1507-98.members.linode.com)
2020-10-27 14:19:34 +0100 <merijn> dminuoso: See the endless discussion on the TH change I got temporarily rolled back in 8.10
2020-10-27 14:19:40 +0100 <dminuoso> Which TH change?
2020-10-27 14:20:12 +0100xerox_(~xerox@unaffiliated/xerox) (Ping timeout: 260 seconds)
2020-10-27 14:20:49 +0100 <merijn> That typeclass constraint (incorrectly) are allowed to violate the staging/splicing rules
2020-10-27 14:20:52 +0100denisse(~spaceCat@gateway/tor-sasl/alephzer0) (Remote host closed the connection)
2020-10-27 14:20:54 +0100 <merijn> https://gitlab.haskell.org/ghc/ghc/-/issues/17816
2020-10-27 14:21:07 +0100denisse(~spaceCat@gateway/tor-sasl/alephzer0)
2020-10-27 14:22:07 +0100 <dminuoso> merijn: Perhaps GHC releases should be tested against stackage.
2020-10-27 14:22:12 +0100 <merijn> They are
2020-10-27 14:22:17 +0100 <merijn> But once again
2020-10-27 14:22:25 +0100 <merijn> Where's the line?
2020-10-27 14:22:50 +0100 <merijn> The behaviour in that ticket is *clearly* a bug that violates the definition of TH as it is specified
2020-10-27 14:22:51 +0100 <dminuoso> 1.73% breakage
2020-10-27 14:24:02 +0100 <merijn> Is that including transitive dependencies?
2020-10-27 14:24:02 +0100mirrorbird(~psutcliff@2a00:801:42b:7891:16b1:e53f:55b2:15e1) (Read error: Connection reset by peer)
2020-10-27 14:24:15 +0100 <merijn> Because then you probably will be unable to ever fix anything
2020-10-27 14:24:32 +0100cr3(~cr3@192-222-143-195.qc.cable.ebox.net)
2020-10-27 14:24:56 +0100xerox__xerox_
2020-10-27 14:25:04 +0100 <dminuoso> Unrelatedly
2020-10-27 14:25:06 +0100 <dminuoso> Im sad now
2020-10-27 14:25:08 +0100 <dminuoso> % % Just 'a' <**> (Just 'b' <&> (,))
2020-10-27 14:25:08 +0100 <yahb> dminuoso: ; <interactive>:183:1: error: parse error on input `%'
2020-10-27 14:25:13 +0100 <dminuoso> % Just 'a' <**> (Just 'b' <&> (,))
2020-10-27 14:25:14 +0100 <yahb> dminuoso: Just ('b','a')
2020-10-27 14:25:16 +0100 <dminuoso> % Just 'a' <**> Just 'b' <&> (,)
2020-10-27 14:25:16 +0100 <yahb> dminuoso: ; <interactive>:185:15: error:; * Couldn't match type `Char' with `Char -> a'; Expected type: Maybe (Char -> a); Actual type: Maybe Char; * In the second argument of `(<**>)', namely Just 'b'; In the first argument of `(<&>)', namely Just 'a' <**> Just 'b'; In the expression: Just 'a' <**> Just 'b' <&> (,); * Relevant bindings include it :: Maybe (b -> (a, b)) (bound
2020-10-27 14:25:21 +0100 <dminuoso> Why is the precedence all wrong here? :(
2020-10-27 14:26:51 +0100vacm(~vacwm@70.23.92.191) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-10-27 14:27:14 +0100 <dminuoso> merijn: But I see what you're getting at.
2020-10-27 14:27:19 +0100 <dminuoso> I mean for bugfixes its hard
2020-10-27 14:27:25 +0100 <dminuoso> But when you *know* you're making breaking changes
2020-10-27 14:27:34 +0100 <dminuoso> Its not too much to ask for a deprecation notice one major release in advance
2020-10-27 14:27:46 +0100 <merijn> dminuoso: -Wcompat exists
2020-10-27 14:27:54 +0100 <merijn> But, sadly, not enabled by default
2020-10-27 14:28:14 +0100 <dminuoso> merijn: Does -Wcompat work with *GHC* changes?
2020-10-27 14:28:42 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2020-10-27 14:28:48 +0100 <merijn> for those added
2020-10-27 14:28:48 +0100 <dminuoso> I mean only if they receive a particular warning for it
2020-10-27 14:28:54 +0100 <dminuoso> Like, star-is-type
2020-10-27 14:30:01 +0100ggole(~ggole@2001:8003:8119:7200:b94d:2b16:8058:a9b7)
2020-10-27 14:31:05 +0100jespada(~jespada@90.254.243.98) (Ping timeout: 240 seconds)
2020-10-27 14:32:45 +0100jespada(~jespada@90.254.243.98)
2020-10-27 14:33:01 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl)
2020-10-27 14:33:15 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 260 seconds)
2020-10-27 14:33:54 +0100bitmapper(uid464869@gateway/web/irccloud.com/x-nwqswzdnuoofdofv) (Quit: Connection closed for inactivity)
2020-10-27 14:34:25 +0100knupfer(~Thunderbi@200116b82cb7c4006c9b6afffea7b391.dip.versatel-1u1.de)
2020-10-27 14:34:25 +0100knupfer(~Thunderbi@200116b82cb7c4006c9b6afffea7b391.dip.versatel-1u1.de) (Client Quit)
2020-10-27 14:34:38 +0100knupfer(~Thunderbi@mue-88-130-61-249.dsl.tropolys.de)
2020-10-27 14:36:22 +0100gothnbass(~kvirc@111.red-83-37-117.dynamicip.rima-tde.net)
2020-10-27 14:36:35 +0100 <Raito_Bezarius> Let us suppose that I'd like to define a character literal as something which is an ASCII char which is not \ or " and accept the escaped versions as char literals
2020-10-27 14:36:38 +0100mimi_vx(~mimi@tulipan.habr.nat.praha12.net)
2020-10-27 14:36:42 +0100 <Raito_Bezarius> charLiteral = satisfy (all isValidCharacter) <|> string "\̈ <|> string "̈" <?> "a character"
2020-10-27 14:36:45 +0100 <Raito_Bezarius> something like this
2020-10-27 14:36:58 +0100 <Raito_Bezarius> it would produce [Char] necessarily, right?
2020-10-27 14:37:22 +0100 <Raito_Bezarius> is it a bad idea to have a charLiteral producing [Char]? Is it easy to build stringLiteral which (++) the many charLiteral (?)
2020-10-27 14:38:34 +0100 <Raito_Bezarius> (also, it seems like that this charLiteral produces a type of (Foldable t) => m (t Char) rather than m [Char] which I can understand but I'm not sure how I can enforce the array version
2020-10-27 14:39:11 +0100vacm(~vacwm@70.23.92.191)
2020-10-27 14:39:20 +0100 <geekosaur> list, not array; and you just ive that as the type signature instead of the more general inferred one
2020-10-27 14:39:34 +0100 <geekosaur> inference always goes for the most general signature, which is not always what you want
2020-10-27 14:39:46 +0100 <geekosaur> *give that
2020-10-27 14:40:08 +0100 <Raito_Bezarius> right
2020-10-27 14:40:17 +0100 <Raito_Bezarius> what I might not understand
2020-10-27 14:40:28 +0100 <Raito_Bezarius> rather than having token of Char, I have now token of [Char]
2020-10-27 14:40:34 +0100 <Raito_Bezarius> so parseTest cannot use such a parser looks like
2020-10-27 14:40:48 +0100 <Raito_Bezarius> is there a way to keep Char token?
2020-10-27 14:41:01 +0100 <Raito_Bezarius> charLiteral
2020-10-27 14:41:04 +0100 <Raito_Bezarius> :: (MonadParsec e s m, Tokens s ~ [Char], Token s ~ [Char]) =>
2020-10-27 14:41:06 +0100 <Raito_Bezarius> m [Char]
2020-10-27 14:41:08 +0100 <Raito_Bezarius> here's the obtained type sig
2020-10-27 14:41:45 +0100 <Raito_Bezarius> what I want is Token s ~ Char
2020-10-27 14:42:15 +0100perry69420(6ee39f85@110.227.159.133)
2020-10-27 14:42:59 +0100 <geekosaur> not if it returns more than one
2020-10-27 14:43:13 +0100 <dminuoso> satisfy :: MonadParsec e s m => (Token s -> Bool) -> m (Token s)
2020-10-27 14:43:14 +0100 <geekosaur> what makes you think parseTest can't work with [Char]?
2020-10-27 14:43:44 +0100 <Raito_Bezarius> geekosaur: sorry, I meant rather that I would not be able to do parseTest myParser "a string" and would have to do parseTest myParser aListOfString
2020-10-27 14:43:53 +0100 <Raito_Bezarius> so if I do, charLiteral = many (satisfy isValidCharacter) <|> string "\̈ <|> string "̈" <?> "a character"
2020-10-27 14:44:19 +0100dmiles(dmiles@c-73-67-179-188.hsd1.wa.comcast.net) (Ping timeout: 256 seconds)
2020-10-27 14:44:45 +0100drbean(~drbean@TC210-63-209-53.static.apol.com.tw) (Ping timeout: 240 seconds)
2020-10-27 14:45:04 +0100geekosaur(82659a09@host154-009.vpn.uakron.edu) (Remote host closed the connection)
2020-10-27 14:45:07 +0100 <Raito_Bezarius> but if I do, parseTest (charLiteral :: Parser [Char]) "abc"
2020-10-27 14:45:18 +0100 <Raito_Bezarius> it fails with Couldn't match type ‘Text’ with ‘[Char]’
2020-10-27 14:45:21 +0100 <Raito_Bezarius> arising from a use of ‘charLiteral’
2020-10-27 14:46:19 +0100 <Raito_Bezarius> hm
2020-10-27 14:46:33 +0100 <Raito_Bezarius> many will give: m [a]
2020-10-27 14:46:52 +0100 <Raito_Bezarius> so many (satisfy X) should give m [Token s] right?
2020-10-27 14:47:09 +0100 <Raito_Bezarius> at the same time, string will give m (Tokens s) rather than m [Token s], I suppose?
2020-10-27 14:47:43 +0100 <Raito_Bezarius> but as, Tokens s ~ [Char] and Token s ~ Char, shouldn't it work fine?
2020-10-27 14:49:49 +0100ptrcmd(~ptrcmd@unaffiliated/petercommand) (Quit: leaving)
2020-10-27 14:49:57 +0100roconnor(~roconnor@host-23-91-186-59.dyn.295.ca) (Ping timeout: 260 seconds)
2020-10-27 14:50:22 +0100invaser(~Thunderbi@31.148.23.125) (Ping timeout: 246 seconds)
2020-10-27 14:50:56 +0100dmiles(dmiles@c-73-67-179-188.hsd1.wa.comcast.net)
2020-10-27 14:52:50 +0100ptrcmd(~ptrcmd@unaffiliated/petercommand)
2020-10-27 14:53:01 +0100invaser(~Thunderbi@31.148.23.125)
2020-10-27 14:53:06 +0100 <gothnbass> I've been looking into porting an existing Common Lisp codebase into Haskell, but it's possible I'm barking up the wrong AST. The application dynamically serialises/deserialises objects according to definitions that are stored in a database, and that cannot be known at compile-time. Is this feasible in Haskell, or am I running myself face-first into the type system?
2020-10-27 14:53:46 +0100ransom(~c4264035@2601:285:201:6720:b121:bf7e:316a:1ddf)
2020-10-27 14:55:44 +0100son0p(~son0p@181.136.122.143)
2020-10-27 14:55:46 +0100alp(~alp@2a01:e0a:58b:4920:aca7:fd95:ef08:3e24)
2020-10-27 14:56:41 +0100kish`kish
2020-10-27 14:56:58 +0100samlamamma(~user@c-8283e355.05-76-616c6b1.bbcust.telenor.se)
2020-10-27 14:56:59 +0100justanotheruser(~justanoth@unaffiliated/justanotheruser) (Ping timeout: 265 seconds)
2020-10-27 14:57:57 +0100Amras(~Amras@unaffiliated/amras0000)
2020-10-27 14:58:21 +0100justanotheruser(~justanoth@unaffiliated/justanotheruser)
2020-10-27 14:58:40 +0100 <dminuoso> gothnbass: That's absolutely feasible.
2020-10-27 14:58:50 +0100knupfer(~Thunderbi@mue-88-130-61-249.dsl.tropolys.de) (Quit: knupfer)
2020-10-27 14:59:33 +0100 <gothnbass> That's a relief. There's a lot to love about CL, but I got a taste of the type-system's assurances in Haskell, and I want more :)
2020-10-27 15:00:45 +0100 <dminuoso> gothnbass: What do these definitions look like?
2020-10-27 15:01:19 +0100damianfral3(~damianfra@174.red-37-13-187.dynamicip.rima-tde.net) (Ping timeout: 256 seconds)
2020-10-27 15:02:15 +0100 <gothnbass> They're stored in a Neo4j database, so a JSON object is pretty much their natural representation. I'd just use a Map, but they're heterogeneous.
2020-10-27 15:04:07 +0100 <dminuoso> gothnbass: If they're already in JSON, you could keep that as JSON directly?
2020-10-27 15:04:09 +0100invaser(~Thunderbi@31.148.23.125) (Remote host closed the connection)
2020-10-27 15:04:31 +0100 <dminuoso> Well, `Value` for instance
2020-10-27 15:04:32 +0100PlasmaStrike(~mattplasm@38.73.141.198) (Remote host closed the connection)
2020-10-27 15:04:38 +0100 <gothnbass> To be slightly less vague, the Haskell representation of one of them looks like `data Tag = Tag { uid :: String , createddate :: Int , original_uid :: String , description :: Maybe String } deriving (Show)`
2020-10-27 15:05:48 +0100akegalj(~akegalj@93-142-98-67.adsl.net.t-com.hr) (Quit: Lost terminal)
2020-10-27 15:06:06 +0100roconnor(~roconnor@host-192.252-162-14.dyn.295.ca)
2020-10-27 15:06:12 +0100PlasmaStrike(~mattplasm@38.73.141.198)
2020-10-27 15:06:57 +0100knupfer(~Thunderbi@200116b82cb7c4008d74fd1dd144f3b4.dip.versatel-1u1.de)
2020-10-27 15:08:46 +0100 <gothnbass> It's a 2-layer app, where the layer closes to the DB is basically an engine that dynamically constructs a REST API according to whatever the DB says is valid. I started with porting the webapp first, which receives JSON objects, and is expected to deal with them on the fly. It _can_ fetch the schema via the API, but of course that's also a runtime operation.
2020-10-27 15:10:27 +0100 <gothnbass> But keeping them in JSON is an interesting idea. It hadn't occurred to me to parse them that far and no further. Thanks for the pointer!
2020-10-27 15:10:53 +0100dbmikus(~dbmikus@cpe-76-167-86-219.natsow.res.rr.com)
2020-10-27 15:11:08 +0100 <dminuoso> gothnbass: JSON/Value might not be an ideal format though.
2020-10-27 15:11:20 +0100acarrico(~acarrico@dhcp-68-142-39-249.greenmountainaccess.net) (Ping timeout: 258 seconds)
2020-10-27 15:11:31 +0100Chi1thangoo(~Chi1thang@87.112.60.168)
2020-10-27 15:13:00 +0100 <dminuoso> gothnbass: Maybe I misunderstood. Are the data in JSON, or the definitions?
2020-10-27 15:13:02 +0100ddellacosta(~dd@86.106.121.168)
2020-10-27 15:13:23 +0100 <dminuoso> Also, can these things be nested? Can there be recursion?
2020-10-27 15:13:35 +0100 <dminuoso> (That is, can the data be cyclic)
2020-10-27 15:15:25 +0100dbmikus(~dbmikus@cpe-76-167-86-219.natsow.res.rr.com) (Ping timeout: 240 seconds)
2020-10-27 15:15:50 +0100 <gothnbass> dminuoso: JSON's just a representation format, but is a good fit. Absolutely they can be nested and there can be recursion; it's part of the idea, so you can chase assocations from one node to another.
2020-10-27 15:17:33 +0100invaser(~Thunderbi@31.148.23.125)
2020-10-27 15:18:09 +0100 <gothnbass> dminuoso: Because of this, I'm using JSON as the format for returning data from the API, as well as for representing the schema when a client calls on that API to find out what's in there. What I'm actually trying to port right now is the webapp on top of the API, which receives JSON and constructs HTML accordingly.
2020-10-27 15:18:48 +0100 <gothnbass> I'm basically putting a relational-inspired schema on top of a graph database, because you can't put one in there directly. This is the most practical (least impractical?) way I found of doing that.
2020-10-27 15:19:13 +0100PlasmaStrike(~mattplasm@38.73.141.198) (Ping timeout: 265 seconds)
2020-10-27 15:19:42 +0100 <dminuoso> It's mildly amusing, that people go to great length to ignore 50 years of research in relational databases, put up unstructured databases, and then there's folks like you putting effort into figuring out how to specify a schema for that.
2020-10-27 15:19:55 +0100 <gothnbass> I know, right? :)
2020-10-27 15:20:30 +0100 <Raito_Bezarius> :D
2020-10-27 15:20:40 +0100texasmynsted(~texasmyns@99.96.221.112)
2020-10-27 15:20:43 +0100acarrico(~acarrico@dhcp-68-142-39-249.greenmountainaccess.net)
2020-10-27 15:21:19 +0100 <dminuoso> gothnbass: My first instinct, is to not think about JSON here.
2020-10-27 15:21:22 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2020-10-27 15:21:29 +0100 <gothnbass> I love relational databases, and have since I first administered a production one in '97, but there are problem-spaces for which they're just not a good fit. Graph DBs are a great fit for this space, but I've seen the mess that can result when the data definitions are scattered through the codebase, and nobody actually defined a clear data model.
2020-10-27 15:21:31 +0100 <dminuoso> JSON seems like a bad fit for a few reasons
2020-10-27 15:21:44 +0100cr3(~cr3@192-222-143-195.qc.cable.ebox.net) (Ping timeout: 256 seconds)
2020-10-27 15:21:49 +0100 <dminuoso> If you want a graph, use proper graph data types.
2020-10-27 15:22:07 +0100cr3(~cr3@192-222-143-195.qc.cable.ebox.net)
2020-10-27 15:22:18 +0100ddellacosta(~dd@86.106.121.168) (Ping timeout: 260 seconds)
2020-10-27 15:22:36 +0100ddellacosta(~dd@86.106.121.168)
2020-10-27 15:22:41 +0100 <dminuoso> gothnbass: So far, any excuse I've heard for unstructured databases is just "We are too lazy/unprincipled/messy"
2020-10-27 15:23:03 +0100howdoi(uid224@gateway/web/irccloud.com/x-vkinnmkhoknarggj)
2020-10-27 15:23:24 +0100 <gothnbass> dminuoso: also, "but properly updating the schema is haaard!" Well, yes, it often is.
2020-10-27 15:23:49 +0100FreeBirdLjj(~freebirdl@101.228.42.108)
2020-10-27 15:23:49 +0100 <dminuoso> Yes. And all the engineering complexity you put into managing the schema *pales* in comparison to all the pain and effort you spend in working with completely unstructured data.
2020-10-27 15:24:29 +0100 <gothnbass> Hence me wanting to put a structure onto it, complete with constraints on what kind of relationships you can make between what kinds of nodes.
2020-10-27 15:24:39 +0100 <dminuoso> And it makes testing so much harder, data retrieval becomes complex, hard to optimize for, and very difficult to analyze with formal methods
2020-10-27 15:24:45 +0100texasmynsted(~texasmyns@99.96.221.112) (Ping timeout: 240 seconds)
2020-10-27 15:24:56 +0100 <dminuoso> At any rate
2020-10-27 15:25:17 +0100 <dminuoso> I have not solved that kind of problem, but I see absolutely no reason why haskell wouldn't be a prime candidate for this type of problem.
2020-10-27 15:25:51 +0100 <gothnbass> Well, I already solved it in CL, so I'd hope it can do it :)
2020-10-27 15:25:52 +0100 <dminuoso> Presumably you're doing something similar to OpenAPI?
2020-10-27 15:26:37 +0100dbmikus(~dbmikus@cpe-76-167-86-219.natsow.res.rr.com)
2020-10-27 15:27:36 +0100 <gothnbass> Will be, yes. At the moment the schema API basically returns a dump into JSON, which has been enough for debugging purposes. I plan to turn that into something OpenAPI-compliant.
2020-10-27 15:30:19 +0100texasmynsted(~texasmyns@99.96.221.112)
2020-10-27 15:31:47 +0100dbmikus(~dbmikus@cpe-76-167-86-219.natsow.res.rr.com) (Ping timeout: 265 seconds)
2020-10-27 15:31:55 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2020-10-27 15:34:00 +0100Stanley00(~stanley00@unaffiliated/stanley00)
2020-10-27 15:34:25 +0100texasmynsted(~texasmyns@99.96.221.112) (Ping timeout: 240 seconds)
2020-10-27 15:35:18 +0100bitmapper(uid464869@gateway/web/irccloud.com/x-plvaooheqznjbhqg)
2020-10-27 15:35:30 +0100_vaibhavingale_(~Adium@203.188.228.9)
2020-10-27 15:38:34 +0100Stanley00(~stanley00@unaffiliated/stanley00) (Ping timeout: 256 seconds)
2020-10-27 15:38:57 +0100Kaivo(~Kaivo@104-200-86-99.mc.derytele.com) (Ping timeout: 260 seconds)
2020-10-27 15:40:58 +0100Kaivo(~Kaivo@ec2-15-222-231-32.ca-central-1.compute.amazonaws.com)
2020-10-27 15:41:17 +0100PlasmaStrike(~mattplasm@38.73.141.198)
2020-10-27 15:45:30 +0100debugloop(~danieln@unaffiliated/debugloop) (Quit: WeeChat 2.9)
2020-10-27 15:50:13 +0100ransom(~c4264035@2601:285:201:6720:b121:bf7e:316a:1ddf) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-10-27 15:54:46 +0100PlasmaStrike(~mattplasm@38.73.141.198) (Ping timeout: 272 seconds)
2020-10-27 15:55:03 +0100bartemius(~bartemius@109-252-20-20.nat.spd-mgts.ru) (Remote host closed the connection)
2020-10-27 15:56:19 +0100cpape(~user@static.180.18.203.116.clients.your-server.de) (Remote host closed the connection)
2020-10-27 15:56:30 +0100cpape(~user@static.180.18.203.116.clients.your-server.de)
2020-10-27 15:57:33 +0100 <dsal> Data.Aeson.Lens is pretty great for this kind of thing.
2020-10-27 15:57:45 +0100idhugo(~idhugo@users-1190.st.net.au.dk) (Ping timeout: 240 seconds)
2020-10-27 15:58:28 +0100cantstanya(~chatting@gateway/tor-sasl/cantstanya) (Remote host closed the connection)
2020-10-27 15:59:38 +0100 <gothnbass> OK. Lens is a feature I've heard about, but haven't yet gotten to exploring.
2020-10-27 16:00:01 +0100Criggie1(~Criggie@154.13.1.56) ()
2020-10-27 16:00:45 +0100cantstanya(~chatting@gateway/tor-sasl/cantstanya)
2020-10-27 16:01:31 +0100clockboi(~clockboi@p200300ef8f0a9b00f86fc02b1cd4ca0a.dip0.t-ipconnect.de)
2020-10-27 16:01:54 +0100mirrorbird(~psutcliff@2a00:801:42b:7891:16b1:e53f:55b2:15e1)
2020-10-27 16:02:31 +0100Rembane(~Rembane@li346-36.members.linode.com) (Ping timeout: 256 seconds)
2020-10-27 16:02:39 +0100Rembane(~Rembane@li346-36.members.linode.com)
2020-10-27 16:02:51 +0100kritzefitz(~kritzefit@fw-front.credativ.com) (Ping timeout: 260 seconds)
2020-10-27 16:03:43 +0100cr3(~cr3@192-222-143-195.qc.cable.ebox.net) (Ping timeout: 260 seconds)
2020-10-27 16:05:24 +0100dme2(~user@c-24-1-191-153.hsd1.il.comcast.net)
2020-10-27 16:05:40 +0100damianfral3(~damianfra@174.red-37-13-187.dynamicip.rima-tde.net)
2020-10-27 16:05:46 +0100 <__monty__> Uhm, why does GHC 8.10 come with an older version of text than 8.4?
2020-10-27 16:06:25 +0100 <Uniaika> I think it's a plain mistake
2020-10-27 16:06:33 +0100 <Uniaika> __monty__: what's the status with 8.10.1?
2020-10-27 16:06:59 +0100 <__monty__> Uniaika: Same for both 1.2.3.2.
2020-10-27 16:07:19 +0100 <__monty__> And the 8.8 series came with 1.2.4.0
2020-10-27 16:10:02 +0100elfets(~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de)
2020-10-27 16:10:26 +0100Tops2(~Tobias@dyndsl-095-033-025-205.ewe-ip-backbone.de)
2020-10-27 16:10:41 +0100 <Uniaika> __monty__: shit, indeed
2020-10-27 16:10:42 +0100chaosmasttter(~chaosmast@p200300c4a73c4601c5635e0548f7339d.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
2020-10-27 16:11:16 +0100polyrain(~polyrain@2001:8003:e501:6901:caf:e594:a7fb:67e) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-10-27 16:13:41 +0100Kaivo(~Kaivo@ec2-15-222-231-32.ca-central-1.compute.amazonaws.com) (Quit: WeeChat 2.9)
2020-10-27 16:14:46 +0100Kaivo(~Kaivo@ec2-15-222-231-32.ca-central-1.compute.amazonaws.com)
2020-10-27 16:16:28 +0100cfricke(~cfricke@unaffiliated/cfricke) (Quit: WeeChat 2.9)
2020-10-27 16:17:35 +0100toorevitimirp(~tooreviti@117.182.180.36) (Remote host closed the connection)
2020-10-27 16:17:49 +0100 <Uniaika> __monty__: 8.10.1 should have indeed bundled 1.2.4.0 https://gitlab.haskell.org/ghc/ghc/-/issues/17214
2020-10-27 16:18:12 +0100invaser(~Thunderbi@31.148.23.125) (Ping timeout: 272 seconds)
2020-10-27 16:18:23 +0100SanchayanM(~Sanchayan@122.167.95.166) (Quit: leaving)
2020-10-27 16:19:32 +0100britva(~britva@31-10-157-156.cgn.dynamic.upc.ch) (Quit: This computer has gone to sleep)
2020-10-27 16:19:48 +0100 <yushyin> https://github.com/haskell/text/issues/279
2020-10-27 16:21:21 +0100jedi1(~jedi@185.204.1.185)
2020-10-27 16:22:28 +0100hackagebyline 1.1.0.0 - Library for creating command-line interfaces (colors, menus, etc.) https://hackage.haskell.org/package/byline-1.1.0.0 (PeterJones)
2020-10-27 16:22:46 +0100jonathanx(~jonathan@dyn-8-sc.cdg.chalmers.se) (Remote host closed the connection)
2020-10-27 16:22:50 +0100 <merijn> __monty__: Due to a miscoordination fuck up
2020-10-27 16:22:57 +0100 <merijn> __monty__: THe older text is intentional (sadly)
2020-10-27 16:23:07 +0100acidjnk_new(~acidjnk@p200300d0c7237845ecd50ba376a38a54.dip0.t-ipconnect.de)
2020-10-27 16:23:31 +0100 <monsterchrom> Data is always structured. Even the most ardent user of "everything is string" has a much-more-rigorously-structured-than-string model. "unstructured" means there is a structure in someone's mind but they are too smug to spell it out.
2020-10-27 16:24:01 +0100 <merijn> __monty__: https://github.com/haskell/text/issues/273
2020-10-27 16:24:18 +0100 <monsterchrom> Err nevermind, late by an hour.
2020-10-27 16:30:41 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
2020-10-27 16:30:49 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 264 seconds)
2020-10-27 16:30:52 +0100bliminse(~bliminse@host109-158-129-241.range109-158.btcentralplus.com) (Ping timeout: 260 seconds)
2020-10-27 16:30:59 +0100teardown(~user@unaffiliated/mrush)
2020-10-27 16:31:00 +0100 <gothnbass> No matter: I agree with your point. There's always a structure somewhere in there; it's just a question of how it's communicated.
2020-10-27 16:31:01 +0100teardown(~user@unaffiliated/mrush) (Client Quit)
2020-10-27 16:31:46 +0100bliminse(~bliminse@host109-158-129-241.range109-158.btcentralplus.com)
2020-10-27 16:31:52 +0100cr3(~cr3@192-222-143-195.qc.cable.ebox.net)
2020-10-27 16:32:19 +0100 <gothnbass> Well, also whether it emanates from the minds of humans or Great Old Ones. I swear some structures aren't just non-relational, but outright non-Euclidean.
2020-10-27 16:33:14 +0100teardown(~user@unaffiliated/mrush)
2020-10-27 16:36:13 +0100ezzieyguywuf(~Unknown@unaffiliated/ezzieyguywuf) (Ping timeout: 264 seconds)
2020-10-27 16:38:06 +0100texasmynsted(~texasmyns@99.96.221.112)
2020-10-27 16:40:26 +0100ezzieyguywuf(~Unknown@unaffiliated/ezzieyguywuf)
2020-10-27 16:42:20 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2020-10-27 16:45:28 +0100whald_(~trem@2a02:810a:8100:11a6:719f:1c0f:efe6:863b) (Remote host closed the connection)
2020-10-27 16:46:14 +0100texasmynsted(~texasmyns@99.96.221.112) (Remote host closed the connection)
2020-10-27 16:49:58 +0100hnOsmium0001(uid453710@gateway/web/irccloud.com/x-hxonwkkgkhrxlnbv)
2020-10-27 16:52:09 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
2020-10-27 16:54:43 +0100ransom(~c4264035@c-73-243-2-10.hsd1.co.comcast.net)
2020-10-27 16:57:17 +0100p8m(p8m@gateway/vpn/protonvpn/p8m) (Quit: birdd)
2020-10-27 16:57:48 +0100p8m(p8m@gateway/vpn/protonvpn/p8m)
2020-10-27 17:00:18 +0100knupfer(~Thunderbi@200116b82cb7c4008d74fd1dd144f3b4.dip.versatel-1u1.de) (Remote host closed the connection)
2020-10-27 17:00:32 +0100knupfer(~Thunderbi@200116b82cb7c400d8c9d953179e22c7.dip.versatel-1u1.de)
2020-10-27 17:00:48 +0100motherfsck(~motherfsc@unaffiliated/motherfsck)
2020-10-27 17:01:01 +0100kritzefitz(~kritzefit@212.86.56.80)
2020-10-27 17:01:09 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2020-10-27 17:01:45 +0100damianfral3(~damianfra@174.red-37-13-187.dynamicip.rima-tde.net) (Ping timeout: 240 seconds)
2020-10-27 17:03:26 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl) (Remote host closed the connection)
2020-10-27 17:03:39 +0100Abletai(~Lautris@p5df28535.dip0.t-ipconnect.de)
2020-10-27 17:04:34 +0100 <Raito_Bezarius> is there a Text version of Read?
2020-10-27 17:04:36 +0100 <Raito_Bezarius> read *
2020-10-27 17:05:15 +0100Abletai(~Lautris@p5df28535.dip0.t-ipconnect.de) (Client Quit)
2020-10-27 17:05:42 +0100Chi1thangoo(~Chi1thang@87.112.60.168) (Ping timeout: 272 seconds)
2020-10-27 17:06:18 +0100p-core(~Thunderbi@2001:718:1e03:5128:2ab7:7f35:48a1:8515)
2020-10-27 17:07:21 +0100kritzefitz(~kritzefit@212.86.56.80) (Remote host closed the connection)
2020-10-27 17:07:28 +0100hackagehttp-client-openssl 0.3.2.0 - http-client backend using the OpenSSL library. https://hackage.haskell.org/package/http-client-openssl-0.3.2.0 (MichaelSnoyman)
2020-10-27 17:08:00 +0100Rudd0(~Rudd0@185.189.115.108)
2020-10-27 17:08:59 +0100kuribas(~user@ptr-25vy0i99c8o0gmravvh.18120a2.ip6.access.telenet.be)
2020-10-27 17:09:09 +0100kritzefitz(~kritzefit@212.86.56.80)
2020-10-27 17:09:16 +0100invaser(~Thunderbi@31.148.23.125)
2020-10-27 17:10:45 +0100 <T0pH4t> so should this not be legal, I get that x is a rigid type if I try to invoke it with an instance of Show, but it should be legal... `data ShowW = forall x. Show x => ShowW (x -> String)`
2020-10-27 17:10:52 +0100 <T0pH4t> i feel like i'm screwing up the type sig
2020-10-27 17:11:38 +0100 <tomsmeding> T0pH4t: what is your intention with that data type?
2020-10-27 17:12:07 +0100 <T0pH4t> its a simple example, but essentially `case w of ShowW f -> f (8 :: Int)`
2020-10-27 17:12:11 +0100 <T0pH4t> for example ^
2020-10-27 17:12:27 +0100 <tomsmeding> as it's written, that 'x' in 'forall x' is an existential variable
2020-10-27 17:12:29 +0100StoneToad_(~StoneToad@199-167-119-149.ppp.storm.ca)
2020-10-27 17:12:40 +0100Sgeo(~Sgeo@ool-18b982ad.dyn.optonline.net)
2020-10-27 17:12:46 +0100 <tomsmeding> meaning that if you have a value ShowW f, then there _exists_ an x such that f is of type x -> String
2020-10-27 17:13:17 +0100 <tomsmeding> since you can't know whether that x is Int, that application f (8 :: Int) won't typecheck
2020-10-27 17:13:24 +0100geowiesnot(~user@87-89-181-157.abo.bbox.fr)
2020-10-27 17:13:30 +0100 <T0pH4t> well x is an instance of Show..
2020-10-27 17:13:33 +0100nitrix(~nitrix@haskell/developer/nitrix) (Quit: ZNC 1.8.2 - https://znc.in)
2020-10-27 17:13:34 +0100geekosaur(82659a09@host154-009.vpn.uakron.edu)
2020-10-27 17:13:38 +0100 <tomsmeding> sure, but you don't know which one
2020-10-27 17:13:42 +0100 <T0pH4t> the function should not care about x
2020-10-27 17:13:43 +0100 <tomsmeding> might be Float
2020-10-27 17:13:49 +0100 <T0pH4t> could be, should not care
2020-10-27 17:13:55 +0100 <T0pH4t> all it cares is that x has show
2020-10-27 17:13:57 +0100 <tomsmeding> but you're applying it to an Int!
2020-10-27 17:14:13 +0100 <T0pH4t> right, but x is a Show instance
2020-10-27 17:14:22 +0100 <tomsmeding> perhaps you wanted your declaration to mean: for _any_ x that is Show, f is a function that takes it
2020-10-27 17:14:29 +0100 <tomsmeding> is that accurate?
2020-10-27 17:14:30 +0100 <T0pH4t> yes
2020-10-27 17:14:33 +0100 <tomsmeding> right
2020-10-27 17:14:47 +0100 <T0pH4t> which is why i think my type sig is wrong :/
2020-10-27 17:15:16 +0100 <tomsmeding> data ShowW = ShowW (forall x. Show x => x -> String)
2020-10-27 17:15:21 +0100werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net)
2020-10-27 17:15:22 +0100 <tomsmeding> now x is universally quantified
2020-10-27 17:15:31 +0100damianfral3(~damianfra@174.red-37-13-187.dynamicip.rima-tde.net)
2020-10-27 17:15:38 +0100 <tomsmeding> so the _user_ of the ShowW can choose x
2020-10-27 17:15:39 +0100StoneToad(~StoneToad@199-167-119-186.ppp.storm.ca) (Ping timeout: 260 seconds)
2020-10-27 17:15:47 +0100 <T0pH4t> that was it! thx tomsmeding.
2020-10-27 17:15:58 +0100nitrix(~nitrix@haskell/developer/nitrix)
2020-10-27 17:15:59 +0100dmwitch(~dmwit@pool-108-18-228-100.washdc.fios.verizon.net) (Read error: Connection reset by peer)
2020-10-27 17:16:04 +0100 <tomsmeding> as you wrote it, x was existentially quantified, so the _producer_ of the ShowW chooses x, and the caller has no idea which one was chosen
2020-10-27 17:16:16 +0100 <T0pH4t> ok, make sense
2020-10-27 17:16:37 +0100 <T0pH4t> odd that existentially would compile tho
2020-10-27 17:16:43 +0100 <T0pH4t> i don't see how that could ever resolve
2020-10-27 17:17:01 +0100dmwit(~dmwit@pool-108-18-228-100.washdc.fios.verizon.net)
2020-10-27 17:17:06 +0100 <tomsmeding> well, consider the following type
2020-10-27 17:17:31 +0100 <tomsmeding> data ToShow = forall x. Show x => ToShow (Int -> x)
2020-10-27 17:17:54 +0100 <tomsmeding> then as the producer of a ToShow, you can insert any function from Int to something that implements Show
2020-10-27 17:18:13 +0100bartemius(~bartemius@109-252-20-20.nat.spd-mgts.ru)
2020-10-27 17:18:13 +0100 <tomsmeding> as the user of a ToShow, you get a function Int -> x, where you have no idea what x is except that it implements Show
2020-10-27 17:18:27 +0100 <tomsmeding> see: same situation as in your datatype, but suddenly you can actually use this
2020-10-27 17:18:49 +0100 <tomsmeding> because if you have a ToShow f, then you can do 'show (f 42)', and you'll get a String :)
2020-10-27 17:18:51 +0100 <T0pH4t> oh so it inverses
2020-10-27 17:18:53 +0100 <T0pH4t> interesting
2020-10-27 17:19:20 +0100 <T0pH4t> very cool, good to know. Thx!
2020-10-27 17:19:34 +0100 <tomsmeding> https://wiki.haskell.org/Existential_type
2020-10-27 17:19:38 +0100 <tomsmeding> this may or may not be a good explanation
2020-10-27 17:20:09 +0100 <T0pH4t> haha as with many haskell wiki pages lol
2020-10-27 17:20:40 +0100 <tomsmeding> do you know the use of GADTs for expression AST's?
2020-10-27 17:20:48 +0100 <tomsmeding> (the typical motivating examples for GADTs)
2020-10-27 17:21:21 +0100gehmehgeh(~ircuser1@gateway/tor-sasl/gehmehgeh) (Remote host closed the connection)
2020-10-27 17:21:24 +0100gxt(~gxt@gateway/tor-sasl/gxt) (Remote host closed the connection)
2020-10-27 17:21:34 +0100 <tomsmeding> like this one https://en.wikibooks.org/wiki/Haskell/GADT#GADTs
2020-10-27 17:22:04 +0100gxt(~gxt@gateway/tor-sasl/gxt)
2020-10-27 17:22:08 +0100 <tomsmeding> sometimes it's useful to define the following: data SomeExpr = forall a. SomeExpr (Expr a)
2020-10-27 17:22:34 +0100 <T0pH4t> yeah gdats i use fairly often
2020-10-27 17:22:44 +0100 <T0pH4t> gadts*
2020-10-27 17:22:55 +0100wraithm(~wraithm@unaffiliated/wraithm) (Excess Flood)
2020-10-27 17:22:59 +0100 <tomsmeding> e.g. a parser function might have type signature: String -> Either ErrorMsg SomeExpr
2020-10-27 17:23:10 +0100conal(~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
2020-10-27 17:23:20 +0100 <T0pH4t> right, infact i'm buidling a parser right now ;)
2020-10-27 17:23:37 +0100 <tomsmeding> existentials are quite useful in some circumstances :)
2020-10-27 17:24:12 +0100 <tomsmeding> the syntax where the exact placement of the 'forall' determines whether it's universal or existential can be very counter-intuitive however
2020-10-27 17:24:15 +0100 <T0pH4t> for example `data Parser a = PNum (forall x. (GTLType x, Num x) => I.Expression x -> I.GTL a)`
2020-10-27 17:24:18 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl)
2020-10-27 17:24:33 +0100 <tomsmeding> yeah there 'x' is universal
2020-10-27 17:24:43 +0100 <tomsmeding> unsure what GTL is though :)
2020-10-27 17:24:57 +0100 <T0pH4t> yeah, my own monad for the language
2020-10-27 17:25:01 +0100wraithm(~wraithm@unaffiliated/wraithm)
2020-10-27 17:25:25 +0100 <T0pH4t> but then you can have `parseToken :: Token -> Parser a -> I.GTL a`
2020-10-27 17:25:34 +0100 <T0pH4t> such that you can do some really cool stuff
2020-10-27 17:26:57 +0100chele(~chele@ip5b416ea2.dynamic.kabel-deutschland.de) (Quit: Leaving)
2020-10-27 17:26:57 +0100conal(~conal@64.71.133.70)
2020-10-27 17:27:34 +0100dbmikus(~dbmikus@cpe-76-167-86-219.natsow.res.rr.com)
2020-10-27 17:27:47 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 265 seconds)
2020-10-27 17:29:46 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 272 seconds)
2020-10-27 17:30:11 +0100teardown(~user@unaffiliated/mrush) ()
2020-10-27 17:30:12 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2020-10-27 17:30:21 +0100wroathe(~wroathe@c-73-24-27-54.hsd1.mn.comcast.net)
2020-10-27 17:30:52 +0100wroathe(~wroathe@c-73-24-27-54.hsd1.mn.comcast.net) (Client Quit)
2020-10-27 17:30:58 +0100taurux(~taurux@net-93-151-203-8.cust.vodafonedsl.it) (Quit: ZNC 1.7.5 - https://znc.in)
2020-10-27 17:31:10 +0100wroathe(~wroathe@c-73-24-27-54.hsd1.mn.comcast.net)
2020-10-27 17:31:35 +0100teardown(~user@unaffiliated/mrush)
2020-10-27 17:34:16 +0100conal(~conal@64.71.133.70) (Read error: Connection reset by peer)
2020-10-27 17:34:58 +0100Stanley00(~stanley00@unaffiliated/stanley00)
2020-10-27 17:36:40 +0100 <T0pH4t> so apparently this doesn't work :/ `parseToken t1 (PNum pure) >>= <blah>` assuming t1 contains an instance of Num such that Parser can be invoked.
2020-10-27 17:36:57 +0100Varis(~Tadas@unaffiliated/varis) (Remote host closed the connection)
2020-10-27 17:37:42 +0100christo(~chris@81.96.113.213)
2020-10-27 17:38:40 +0100britva(~britva@31-10-157-156.cgn.dynamic.upc.ch)
2020-10-27 17:38:49 +0100conal(~conal@64.71.133.70)
2020-10-27 17:39:41 +0100Stanley00(~stanley00@unaffiliated/stanley00) (Ping timeout: 258 seconds)
2020-10-27 17:41:45 +0100cr3(~cr3@192-222-143-195.qc.cable.ebox.net) (Ping timeout: 240 seconds)
2020-10-27 17:41:48 +0100Varis(~Tadas@unaffiliated/varis)
2020-10-27 17:42:34 +0100teardown(~user@unaffiliated/mrush) (Quit: leaving)
2020-10-27 17:44:14 +0100Narinas(~Narinas@189.223.113.190.dsl.dyn.telnor.net)
2020-10-27 17:44:47 +0100dequbed(~dequbed@yanduxian.paranoidlabs.org) (Read error: Connection reset by peer)
2020-10-27 17:46:47 +0100Narinas(~Narinas@189.223.113.190.dsl.dyn.telnor.net) (Client Quit)
2020-10-27 17:48:22 +0100thir(~thir@p200300f27f0b7e004c18ab60065ea01b.dip0.t-ipconnect.de)
2020-10-27 17:49:53 +0100obihann(~jhann@156.34.160.69) (Ping timeout: 260 seconds)
2020-10-27 17:50:15 +0100obihann(~jhann@156.34.160.69)
2020-10-27 17:50:27 +0100acidjnk_new(~acidjnk@p200300d0c7237845ecd50ba376a38a54.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
2020-10-27 17:50:49 +0100 <T0pH4t> tomsmending: is there a way to get both univeral and existential?
2020-10-27 17:51:25 +0100 <T0pH4t> ie the producer sets a and invoke set x, `data Parser a where PNum :: (forall x. (GTLType x, Num x) => (I.Expression x -> I.GTL a)) -> Parser a`
2020-10-27 17:52:42 +0100nlhowell(~nlhowell@don28-11.ln.rinet.ru)
2020-10-27 17:52:47 +0100thir(~thir@p200300f27f0b7e004c18ab60065ea01b.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
2020-10-27 17:55:51 +0100idhugo(~idhugo@185.45.22.133)
2020-10-27 17:56:25 +0100samlamamma(~user@c-8283e355.05-76-616c6b1.bbcust.telenor.se) (Remote host closed the connection)
2020-10-27 17:56:55 +0100 <monsterchrom> If you mean nesting and/or alternating, you can always do that, but you always have to define one more type for each quantifier.
2020-10-27 17:57:03 +0100gehmehgeh(~ircuser1@gateway/tor-sasl/gehmehgeh)
2020-10-27 17:58:11 +0100nitrix(~nitrix@haskell/developer/nitrix) (Quit: ZNC 1.8.2 - https://znc.in)
2020-10-27 17:58:26 +0100solonarv(~solonarv@astrasbourg-653-1-117-122.w90-33.abo.wanadoo.fr)
2020-10-27 17:58:31 +0100nitrix(~nitrix@haskell/developer/nitrix)
2020-10-27 18:01:49 +0100 <T0pH4t> mm not sure i get ur meaning monsterchrom, I'm basically want the producer to set the output type based on a consume setting the input type.
2020-10-27 18:02:01 +0100 <T0pH4t> so in theory producer has context to chose how to convert w/e the consumer gives it
2020-10-27 18:03:47 +0100britva(~britva@31-10-157-156.cgn.dynamic.upc.ch) (Quit: This computer has gone to sleep)
2020-10-27 18:05:25 +0100justsomeguy(~justsomeg@unaffiliated/--/x-3805311) (Ping timeout: 240 seconds)
2020-10-27 18:05:35 +0100nick__(~nick@pool-71-184-143-249.bstnma.fios.verizon.net)
2020-10-27 18:06:03 +0100nick__(~nick@pool-71-184-143-249.bstnma.fios.verizon.net) (Remote host closed the connection)
2020-10-27 18:08:20 +0100DataComputist(~lumeng@static-50-43-26-251.bvtn.or.frontiernet.net) (Quit: Leaving...)
2020-10-27 18:08:29 +0100 <tomsmeding> T0pH4t: can you write your desired datatype using 'forall' and some hypothetical construct 'exists'?
2020-10-27 18:08:51 +0100thblt(~thblt@unaffiliated/thblt)
2020-10-27 18:08:56 +0100 <monsterchrom> Oh then it's vanilla polymorphic function. For example, reverse :: [a] -> [a] means the caller decides that the input list should be [Int], so reverse spits out [Int] too.
2020-10-27 18:09:29 +0100cr3(~cr3@192-222-143-195.qc.cable.ebox.net)
2020-10-27 18:09:46 +0100christo(~chris@81.96.113.213) (Remote host closed the connection)
2020-10-27 18:10:20 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2020-10-27 18:10:58 +0100 <nlhowell> I am trying to write a typeclass instance for Compose F G where F and G are functors; is there any way I can avoid wrapping arguments with Compose { getCompose = ... } ?
2020-10-27 18:11:10 +0100 <nlhowell> (without going point-free)
2020-10-27 18:11:33 +0100 <T0pH4t> so evectively that parser example a few lines up. But actually even what i suggest won't work in the larger context since my Num types can't be guaranteed :/ So for now don't worry about it
2020-10-27 18:11:37 +0100 <hyperisco> nlhowell, no
2020-10-27 18:11:40 +0100DataComputist(~lumeng@static-50-43-26-251.bvtn.or.frontiernet.net)
2020-10-27 18:11:54 +0100 <hyperisco> nlhowell, you don't have to use record syntax though
2020-10-27 18:11:56 +0100 <T0pH4t> tomsmending: thx for now!
2020-10-27 18:12:27 +0100 <thblt> I have a function that produces multiple named files (a compiler of sorts), that I'd rather not write directly in IO, but I'm not sure of an idiomatic way to type this. I was thinking of `type Compiler = Layout -> [(FilePath, String)]`. Does it sound reasonable?
2020-10-27 18:12:43 +0100 <nlhowell> hyperisco: oh? what can i use instead? I think Compose is defined using record syntax
2020-10-27 18:13:25 +0100 <hyperisco> nlhowell, it doesn't matter if it is defined that way, there is still the constructor named Compose
2020-10-27 18:13:46 +0100 <nlhowell> ah, just "Compose x"
2020-10-27 18:13:48 +0100 <nlhowell> thanks!
2020-10-27 18:13:56 +0100 <hyperisco> nlhowell, np
2020-10-27 18:13:59 +0100 <nlhowell> that's at least a lot less typing :)
2020-10-27 18:14:22 +0100 <hyperisco> newtype wrapping and unwrapping is a struggle
2020-10-27 18:15:01 +0100 <nlhowell> i was hoping for some extension that does some auto-coerce or something
2020-10-27 18:15:36 +0100 <nlhowell> but avoiding the record syntax with the wordy getCompose= is more than half the battle
2020-10-27 18:17:04 +0100kuribas(~user@ptr-25vy0i99c8o0gmravvh.18120a2.ip6.access.telenet.be) (Quit: ERC (IRC client for Emacs 26.3))
2020-10-27 18:19:35 +0100dcoutts_(~duncan@33.14.75.194.dyn.plus.net) (Ping timeout: 260 seconds)
2020-10-27 18:23:08 +0100LKoen(~LKoen@lstlambert-657-1-123-43.w92-154.abo.wanadoo.fr)
2020-10-27 18:26:06 +0100dequbed(~dequbed@2001:bc8:3f24:100::1)
2020-10-27 18:26:53 +0100ubert(~Thunderbi@2a02:8109:9880:303c:ca5b:76ff:fe29:f233) (Remote host closed the connection)
2020-10-27 18:26:55 +0100FreeBird_(~freebirdl@101.228.42.108)
2020-10-27 18:27:11 +0100thunderrd(~thunderrd@183.182.115.32) (Ping timeout: 272 seconds)
2020-10-27 18:28:13 +0100FreeBirdLjj(~freebirdl@101.228.42.108) (Read error: Connection reset by peer)
2020-10-27 18:30:03 +0100debugloop(~danieln@unaffiliated/debugloop)
2020-10-27 18:30:05 +0100acarrico(~acarrico@dhcp-68-142-39-249.greenmountainaccess.net) (Ping timeout: 240 seconds)
2020-10-27 18:30:26 +0100justsomeguy(~justsomeg@071-046-056-025.res.spectrum.com)
2020-10-27 18:30:26 +0100justsomeguy(~justsomeg@071-046-056-025.res.spectrum.com) (Changing host)
2020-10-27 18:30:26 +0100justsomeguy(~justsomeg@unaffiliated/--/x-3805311)
2020-10-27 18:33:36 +0100alx741(~alx741@186.178.110.246) (Ping timeout: 256 seconds)
2020-10-27 18:36:16 +0100motherfsck(~motherfsc@unaffiliated/motherfsck) (Quit: quit)
2020-10-27 18:38:07 +0100_vaibhavingale_1(~Adium@203.188.228.9)
2020-10-27 18:39:36 +0100christo(~chris@81.96.113.213)
2020-10-27 18:39:38 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
2020-10-27 18:40:04 +0100akegalj(~akegalj@93-142-98-67.adsl.net.t-com.hr)
2020-10-27 18:41:01 +0100_vaibhavingale_(~Adium@203.188.228.9) (Ping timeout: 264 seconds)
2020-10-27 18:41:16 +0100thunderrd(~thunderrd@183.182.111.47)
2020-10-27 18:42:50 +0100cfricke(~cfricke@unaffiliated/cfricke)
2020-10-27 18:43:52 +0100jlamothe(~jlamothe@198.251.55.207) (Ping timeout: 256 seconds)
2020-10-27 18:45:52 +0100xff0x(~fox@2001:1a81:5219:2300:5d08:4351:f573:c6af) (Ping timeout: 260 seconds)
2020-10-27 18:46:38 +0100alx741(~alx741@186.178.110.246)
2020-10-27 18:46:46 +0100xff0x(~fox@2001:1a81:5219:2300:d7e5:2604:caa8:802b)
2020-10-27 18:49:08 +0100shadowdao(~user@unaffiliated/shadowdaemon)
2020-10-27 18:52:39 +0100jakob_(~jakob@p200300f49f162200916e30f6bddaa13c.dip0.t-ipconnect.de)
2020-10-27 18:52:49 +0100cylon007(~user@173.225.251.134)
2020-10-27 18:53:23 +0100 <cylon007> ls
2020-10-27 18:54:08 +0100perry69420(6ee39f85@110.227.159.133) (Remote host closed the connection)
2020-10-27 18:54:23 +0100cylon007(~user@173.225.251.134) (Client Quit)
2020-10-27 18:57:12 +0100Tops2(~Tobias@dyndsl-095-033-025-205.ewe-ip-backbone.de) (Ping timeout: 265 seconds)
2020-10-27 18:57:13 +0100cylon007(~user@173.225.251.134)
2020-10-27 19:00:02 +0100jedi1(~jedi@185.204.1.185) ()
2020-10-27 19:00:13 +0100asheshambasta(~user@ptr-e1lysawl9rr13i61o92.18120a2.ip6.access.telenet.be) (Ping timeout: 272 seconds)
2020-10-27 19:01:13 +0100cylon007(~user@173.225.251.134) ()
2020-10-27 19:01:21 +0100jakob_(~jakob@p200300f49f162200916e30f6bddaa13c.dip0.t-ipconnect.de) (Remote host closed the connection)
2020-10-27 19:02:51 +0100jakob_(~jakob@p200300f49f1622005d925613eec2f60c.dip0.t-ipconnect.de)
2020-10-27 19:03:05 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
2020-10-27 19:04:01 +0100alp(~alp@2a01:e0a:58b:4920:aca7:fd95:ef08:3e24) (Ping timeout: 272 seconds)
2020-10-27 19:05:27 +0100texasmynsted(~texasmyns@99.96.221.112)
2020-10-27 19:06:03 +0100texasmynsted(~texasmyns@99.96.221.112) (Remote host closed the connection)
2020-10-27 19:06:12 +0100 <danza> texasmynsted, did you choose your library for shell scripting?
2020-10-27 19:07:09 +0100geekosaur(82659a09@host154-009.vpn.uakron.edu) (Ping timeout: 245 seconds)
2020-10-27 19:07:35 +0100texasmynsted(~texasmyns@99.96.221.112)
2020-10-27 19:07:44 +0100texasmynsted(~texasmyns@99.96.221.112) (Remote host closed the connection)
2020-10-27 19:08:52 +0100texasmynsted(~texasmyns@99.96.221.112)
2020-10-27 19:10:32 +0100texasmynsted(~texasmyns@99.96.221.112) (Remote host closed the connection)
2020-10-27 19:12:07 +0100texasmynsted(~texasmyns@99.96.221.112)
2020-10-27 19:15:40 +0100gothnbass(~kvirc@111.red-83-37-117.dynamicip.rima-tde.net) (Quit: KVIrc 5.0.0 Aria http://www.kvirc.net/)
2020-10-27 19:15:41 +0100nuncanada(~dude@179.235.160.168)
2020-10-27 19:16:00 +0100thir(~thir@p200300f27f0b7e004c18ab60065ea01b.dip0.t-ipconnect.de)
2020-10-27 19:17:05 +0100phaul(~phaul@ruby/staff/phaul)
2020-10-27 19:18:21 +0100danza(~francesco@151.53.87.185) (Quit: Leaving)
2020-10-27 19:18:49 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-10-27 19:19:55 +0100valli1(~valli@185.244.214.217)
2020-10-27 19:20:21 +0100concept2(~concept2@unaffiliated/tubo) (Read error: Connection reset by peer)
2020-10-27 19:20:35 +0100concept2(~concept2@unaffiliated/tubo)
2020-10-27 19:20:36 +0100emmanuel_erc(~user@2604:2000:1382:ce03:6974:40c4:284f:7839) (Remote host closed the connection)
2020-10-27 19:21:04 +0100bartemius(~bartemius@109-252-20-20.nat.spd-mgts.ru) (Remote host closed the connection)
2020-10-27 19:21:25 +0100Chi1thangoo(~Chi1thang@87.112.60.168)
2020-10-27 19:22:09 +0100jneira(501e64fa@gateway/web/cgi-irc/kiwiirc.com/ip.80.30.100.250) (Quit: Connection closed)
2020-10-27 19:23:32 +0100av3games(6cfab89c@108-250-184-156.lightspeed.gnvlsc.sbcglobal.net)
2020-10-27 19:23:36 +0100 <av3games> hello
2020-10-27 19:23:38 +0100 <av3games> i need
2020-10-27 19:23:41 +0100 <av3games> help
2020-10-27 19:23:58 +0100 <av3games> i am new to haskell and idk what this is
2020-10-27 19:24:16 +0100texasmynsted(~texasmyns@99.96.221.112) (Remote host closed the connection)
2020-10-27 19:24:22 +0100 <av3games> <interactive>:3:1: error: * Variable not in scope: main * Perhaps you meant `min' (imported from Prelude)
2020-10-27 19:24:51 +0100Amras(~Amras@unaffiliated/amras0000) (Remote host closed the connection)
2020-10-27 19:24:57 +0100 <av3games> here's my code:import Data.Listimport System.IO-- Int -2^63 - 2^63maxInt = maxBound :: Int
2020-10-27 19:25:01 +0100 <av3games> import Data.Listimport System.IO-- Int -2^63 - 2^63maxInt = maxBound :: Int
2020-10-27 19:25:05 +0100geowiesnot(~user@87-89-181-157.abo.bbox.fr) (Ping timeout: 240 seconds)
2020-10-27 19:25:10 +0100 <av3games> ...
2020-10-27 19:25:19 +0100 <ghoulguy> av3games: What's your file named?
2020-10-27 19:25:29 +0100livvy(~livvy@gateway/tor-sasl/livvy)
2020-10-27 19:25:31 +0100 <av3games> main.hs
2020-10-27 19:25:36 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl) (Remote host closed the connection)
2020-10-27 19:25:38 +0100 <av3games> i am stupid
2020-10-27 19:25:54 +0100texasmynsted(~texasmyns@99.96.221.112)
2020-10-27 19:25:56 +0100 <av3games> i am new to haskell
2020-10-27 19:26:15 +0100 <ghoulguy> change the name to something like: Fun.hs
2020-10-27 19:26:23 +0100 <ghoulguy> and then add this to the top of your file: module Fun where
2020-10-27 19:26:30 +0100 <av3games> ok
2020-10-27 19:26:32 +0100 <av3games> thx
2020-10-27 19:26:35 +0100geekosaur(82659a09@host154-009.vpn.uakron.edu)
2020-10-27 19:26:54 +0100 <ghoulguy> av3games: By default, if you don't specify a 'module' line, you get this by default: module Main (main) where
2020-10-27 19:27:03 +0100 <ghoulguy> which assumes you've defined a 'main' to export
2020-10-27 19:27:08 +0100 <av3games> ok
2020-10-27 19:27:32 +0100 <av3games> thanks ghoulguy
2020-10-27 19:27:42 +0100Amras(~Amras@unaffiliated/amras0000)
2020-10-27 19:29:48 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:d1e5:1a77:fd52:7b88) (Quit: Textual IRC Client: www.textualapp.com)
2020-10-27 19:30:57 +0100cfricke(~cfricke@unaffiliated/cfricke) (Quit: WeeChat 2.9)
2020-10-27 19:31:33 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:79dc:6e3d:1f6f:5c9)
2020-10-27 19:31:38 +0100Tops2(~Tobias@dyndsl-095-033-025-205.ewe-ip-backbone.de)
2020-10-27 19:31:47 +0100texasmynsted(~texasmyns@99.96.221.112) (Remote host closed the connection)
2020-10-27 19:32:17 +0100hyiltiz(~quassel@unaffiliated/hyiltiz) (Ping timeout: 260 seconds)
2020-10-27 19:32:59 +0100av3games(6cfab89c@108-250-184-156.lightspeed.gnvlsc.sbcglobal.net) (Remote host closed the connection)
2020-10-27 19:35:21 +0100cole-h(~cole-h@c-73-48-197-220.hsd1.ca.comcast.net)
2020-10-27 19:35:22 +0100_vaibhavingale_1(~Adium@203.188.228.9) (Ping timeout: 256 seconds)
2020-10-27 19:35:37 +0100justanotheruser(~justanoth@unaffiliated/justanotheruser) (Ping timeout: 246 seconds)
2020-10-27 19:35:55 +0100Stanley00(~stanley00@unaffiliated/stanley00)
2020-10-27 19:37:05 +0100idhugo(~idhugo@185.45.22.133) (Ping timeout: 240 seconds)
2020-10-27 19:37:15 +0100Lord_of_Life(~Lord@46.217.223.11) (Changing host)
2020-10-27 19:37:15 +0100Lord_of_Life(~Lord@unaffiliated/lord-of-life/x-0885362)
2020-10-27 19:37:48 +0100jakob_(~jakob@p200300f49f1622005d925613eec2f60c.dip0.t-ipconnect.de) (Remote host closed the connection)
2020-10-27 19:37:58 +0100jakob_(~jakob@p200300f49f1622005d925613eec2f60c.dip0.t-ipconnect.de)
2020-10-27 19:38:35 +0100jakob_(~jakob@p200300f49f1622005d925613eec2f60c.dip0.t-ipconnect.de) (Remote host closed the connection)
2020-10-27 19:38:44 +0100jakob_(~jakob@p200300f49f1622005d925613eec2f60c.dip0.t-ipconnect.de)
2020-10-27 19:39:04 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2020-10-27 19:39:23 +0100jakob_(~jakob@p200300f49f1622005d925613eec2f60c.dip0.t-ipconnect.de) (Remote host closed the connection)
2020-10-27 19:39:27 +0100akegalj(~akegalj@93-142-98-67.adsl.net.t-com.hr) (Quit: leaving)
2020-10-27 19:39:32 +0100jakob_(~jakob@p200300f49f1622005d925613eec2f60c.dip0.t-ipconnect.de)
2020-10-27 19:40:10 +0100jakob_(~jakob@p200300f49f1622005d925613eec2f60c.dip0.t-ipconnect.de) (Remote host closed the connection)
2020-10-27 19:40:19 +0100jakob_(~jakob@p200300f49f1622005d925613eec2f60c.dip0.t-ipconnect.de)
2020-10-27 19:40:25 +0100Stanley00(~stanley00@unaffiliated/stanley00) (Ping timeout: 240 seconds)
2020-10-27 19:40:27 +0100nschoe(~quassel@2a01:e0a:3c4:c7b0:496b:6bb1:2a12:b6fe)
2020-10-27 19:40:58 +0100jakob_(~jakob@p200300f49f1622005d925613eec2f60c.dip0.t-ipconnect.de) (Remote host closed the connection)
2020-10-27 19:41:36 +0100fendor(~fendor@91.141.2.36.wireless.dyn.drei.com)
2020-10-27 19:41:37 +0100dmwitdmwitch
2020-10-27 19:42:44 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl)
2020-10-27 19:42:51 +0100hyiltiz(~quassel@82.118.227.47)
2020-10-27 19:42:51 +0100hyiltiz(~quassel@82.118.227.47) (Changing host)
2020-10-27 19:42:51 +0100hyiltiz(~quassel@unaffiliated/hyiltiz)
2020-10-27 19:44:51 +0100cgfbee(~bot@oc1.itim-cj.ro)
2020-10-27 19:47:42 +0100thir(~thir@p200300f27f0b7e004c18ab60065ea01b.dip0.t-ipconnect.de) (Remote host closed the connection)
2020-10-27 19:48:45 +0100justsomeguy(~justsomeg@unaffiliated/--/x-3805311) (Ping timeout: 240 seconds)
2020-10-27 19:49:09 +0100justsomeguy(~justsomeg@unaffiliated/--/x-3805311)
2020-10-27 19:52:14 +0100raichoo(~raichoo@213.240.178.58) (Quit: Lost terminal)
2020-10-27 19:53:31 +0100clockboi(~clockboi@p200300ef8f0a9b00f86fc02b1cd4ca0a.dip0.t-ipconnect.de) (Remote host closed the connection)
2020-10-27 19:54:13 +0100falsifian(~falsifian@cpef81d0f9cb2f3-cmf81d0f9cb2f0.cpe.net.fido.ca)
2020-10-27 19:56:10 +0100wroathe_(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2020-10-27 19:56:45 +0100wroathe(~wroathe@c-73-24-27-54.hsd1.mn.comcast.net) (Ping timeout: 240 seconds)
2020-10-27 19:57:15 +0100chaosmasttter(~chaosmast@p200300c4a73c4601bdd32dc7d6289d04.dip0.t-ipconnect.de)
2020-10-27 20:00:28 +0100dbmikus(~dbmikus@cpe-76-167-86-219.natsow.res.rr.com) (Ping timeout: 246 seconds)
2020-10-27 20:01:36 +0100dcoutts_(~duncan@33.14.75.194.dyn.plus.net)
2020-10-27 20:01:52 +0100GyroW_(~GyroW@ptr-48ujrfd1ztq5fjywfw3.18120a2.ip6.access.telenet.be)
2020-10-27 20:01:52 +0100GyroW_(~GyroW@ptr-48ujrfd1ztq5fjywfw3.18120a2.ip6.access.telenet.be) (Changing host)
2020-10-27 20:01:52 +0100GyroW_(~GyroW@unaffiliated/gyrow)
2020-10-27 20:02:25 +0100justsomeguy(~justsomeg@unaffiliated/--/x-3805311) (Ping timeout: 240 seconds)
2020-10-27 20:02:40 +0100GyroW(~GyroW@unaffiliated/gyrow) (Ping timeout: 258 seconds)
2020-10-27 20:03:09 +0100Tops2(~Tobias@dyndsl-095-033-025-205.ewe-ip-backbone.de) (Read error: Connection reset by peer)
2020-10-27 20:03:15 +0100cosimone(~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd)
2020-10-27 20:03:25 +0100berberman_(~berberman@unaffiliated/berberman) (Ping timeout: 240 seconds)
2020-10-27 20:03:35 +0100berberman(~berberman@unaffiliated/berberman)
2020-10-27 20:03:43 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
2020-10-27 20:03:48 +0100z0_(~z0@bl15-160-182.dsl.telepac.pt) (Read error: Connection reset by peer)
2020-10-27 20:04:16 +0100kish(~oracle@unaffiliated/oracle) (Ping timeout: 256 seconds)
2020-10-27 20:04:34 +0100dbmikus(~dbmikus@cpe-76-167-86-219.natsow.res.rr.com)
2020-10-27 20:09:21 +0100ggole(~ggole@2001:8003:8119:7200:b94d:2b16:8058:a9b7) (Quit: Leaving)
2020-10-27 20:09:39 +0100acarrico(~acarrico@dhcp-68-142-39-249.greenmountainaccess.net)
2020-10-27 20:09:54 +0100aarvar(~foewfoiew@50.35.43.33)
2020-10-27 20:11:02 +0100 <falsifian> I'm trying to understand how to work around the monomorphism restriction. If I write (in a .hs file) "x = let f = show in (f 1, f ())", I get an error, which matches my understanding ("No instance for (Num ()) arising from the literal ‘1’"). But what confuses me is that if I write "x = let f = show :: Show a => a -> String in (f 1, f ())" I get the same error. Can I not explicitly tell the compiler
2020-10-27 20:11:08 +0100 <falsifian> the let-bound identifier f should be polymorphic?
2020-10-27 20:12:42 +0100 <thblt> I *think* you need to be explicit about the type of 1, because number literals are polymorphic too.
2020-10-27 20:13:05 +0100kritzefitz(~kritzefit@212.86.56.80) (Ping timeout: 265 seconds)
2020-10-27 20:13:15 +0100 <geekosaur> > let f :: Show a => a -> String; f = show in (f 1, f ())
2020-10-27 20:13:17 +0100 <lambdabot> ("1","()")
2020-10-27 20:13:31 +0100 <falsifian> Replacing 1 with (1::Int) just changes the error to "Couldn't match expected type ‘Int’ with actual type ‘()’"
2020-10-27 20:13:35 +0100 <geekosaur> you assigned a type to show, not to f
2020-10-27 20:14:01 +0100 <merijn> falsifian: "write a type signature"? :)
2020-10-27 20:14:39 +0100 <merijn> falsifian: "f y = show y" should also work
2020-10-27 20:14:48 +0100 <merijn> iirc
2020-10-27 20:14:49 +0100Franciman(~francesco@host-82-54-10-114.retail.telecomitalia.it) (Quit: Leaving)
2020-10-27 20:15:20 +0100 <falsifian> geekosaur, merijn: Thanks. It hadn't occurred to me that I wasn't giving f a type signature.
2020-10-27 20:15:45 +0100 <falsifian> Yes, "f x = show x" fixes it too.
2020-10-27 20:17:38 +0100 <merijn> monomorphism only apply when something "looks like a value" (i.e. no arguments) *and* has no type signature *and* is typeclass polymorphic
2020-10-27 20:18:45 +0100mirrorbird(~psutcliff@2a00:801:42b:7891:16b1:e53f:55b2:15e1) (Ping timeout: 272 seconds)
2020-10-27 20:20:25 +0100justsomeguy(~justsomeg@216.186.218.241)
2020-10-27 20:20:25 +0100justsomeguy(~justsomeg@216.186.218.241) (Changing host)
2020-10-27 20:20:25 +0100justsomeguy(~justsomeg@unaffiliated/--/x-3805311)
2020-10-27 20:21:40 +0100chenshen(~chenshen@2620:10d:c090:400::4:bbc)
2020-10-27 20:22:02 +0100wroathe_(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Quit: leaving)
2020-10-27 20:22:16 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2020-10-27 20:23:51 +0100thblt(~thblt@unaffiliated/thblt) ("ERC (IRC client for Emacs 27.1)")
2020-10-27 20:24:27 +0100ahmr88(~ahmr88@cpc85006-haye22-2-0-cust131.17-4.cable.virginm.net)
2020-10-27 20:24:54 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 258 seconds)
2020-10-27 20:24:59 +0100acidjnk_new(~acidjnk@p200300d0c7237845ecd50ba376a38a54.dip0.t-ipconnect.de)
2020-10-27 20:27:52 +0100_vaibhavingale_(~Adium@42.106.218.208)
2020-10-27 20:29:31 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2020-10-27 20:29:36 +0100jlamothe(~jlamothe@198.251.55.207)
2020-10-27 20:29:57 +0100hackageaur 7.0.5 - Access metadata from the Arch Linux User Repository. https://hackage.haskell.org/package/aur-7.0.5 (fosskers)
2020-10-27 20:30:28 +0100jneira(501e64fa@gateway/web/cgi-irc/kiwiirc.com/ip.80.30.100.250)
2020-10-27 20:30:57 +0100hackageaura 3.2.0 - A secure package manager for Arch Linux and the AUR. https://hackage.haskell.org/package/aura-3.2.0 (fosskers)
2020-10-27 20:31:30 +0100thir(~thir@p200300f27f0b7e004c18ab60065ea01b.dip0.t-ipconnect.de)
2020-10-27 20:34:37 +0100britva(~britva@31-10-157-156.cgn.dynamic.upc.ch)
2020-10-27 20:34:52 +0100teardown(~user@unaffiliated/mrush)
2020-10-27 20:35:11 +0100teardown(~user@unaffiliated/mrush) (Client Quit)
2020-10-27 20:37:17 +0100thir(~thir@p200300f27f0b7e004c18ab60065ea01b.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
2020-10-27 20:38:56 +0100_vaibhavingale_(~Adium@42.106.218.208) (Read error: Connection reset by peer)
2020-10-27 20:39:17 +0100fraktor(~walt@129.93.191.18)
2020-10-27 20:39:59 +0100 <fraktor> :t foldr (&&) True . map
2020-10-27 20:40:00 +0100 <lambdabot> error:
2020-10-27 20:40:00 +0100 <lambdabot> • Couldn't match type ‘[b]’ with ‘Bool’
2020-10-27 20:40:00 +0100 <lambdabot> Expected type: (a -> b) -> [a] -> Bool
2020-10-27 20:40:08 +0100 <fraktor> I don't understand why this is happening.
2020-10-27 20:40:57 +0100 <xerox_> map takes 2 arguments
2020-10-27 20:41:08 +0100 <xerox_> :t (foldr (&&) True .) . map
2020-10-27 20:41:09 +0100 <lambdabot> (a -> Bool) -> [a] -> Bool
2020-10-27 20:41:21 +0100 <fraktor> Oh I see, it's a composition rule thing.
2020-10-27 20:41:38 +0100 <fraktor> Why is the additional `.` required inside the parentheses?
2020-10-27 20:41:44 +0100alp(~alp@2a01:e0a:58b:4920:95e9:ca1e:6b04:cf54)
2020-10-27 20:42:31 +0100 <tomsmeding> '(f . g) x' is equivalent to 'f (g x)', so '(foldr (&&) True . map) x' is equivalent to 'foldr (&&) True (map x)'
2020-10-27 20:42:33 +0100 <tomsmeding> that won't work :)
2020-10-27 20:42:58 +0100 <fraktor> I see. Thank you!
2020-10-27 20:43:08 +0100 <xerox_> f . g = \x -> f (g x) so (foldr (&&) True .) . map = \f -> (foldr (&&) True .) (map f) = (foldr (&&) True) . (map f) = \xs -> foldr (&&) True (map f xs)
2020-10-27 20:43:08 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 260 seconds)
2020-10-27 20:43:09 +0100 <fraktor> Also I know that `all` exists, I just wanted to see how I might implement it.
2020-10-27 20:43:44 +0100 <tomsmeding> however, '(((foldr (&&) True .) . map) x) y' is equivalent to '((foldr (&&) True .) (map x)) y', which is '(foldr (&&) True . map x) y', which is 'foldr (&&) True (map x y)'
2020-10-27 20:44:03 +0100 <tomsmeding> @src .
2020-10-27 20:44:03 +0100 <lambdabot> (f . g) x = f (g x)
2020-10-27 20:44:14 +0100 <tomsmeding> equational reasoning allows you to write it all out :)
2020-10-27 20:44:45 +0100 <fraktor> I didn't know about the `src` thing, that's really cool! Is that lambdabot or ghci?
2020-10-27 20:44:47 +0100 <fraktor> @src all
2020-10-27 20:44:47 +0100 <lambdabot> all p = and . map p
2020-10-27 20:44:53 +0100 <fraktor> :t all
2020-10-27 20:44:54 +0100 <lambdabot> Foldable t => (a -> Bool) -> t a -> Bool
2020-10-27 20:44:59 +0100cosimone(~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd) (Remote host closed the connection)
2020-10-27 20:45:02 +0100 <tomsmeding> that's lambdabot; it gives you an idealised definition
2020-10-27 20:45:13 +0100 <tomsmeding> the real definition might be more complicated for performance or generality reasons
2020-10-27 20:45:18 +0100 <fraktor> "Idealized"?
2020-10-27 20:45:29 +0100 <fraktor> Like, someone went and wrote these, or it generates them?
2020-10-27 20:45:36 +0100 <tomsmeding> someone wrote these :p
2020-10-27 20:45:52 +0100macrover(~macrover@ip70-189-231-35.lv.lv.cox.net)
2020-10-27 20:45:53 +0100 <fraktor> I was going to say...
2020-10-27 20:46:00 +0100christo(~chris@81.96.113.213) (Remote host closed the connection)
2020-10-27 20:46:02 +0100 <fraktor> :t (and .) . map
2020-10-27 20:46:03 +0100 <lambdabot> (a -> Bool) -> [a] -> Bool
2020-10-27 20:46:19 +0100 <geekosaur> the actual definitions are often optimized or generalized
2020-10-27 20:46:27 +0100teardown(~user@unaffiliated/mrush)
2020-10-27 20:46:35 +0100 <tomsmeding> for example, for (.) : https://hackage.haskell.org/package/base-4.14.0.0/docs/src/GHC.Base.html#line-1443
2020-10-27 20:47:21 +0100mmohammadi9812(~mmohammad@5.238.178.31) (Read error: Connection reset by peer)
2020-10-27 20:47:28 +0100 <tomsmeding> (the comment helpfully explains why it's not the intuitive definition; 'base' is generally well-written like that)
2020-10-27 20:49:00 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2020-10-27 20:49:04 +0100mmohammadi9812(~mmohammad@5.238.178.31)
2020-10-27 20:50:02 +0100 <merijn> fraktor: The definitions are lambdabot are mostly the ones copied from the Haskell Report
2020-10-27 20:50:21 +0100jakob_(~textual@p57b0eae0.dip0.t-ipconnect.de)
2020-10-27 20:50:30 +0100 <maerwald> tomsmeding: didn't you say ALE is good wrt LSP?
2020-10-27 20:50:46 +0100 <tomsmeding> maerwald: in my very limited experience, yes
2020-10-27 20:50:58 +0100 <merijn> maerwald: "works for me"
2020-10-27 20:51:01 +0100 <maerwald> It does nothing here lol
2020-10-27 20:51:14 +0100christo(~chris@81.96.113.213)
2020-10-27 20:51:17 +0100 <tomsmeding> you have to instruct it to use your language server probably
2020-10-27 20:51:19 +0100 <merijn> maerwald: With which client?
2020-10-27 20:51:24 +0100 <merijn> eh, server, I guess
2020-10-27 20:52:10 +0100 <maerwald> https://paste.tomsmeding.com/EdTf9fLZ
2020-10-27 20:52:12 +0100teardown(~user@unaffiliated/mrush) (Quit: leaving)
2020-10-27 20:53:03 +0100GyroW_(~GyroW@unaffiliated/gyrow) (Quit: Someone ate my pie)
2020-10-27 20:53:11 +0100 <maerwald> wait, now it does something... seems the build just took longer than expected
2020-10-27 20:53:19 +0100christo_(~chris@81.96.113.213)
2020-10-27 20:53:22 +0100GyroW(~GyroW@ptr-48ujrfd1ztq5fjywfw3.18120a2.ip6.access.telenet.be)
2020-10-27 20:53:22 +0100GyroW(~GyroW@ptr-48ujrfd1ztq5fjywfw3.18120a2.ip6.access.telenet.be) (Changing host)
2020-10-27 20:53:22 +0100GyroW(~GyroW@unaffiliated/gyrow)
2020-10-27 20:53:39 +0100christo(~chris@81.96.113.213) (Read error: Connection reset by peer)
2020-10-27 20:53:42 +0100 <tomsmeding> in that case your cpu usage should've been an indicator that something was amiss :p
2020-10-27 20:53:47 +0100 <maerwald> oh wow... a sensible default: only lint when saving
2020-10-27 20:54:02 +0100 <maerwald> tomsmeding: not really, since hls often just gets stuck here and sticks to 100% cpu
2020-10-27 20:54:13 +0100 <tomsmeding> interesting
2020-10-27 20:54:23 +0100 <tomsmeding> have you tried plain ghcide?
2020-10-27 20:54:53 +0100 <maerwald> and it behaves very funny when your project GHC is not the currently set ghc (the `ghc`)
2020-10-27 20:55:36 +0100 <maerwald> https://user-images.githubusercontent.com/1241845/97086886-61c80980-1626-11eb-8874-5467c508d60e.png
2020-10-27 20:55:38 +0100 <maerwald> then this happens
2020-10-27 20:56:11 +0100 <tomsmeding> well at least you get some heating
2020-10-27 20:56:19 +0100rprije(~rprije@194-193-168-77.tpgi.com.au)
2020-10-27 20:56:24 +0100 <tomsmeding> but I gather it works now? otherwise I can share my current setup
2020-10-27 20:56:28 +0100 <maerwald> I don't get OOMed anymore since I bumped my ram, at least
2020-10-27 20:56:42 +0100 <maerwald> how do you do stuff like goto definition and code actions?
2020-10-27 20:56:42 +0100 <tomsmeding> yes with 16G you would've been out at this point :p
2020-10-27 20:56:49 +0100 <tomsmeding> :ALEGoToDefinition
2020-10-27 20:56:57 +0100 <tomsmeding> or map a key to <Plug>(ale_go_to_definition)
2020-10-27 20:57:07 +0100 <tomsmeding> in general :ALE<tab> and their help sections
2020-10-27 20:57:17 +0100ahmr88(~ahmr88@cpc85006-haye22-2-0-cust131.17-4.cable.virginm.net) (Remote host closed the connection)
2020-10-27 20:57:39 +0100 <tomsmeding> not sure how much support there is for code actions, I don't really use that myself
2020-10-27 20:58:28 +0100 <maerwald> well, that doesn't do anything
2020-10-27 20:58:46 +0100 <maerwald> with no error
2020-10-27 20:59:09 +0100 <tomsmeding> has your cpu quieted down already?
2020-10-27 20:59:12 +0100 <maerwald> seems not https://github.com/dense-analysis/ale/issues/1466
2020-10-27 20:59:20 +0100 <tomsmeding> if not, might want to wait for that to happen
2020-10-27 20:59:26 +0100 <maerwald> that seems quite limited
2020-10-27 20:59:32 +0100conal(~conal@64.71.133.70) (Read error: Connection reset by peer)
2020-10-27 20:59:37 +0100 <maerwald> also, my RSI kicks in again, so I'll stop now
2020-10-27 20:59:47 +0100damianfral4(~damianfra@243.red-176-80-34.dynamicip.rima-tde.net)
2020-10-27 21:00:26 +0100 <maerwald> (the import code action is very useful)
2020-10-27 21:00:46 +0100 <maerwald> (at least if your project forces you to use explicit import, which I find nonsensical for the record)
2020-10-27 21:00:58 +0100 <maerwald> (you can quote me :p)
2020-10-27 21:01:37 +0100 <tomsmeding> I kind of like the custom, since it reduces dependence on IDE-like integration to navigate through code
2020-10-27 21:02:17 +0100 <tomsmeding> within measure, of course; if you start importing >10 symbols from a module it's not worth the bother anymore
2020-10-27 21:02:46 +0100damianfral3(~damianfra@174.red-37-13-187.dynamicip.rima-tde.net) (Ping timeout: 246 seconds)
2020-10-27 21:03:01 +0100 <tomsmeding> but it's certainly a subjective point
2020-10-27 21:04:03 +0100conal(~conal@64.71.133.70)
2020-10-27 21:04:49 +0100falsifian(~falsifian@cpef81d0f9cb2f3-cmf81d0f9cb2f0.cpe.net.fido.ca) ()
2020-10-27 21:05:39 +0100taurux(~taurux@net-93-151-203-8.cust.dsl.teletu.it)
2020-10-27 21:08:34 +0100 <hyperisco> any hints on how I can hash a dhall config (I am using dhall as a library)
2020-10-27 21:09:20 +0100 <maerwald> output as json, convert to dense format with newlinet removed, make sure you don't have trailing newline
2020-10-27 21:09:33 +0100 <maerwald> and sort the objects
2020-10-27 21:09:35 +0100 <hyperisco> wait why?
2020-10-27 21:09:56 +0100thir(~thir@p200300f27f0b7e004c18ab60065ea01b.dip0.t-ipconnect.de)
2020-10-27 21:10:03 +0100 <tomsmeding> or write a https://hackage.haskell.org/package/hashable-1.3.0.0/docs/Data-Hashable.html instance :p
2020-10-27 21:10:07 +0100taurux(~taurux@net-93-151-203-8.cust.dsl.teletu.it) (Ping timeout: 246 seconds)
2020-10-27 21:10:15 +0100dhouthoo(~dhouthoo@ptr-eiv6509pb4ifhdr9lsd.18120a2.ip6.access.telenet.be) (Quit: WeeChat 2.9)
2020-10-27 21:10:19 +0100 <hyperisco> dhall supports hashing configs
2020-10-27 21:10:31 +0100 <maerwald> oh, why do you ask then? :D
2020-10-27 21:10:32 +0100taurux(~taurux@net-130-25-120-80.cust.vodafonedsl.it)
2020-10-27 21:10:33 +0100 <hyperisco> the tutorial just doesn't seem to say how to do it using dhall as a library rather than by cli
2020-10-27 21:11:00 +0100 <tomsmeding> https://hackage.haskell.org/package/dhall-1.36.0/docs/Dhall-Import.html#v:hashExpression ?
2020-10-27 21:11:05 +0100justsomeguy(~justsomeg@unaffiliated/--/x-3805311) (Ping timeout: 240 seconds)
2020-10-27 21:11:44 +0100 <maerwald> hashExpressionToCode looks cool too
2020-10-27 21:12:09 +0100 <hyperisco> I am not sure... so I decode the file with input auto
2020-10-27 21:12:25 +0100 <tomsmeding> what is the type of the thing you want to hash?
2020-10-27 21:12:27 +0100 <hyperisco> that gives me a type I defined with a FromDhall instance, not an Expr Void Void
2020-10-27 21:12:40 +0100 <tomsmeding> ah
2020-10-27 21:13:16 +0100 <hyperisco> is there a way to break it apart so I can get both?
2020-10-27 21:13:27 +0100hackagebyline 1.1.0.1 - Library for creating command-line interfaces (colors, menus, etc.) https://hackage.haskell.org/package/byline-1.1.0.1 (PeterJones)
2020-10-27 21:13:31 +0100juuandyy(~juuandyy@90.166.144.65)
2020-10-27 21:13:56 +0100 <hyperisco> well whatever, I'll just use the file mod time then oO
2020-10-27 21:15:12 +0100knupfer(~Thunderbi@200116b82cb7c400d8c9d953179e22c7.dip.versatel-1u1.de) (Ping timeout: 260 seconds)
2020-10-27 21:15:37 +0100teardown(~user@unaffiliated/mrush)
2020-10-27 21:17:25 +0100phaul(~phaul@ruby/staff/phaul) (Ping timeout: 240 seconds)
2020-10-27 21:17:46 +0100Gujest_47(584bba29@dslb-088-075-186-041.088.075.pools.vodafone-ip.de)
2020-10-27 21:17:57 +0100hackagethemoviedb 1.2.0.1 - Haskell API bindings for http://themoviedb.org https://hackage.haskell.org/package/themoviedb-1.2.0.1 (PeterJones)
2020-10-27 21:18:43 +0100phaul(~phaul@ruby/staff/phaul)
2020-10-27 21:18:54 +0100knupfer(~Thunderbi@200116b82cb7c400e45e2cfffeea1a26.dip.versatel-1u1.de)
2020-10-27 21:18:56 +0100knupfer(~Thunderbi@200116b82cb7c400e45e2cfffeea1a26.dip.versatel-1u1.de) (Client Quit)
2020-10-27 21:19:08 +0100knupfer(~Thunderbi@mue-88-130-61-249.dsl.tropolys.de)
2020-10-27 21:19:11 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2020-10-27 21:19:32 +0100Gujest_47(584bba29@dslb-088-075-186-041.088.075.pools.vodafone-ip.de) (Remote host closed the connection)
2020-10-27 21:21:15 +0100 <tomsmeding> hyperisco: what about inputExpr and rawInput from the Dhall module?
2020-10-27 21:21:53 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
2020-10-27 21:22:49 +0100nuncanada(~dude@179.235.160.168) (Read error: Connection reset by peer)
2020-10-27 21:23:56 +0100kritzefitz(~kritzefit@212.86.56.80)
2020-10-27 21:24:32 +0100xff0x(~fox@2001:1a81:5219:2300:d7e5:2604:caa8:802b) (Ping timeout: 260 seconds)
2020-10-27 21:24:57 +0100xff0x(~fox@2001:1a81:5219:2300:29ba:4988:f159:6286)
2020-10-27 21:27:13 +0100quaestor(~quaestor@griffith.christophrauch.de) (Ping timeout: 264 seconds)
2020-10-27 21:27:55 +0100nuncanada(~dude@179.235.160.168)
2020-10-27 21:29:37 +0100mananamenos(~mananamen@84.122.202.215.dyn.user.ono.com) (Ping timeout: 264 seconds)
2020-10-27 21:30:04 +0100geekosaur(82659a09@host154-009.vpn.uakron.edu) (Remote host closed the connection)
2020-10-27 21:31:49 +0100 <maerwald> I wanted to migrate an OpenAPI spec from yaml to dhall. I think that's a pretty good use case (e.g. abstracting and merging multiple types that represent sets of HTTP return codes)
2020-10-27 21:31:59 +0100 <maerwald> yaml anchors don't really do merging
2020-10-27 21:32:36 +0100teardown(~user@unaffiliated/mrush) (Quit: leaving)
2020-10-27 21:36:02 +0100mirrorbird(~psutcliff@2a00:801:42b:7891:16b1:e53f:55b2:15e1)
2020-10-27 21:36:55 +0100Stanley00(~stanley00@unaffiliated/stanley00)
2020-10-27 21:37:09 +0100hiroaki(~hiroaki@2a02:908:4b18:e20::e363)
2020-10-27 21:38:03 +0100stree(~stree@50-108-72-205.adr01.mskg.mi.frontiernet.net) (Quit: Caught exception)
2020-10-27 21:38:21 +0100stree(~stree@50-108-72-205.adr01.mskg.mi.frontiernet.net)
2020-10-27 21:39:22 +0100sfvm(~sfvm@37.228.215.148)
2020-10-27 21:39:41 +0100yianni(d8d049a0@216.208.73.160)
2020-10-27 21:40:44 +0100nek0(~nek0@mail.nek0.eu) (Remote host closed the connection)
2020-10-27 21:41:21 +0100nek0(~nek0@2a01:4f8:222:2b41::12)
2020-10-27 21:41:37 +0100Stanley00(~stanley00@unaffiliated/stanley00) (Ping timeout: 264 seconds)
2020-10-27 21:41:41 +0100GyroW(~GyroW@unaffiliated/gyrow) (Quit: Someone ate my pie)
2020-10-27 21:41:51 +0100GyroW(~GyroW@d54C03E98.access.telenet.be)
2020-10-27 21:41:51 +0100GyroW(~GyroW@d54C03E98.access.telenet.be) (Changing host)
2020-10-27 21:41:51 +0100GyroW(~GyroW@unaffiliated/gyrow)
2020-10-27 21:43:05 +0100lucasb(uid333435@gateway/web/irccloud.com/x-qizvrgxqojerddcd)
2020-10-27 21:43:31 +0100juuandyy(~juuandyy@90.166.144.65) (Quit: Konversation terminated!)
2020-10-27 21:43:32 +0100thir(~thir@p200300f27f0b7e004c18ab60065ea01b.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
2020-10-27 21:44:39 +0100Mrbuck(~Mrbuck@gateway/tor-sasl/mrbuck)
2020-10-27 21:45:32 +0100 <Mrbuck> https://youtu.be/O9upVbGSBFo?t=3801 Hi why did this guy said it took a week to write some small program in haskell and then it run like a turtle?
2020-10-27 21:45:33 +0100conal(~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
2020-10-27 21:47:05 +0100hyiltiz(~quassel@unaffiliated/hyiltiz) (Ping timeout: 240 seconds)
2020-10-27 21:47:34 +0100 <Uniaika> idk, never saw him around asking for help :P
2020-10-27 21:47:44 +0100 <Athas> Mrbuck: I think he's exaggerating for effect, but Haskell is infamous for requiring more ceremony around IO.
2020-10-27 21:48:16 +0100 <Athas> Regarding performance, it's possible he used one of the old interpreters (Hugs), or just had a space leak. Haskell is not generally a particularly slow or fast language.
2020-10-27 21:48:28 +0100hyiltiz(~quassel@82.118.227.47)
2020-10-27 21:48:29 +0100hyiltiz(~quassel@82.118.227.47) (Changing host)
2020-10-27 21:48:29 +0100hyiltiz(~quassel@unaffiliated/hyiltiz)
2020-10-27 21:49:03 +0100conal(~conal@64.71.133.70)
2020-10-27 21:49:43 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:79dc:6e3d:1f6f:5c9) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-10-27 21:50:10 +0100jtobin(~jtobin@li1555-212.members.linode.com)
2020-10-27 21:50:20 +0100 <maerwald> They do some nice js bashing later though
2020-10-27 21:50:20 +0100 <Mrbuck> Athas: Thank you for the answer
2020-10-27 21:51:56 +0100 <davean> Haskell can produce quite fast code but calling GHC an optimizing compiler is a little silly. I can beat C implimentations in Haskell but I have to do the work.
2020-10-27 21:52:09 +0100 <davean> When i don't its several times slower by default usually.
2020-10-27 21:52:23 +0100 <tomsmeding> davean: ghc is an optimising compiler; if it didn't optimise your code, it would run a _lot_ slower ;)
2020-10-27 21:52:33 +0100 <tomsmeding> attestable by using -O0 with ghc
2020-10-27 21:52:34 +0100yianni(d8d049a0@216.208.73.160) (Ping timeout: 245 seconds)
2020-10-27 21:53:03 +0100 <davean> tomsmeding: I find the ASM GHC puts out to be pretty much the straight translation of my Haskell personally.
2020-10-27 21:53:37 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 264 seconds)
2020-10-27 21:53:41 +0100 <tomsmeding> hm, perhaps most of the work is to strip away all the abstractions we like to make?
2020-10-27 21:53:48 +0100 <tomsmeding> *most of the work it does
2020-10-27 21:53:50 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 258 seconds)
2020-10-27 21:54:04 +0100 <davean> yes, thats most of the -O0 -O2 difference in many cases
2020-10-27 21:54:10 +0100 <davean> directly refering to, and inlining things
2020-10-27 21:54:16 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2020-10-27 21:54:16 +0100 <maerwald> I've never been able to beat C performance with haskell. That's an interesting statement
2020-10-27 21:54:18 +0100 <davean> but the code its self is straight line either way
2020-10-27 21:54:51 +0100 <tomsmeding> I wonder, ghc can use llvm as a backend, can't it? would that help?
2020-10-27 21:54:54 +0100 <davean> maerwald: usually my benchmarks there are reasonable C programs that compitent people wrote but didn't care to spend time optimizing.
2020-10-27 21:55:12 +0100 <davean> tomsmeding: LLVM doesn't help. Well it does, but only for heavy numerical portions of the code.
2020-10-27 21:55:23 +0100 <tomsmeding> makes sense
2020-10-27 21:55:27 +0100 <davean> for non-numerical codes, not using LLVM is faster
2020-10-27 21:55:37 +0100 <maerwald> Ah, I thought you wrote both implementations
2020-10-27 21:55:41 +0100 <tomsmeding> that may be the most interesting statement yet
2020-10-27 21:55:55 +0100 <maerwald> Everything else isn't really representative imo
2020-10-27 21:55:58 +0100 <tomsmeding> except if you mean _compilation_ is faster without llvm, which is unsurprising
2020-10-27 21:56:07 +0100taurux(~taurux@net-130-25-120-80.cust.vodafonedsl.it) (Ping timeout: 256 seconds)
2020-10-27 21:56:12 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:4998:5831:a85a:ec6f)
2020-10-27 21:56:15 +0100 <davean> maerwald: I'd say that isn't representative because that would be comparing how much effort and skill *I* had
2020-10-27 21:56:19 +0100 <davean> tomsmeding: no
2020-10-27 21:56:38 +0100 <davean> tomsmeding: I mean the generated program is faster without LLVM if its not generally numerical in nature.
2020-10-27 21:56:45 +0100 <maerwald> Yes and yet it's the only useful comparison
2020-10-27 21:56:53 +0100 <tomsmeding> that sounds like a huge failure of llvm then :p
2020-10-27 21:56:57 +0100chenshen(~chenshen@2620:10d:c090:400::4:bbc) (Ping timeout: 260 seconds)
2020-10-27 21:56:57 +0100 <tomsmeding> or of ghc's usage of it
2020-10-27 21:57:14 +0100yianni(18390fbe@d24-57-15-190.home.cgocable.net)
2020-10-27 21:57:21 +0100 <davean> maerwald: I don't think thats true "This is the actual C code people put out as final products" vs. "This is how I can do it in Haskell given $X time" is perfectly useful.
2020-10-27 21:57:35 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2020-10-27 21:57:40 +0100 <maerwald> As in: I want to know if anyone proficient with both languages managed to beat C
2020-10-27 21:57:52 +0100justanotheruser(~justanoth@unaffiliated/justanotheruser)
2020-10-27 21:57:59 +0100 <maerwald> I wasn't able to
2020-10-27 21:58:14 +0100 <davean> maerwald: but that just says you're more proficient at C optimization
2020-10-27 21:58:20 +0100 <maerwald> No
2020-10-27 21:58:32 +0100 <maerwald> You need more data points
2020-10-27 21:58:40 +0100m-renaud(sid333785@gateway/web/irccloud.com/x-nlleieqxzwqsksor) (*.net *.split)
2020-10-27 21:58:40 +0100albethere(sid457088@gateway/web/irccloud.com/x-jhhnyunwyziyizkz) (*.net *.split)
2020-10-27 21:58:40 +0100liquorice(sid267884@gateway/web/irccloud.com/x-knalwnvbywyqzpnh) (*.net *.split)
2020-10-27 21:58:40 +0100sis7_(~user@2001:15e8:110:473e::1) (*.net *.split)
2020-10-27 21:58:40 +0100^[_(sid43445@gateway/web/irccloud.com/x-gnsjjoiabatnywnb) (*.net *.split)
2020-10-27 21:58:40 +0100J_Arcane(sid119274@gateway/web/irccloud.com/x-iytmbzigvgcxgusu) (*.net *.split)
2020-10-27 21:58:40 +0100ocharles(sid30093@musicbrainz/user/ocharles) (*.net *.split)
2020-10-27 21:58:40 +0100joshmeredith(sid387798@gateway/web/irccloud.com/x-lhhtwrcyukiolswv) (*.net *.split)
2020-10-27 21:58:40 +0100pong(chiya@2406:3003:2077:2341::babe) (*.net *.split)
2020-10-27 21:58:40 +0100nopf(~frosch@static.179.17.76.144.clients.your-server.de) (*.net *.split)
2020-10-27 21:58:48 +0100nopf(~frosch@static.179.17.76.144.clients.your-server.de)
2020-10-27 21:58:50 +0100liquorice(sid267884@gateway/web/irccloud.com/x-volnulzrerkaifsx)
2020-10-27 21:58:51 +0100m-renaud(sid333785@gateway/web/irccloud.com/x-jxglvjindagumsef)
2020-10-27 21:58:52 +0100J_Arcane(sid119274@gateway/web/irccloud.com/x-bqxivhzktyeyfmzj)
2020-10-27 21:58:54 +0100ocharles(sid30093@musicbrainz/user/ocharles)
2020-10-27 21:58:54 +0100joshmeredith(sid387798@gateway/web/irccloud.com/x-hdepxcnffbqdlwvu)
2020-10-27 21:58:59 +0100sis7_(~user@2001:15e8:110:473e::1)
2020-10-27 21:58:59 +0100pong(chiya@2406:3003:2077:2341::babe)
2020-10-27 21:59:00 +0100albethere(sid457088@gateway/web/irccloud.com/x-fmchgsvxhdmjvieq)
2020-10-27 21:59:16 +0100^[_(sid43445@gateway/web/irccloud.com/x-iztepeaguyumtzta)
2020-10-27 21:59:56 +0100DavidEichmann(~david@43.240.198.146.dyn.plus.net) (Ping timeout: 256 seconds)
2020-10-27 22:00:02 +0100valli1(~valli@185.244.214.217) ()
2020-10-27 22:00:48 +0100Majiir(~Majiir@pool-96-237-149-35.bstnma.fios.verizon.net)
2020-10-27 22:00:49 +0100chkno(~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net) (Read error: Connection reset by peer)
2020-10-27 22:01:00 +0100chkno(~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net)
2020-10-27 22:01:46 +0100feuerbach_feuerbach
2020-10-27 22:01:52 +0100notnatebtw(~nate@125.161.130.165)
2020-10-27 22:01:53 +0100conal(~conal@64.71.133.70) (Ping timeout: 260 seconds)
2020-10-27 22:02:05 +0100feuerbach(~feuerbach@178.62.103.229) (Changing host)
2020-10-27 22:02:05 +0100feuerbach(~feuerbach@unaffiliated/feuerbach)
2020-10-27 22:03:45 +0100 <Athas> It's a lot easier to write fast C than it is to write fast C.
2020-10-27 22:04:00 +0100 <Athas> And fast C looks a lot more like idiomatic C than fast Haskell looks like idiomatic Haskell.
2020-10-27 22:04:39 +0100 <Athas> Er: It's a lot easier to write fast C than it is to write fast Haskell.
2020-10-27 22:04:39 +0100yianni(18390fbe@d24-57-15-190.home.cgocable.net) (Ping timeout: 245 seconds)
2020-10-27 22:06:09 +0100 <davean> Hum. I'd say yes and no. In C it "looks" idiomatic sometimes because theres no representation at all that its different then a horrificly slower design. Most C programmers I know would accidently trample some massice optimizations because they didn't see they were there because the language has litterly zero representation of the optimization. That said, theres a lot of basic optimizaiton mistakes
2020-10-27 22:06:11 +0100 <davean> people make in Haskell that don't look much different either. (Though some super important optimizations are directly not idiomatic Haskell and thats sad and GHC should improve because the ones I'm thinking of shouldn't have to be done by hand at all)
2020-10-27 22:06:15 +0100conal(~conal@198.8.81.89)
2020-10-27 22:06:55 +0100 <davean> Also, more Haskell optimizations are actually optimizations than ways to trick the compiler into generating the code you want.
2020-10-27 22:07:00 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
2020-10-27 22:07:04 +0100 <davean> So they stay optimizations.
2020-10-27 22:07:05 +0100GyroW_(~GyroW@ptr-48ujrfd1ztq5fjywfw3.18120a2.ip6.access.telenet.be)
2020-10-27 22:07:05 +0100GyroW_(~GyroW@ptr-48ujrfd1ztq5fjywfw3.18120a2.ip6.access.telenet.be) (Changing host)
2020-10-27 22:07:05 +0100GyroW_(~GyroW@unaffiliated/gyrow)
2020-10-27 22:07:22 +0100 <tromp> It's also a lot easier to write correct Haskell than it is to write correct C :-)
2020-10-27 22:07:30 +0100 <davean> Also C compilers are just *smarter*
2020-10-27 22:07:49 +0100 <Athas> How are C compilers smarter?
2020-10-27 22:08:03 +0100 <davean> Athas: Things like polygonal optimization for ASM instruction dependency breaking.
2020-10-27 22:08:09 +0100 <davean> Athas: C compilers try to optimize code.
2020-10-27 22:08:25 +0100 <davean> GHC translates what you write into ASM pretty directly.
2020-10-27 22:08:26 +0100GyroW(~GyroW@unaffiliated/gyrow) (Ping timeout: 272 seconds)
2020-10-27 22:08:48 +0100 <davean> GHC can't even unroll a fold against a CAF.
2020-10-27 22:08:53 +0100conal(~conal@198.8.81.89) (Client Quit)
2020-10-27 22:08:54 +0100 <Athas> For things like instruction scheduling and register allocation? When going through LLVM, GHC should benefit from the same optimisations.
2020-10-27 22:09:03 +0100 <davean> Athas: incorrect.
2020-10-27 22:09:11 +0100teardown(~user@unaffiliated/mrush)
2020-10-27 22:09:59 +0100 <Athas> Why not?
2020-10-27 22:10:12 +0100 <davean> for a number of reasons, one LLVM doesn't have enough semantic representation left.
2020-10-27 22:10:27 +0100 <davean> For another Haskell has more semantics defined.
2020-10-27 22:10:38 +0100 <davean> which means that LLVM doesn't have the analysis capability
2020-10-27 22:10:51 +0100 <davean> LLVM is fairly weak in understanding semantics, its too late for a number of things.
2020-10-27 22:11:06 +0100 <Athas> Could you clarify what you mean by polygonal optimization? I'm not sure I've heard that term before (is it like polyhedral optimisation?), but my work is mostly in high-level optimisations.
2020-10-27 22:11:14 +0100 <tomsmeding> why does it have that information then if it receives code from e.g. clang?
2020-10-27 22:11:21 +0100 <davean> er, yes, sorry I got it autocorrected it seems.
2020-10-27 22:11:46 +0100 <davean> tomsmeding: well for one they're designed for each other.
2020-10-27 22:11:53 +0100 <tomsmeding> sure
2020-10-27 22:12:03 +0100 <Athas> I'm not sure GCC or Clang does polyhedral optimisations by default, but I could be wrong.
2020-10-27 22:12:10 +0100 <tomsmeding> but then it sounds to me like ghc is leaving some llvm attributes on the table
2020-10-27 22:12:21 +0100 <Athas> Also, LLVM for sure only does polyhedral optimisations at the LLVM IR level (with Polly), and I'm not sure the C compiler helps.
2020-10-27 22:12:31 +0100 <Athas> After all, LLVM barely even has loops - they are reconstructed on demand.
2020-10-27 22:12:55 +0100 <davean> yes but based on the concept of how the C compiler works.
2020-10-27 22:13:08 +0100 <davean> So GHC has things like boxing.
2020-10-27 22:13:21 +0100 <Athas> Sure, LLVM shows its lineage as a C compiler backend, but I thought mostly in the area of nasty undefined behaviour semantics.
2020-10-27 22:13:41 +0100 <davean> Athas: A) not only B) uh, don't you think thats the thing thats directly relivent here?
2020-10-27 22:14:13 +0100 <Athas> By "undefined behaviour semantics", I mean things like LLVM removing some infinite loops, because they happen to be undefined in C.
2020-10-27 22:14:25 +0100 <Athas> I'm not sure it matters much for the kinds of optimisations that would help GHC.
2020-10-27 22:14:34 +0100conal(~conal@198.8.81.89)
2020-10-27 22:15:25 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 240 seconds)
2020-10-27 22:15:29 +0100 <Athas> Actually, I'm not really sure which optimisations would help GHC! Better automatic unboxing maybe?
2020-10-27 22:15:30 +0100hekkaidekapus_(~tchouri@gateway/tor-sasl/hekkaidekapus)
2020-10-27 22:16:27 +0100 <davean> Well yes, though thats not the sort of thing LLVM can reason about. Also just inlining certain things. There are a lot. I have further studies in it to do, but have been working on a bit of a search for which main ones its missing.
2020-10-27 22:17:03 +0100hekkaidekapus(~tchouri@gateway/tor-sasl/hekkaidekapus) (Ping timeout: 240 seconds)
2020-10-27 22:17:15 +0100teardown_(~user@unaffiliated/mrush)
2020-10-27 22:17:17 +0100 <Athas> GHC does a lot of inlining, doesn't it? It's the enabler of all the other big GHC-level optimisations, like fusion, or anything else driven by simplification rules.
2020-10-27 22:17:20 +0100teardown_(~user@unaffiliated/mrush) (Client Quit)
2020-10-27 22:17:24 +0100 <davean> You can't "just" got from boxed to unboxed sums for example, and returning stuff as an unboxed tuple can be pretty massive.
2020-10-27 22:17:41 +0100 <davean> Athas: I mean fusion and such is some pretty basic code rewriting.
2020-10-27 22:18:00 +0100 <davean> Athas: Its a moderate framework for code no one optimized at all.
2020-10-27 22:18:32 +0100justanotheruser(~justanoth@unaffiliated/justanotheruser) (Ping timeout: 260 seconds)
2020-10-27 22:18:37 +0100 <davean> These optimizations *are* semantic changing though I want to point out. Which means they're very hard to talk about
2020-10-27 22:18:42 +0100 <davean> and they're also data representation changing.
2020-10-27 22:18:43 +0100 <Athas> I think there is great value in optimisations that let us write modular code without overhead, which is exactly what fusion does (in ideal cases).
2020-10-27 22:18:57 +0100 <davean> Athas: with *less* overhead
2020-10-27 22:19:01 +0100 <Athas> An optimisation that changes semantics is simply wrong, in the nomenclature I'm familiar with.
2020-10-27 22:19:14 +0100teardown(~user@unaffiliated/mrush) (Quit: leaving)
2020-10-27 22:19:22 +0100 <davean> Athas: many change semantics locally but won't change them outside the function boundaries for example.
2020-10-27 22:19:48 +0100zq(~zq@xorshift.org) ()
2020-10-27 22:20:50 +0100 <Athas> I'm still not sure I understand. Could you name an example of such an optimisation?
2020-10-27 22:21:03 +0100 <davean> Athas: well, a bang pattern.
2020-10-27 22:21:07 +0100thc202(~thc202@unaffiliated/thc202) (Ping timeout: 260 seconds)
2020-10-27 22:21:20 +0100 <davean> That line evaluates differently but the function probably doesn't if the bang is appropriate.
2020-10-27 22:21:41 +0100 <Athas> Those are certainly semantics-changing in an observable way, at least in general.
2020-10-27 22:21:57 +0100 <davean> in general yes, but in many specific cases no
2020-10-27 22:22:04 +0100 <davean> Hence GHC's strictness analysis
2020-10-27 22:22:07 +0100 <Athas> GHC only does the equivalent of adding bang patterns when the strictness analyser determines it can be done without any observable semantic effect.
2020-10-27 22:22:21 +0100 <davean> Right, but define "observable" there
2020-10-27 22:22:31 +0100 <davean> Where is the observer?
2020-10-27 22:22:35 +0100 <Athas> With respect to Haskell's (unwritten...) operational semantics.
2020-10-27 22:22:38 +0100teardown(~user@unaffiliated/mrush)
2020-10-27 22:22:46 +0100 <davean> that line *did* change but the function its in didn't usually is the answer
2020-10-27 22:23:18 +0100 <monsterchrom> It doesn't look like this conversation is getting productive.
2020-10-27 22:23:23 +0100 <davean> no it does not
2020-10-27 22:23:34 +0100teardown(~user@unaffiliated/mrush) (Client Quit)
2020-10-27 22:23:41 +0100 <davean> I've been looking for how to step away from it politely.
2020-10-27 22:23:44 +0100PlasmaStrike(~mattplasm@38.73.141.198)
2020-10-27 22:24:01 +0100 <monsterchrom> I recommend "I need a drink" :)
2020-10-27 22:24:26 +0100 <monsterchrom> I'm always fond of "computer science has become a bit too technical, let's go for a drink"
2020-10-27 22:24:52 +0100 <monsterchrom> Jay Misra said that after a conference.
2020-10-27 22:24:53 +0100dbmikus(~dbmikus@cpe-76-167-86-219.natsow.res.rr.com) (Ping timeout: 258 seconds)
2020-10-27 22:25:24 +0100 <monsterchrom> And of all people, he wrote a super technical, hard-to-follow proof in a paper (though not for that conference).
2020-10-27 22:26:00 +0100teardown(~user@unaffiliated/mrush)
2020-10-27 22:26:23 +0100ahmr88(~ahmr88@cpc85006-haye22-2-0-cust131.17-4.cable.virginm.net)
2020-10-27 22:26:36 +0100teardown(~user@unaffiliated/mrush) (Client Quit)
2020-10-27 22:27:08 +0100 <monsterchrom> To be fair, his proof was merely operational semantics chasing. In the conference, some of the speakers inflicted monads on us.
2020-10-27 22:27:17 +0100bob_twinkles(~quassel@ec2-52-37-66-13.us-west-2.compute.amazonaws.com) (Quit: http://quassel-irc.org - Chat comfortably. Anywhere.)
2020-10-27 22:27:27 +0100 <davean> Monads are the definition of terrible, clearly.
2020-10-27 22:27:28 +0100 <monsterchrom> (basically the monad for Hoare triples)
2020-10-27 22:27:34 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:4998:5831:a85a:ec6f) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-10-27 22:27:35 +0100teardown(~user@gateway/tor-sasl/mrush)
2020-10-27 22:27:37 +0100bob_twinkles(~quassel@ec2-52-37-66-13.us-west-2.compute.amazonaws.com)
2020-10-27 22:27:38 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2020-10-27 22:27:44 +0100 <davean> Oh interesting
2020-10-27 22:27:46 +0100 <dolio> Seems like the problem is Hoare logic, not monads.
2020-10-27 22:27:51 +0100 <monsterchrom> :)
2020-10-27 22:28:09 +0100 <davean> dolio: I liked monsterchrom's telling better.
2020-10-27 22:28:11 +0100kritzefitz(~kritzefit@212.86.56.80) (Remote host closed the connection)
2020-10-27 22:28:18 +0100 <davean> dolio: Its not about the story, its about *how* you tell it.
2020-10-27 22:29:56 +0100dbmikus(~dbmikus@cpe-76-167-86-219.natsow.res.rr.com)
2020-10-27 22:31:49 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 256 seconds)
2020-10-27 22:32:19 +0100ahmr88(~ahmr88@cpc85006-haye22-2-0-cust131.17-4.cable.virginm.net) (Remote host closed the connection)
2020-10-27 22:34:28 +0100hyperisco(~hyperisco@d192-186-117-226.static.comm.cgocable.net) (Ping timeout: 246 seconds)
2020-10-27 22:35:20 +0100takuan(~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
2020-10-27 22:36:49 +0100ransom(~c4264035@c-73-243-2-10.hsd1.co.comcast.net) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-10-27 22:38:42 +0100justanotheruser(~justanoth@unaffiliated/justanotheruser)
2020-10-27 22:38:58 +0100chaosmasttter(~chaosmast@p200300c4a73c4601bdd32dc7d6289d04.dip0.t-ipconnect.de) (Quit: WeeChat 2.9)
2020-10-27 22:39:23 +0100knupfer1(~Thunderbi@200116b82cb7c400d15b7230f52137ad.dip.versatel-1u1.de)
2020-10-27 22:39:35 +0100knupfer1(~Thunderbi@200116b82cb7c400d15b7230f52137ad.dip.versatel-1u1.de) (Client Quit)
2020-10-27 22:41:22 +0100damianfral4(~damianfra@243.red-176-80-34.dynamicip.rima-tde.net) (Ping timeout: 258 seconds)
2020-10-27 22:42:13 +0100knupfer(~Thunderbi@mue-88-130-61-249.dsl.tropolys.de) (Ping timeout: 264 seconds)
2020-10-27 22:42:25 +0100knupfer(~Thunderbi@200116b82cb7c4002ca4e42aeeb0ad5c.dip.versatel-1u1.de)
2020-10-27 22:42:36 +0100taurux(~taurux@net-130-25-120-80.cust.vodafonedsl.it)
2020-10-27 22:42:38 +0100nschoe(~quassel@2a01:e0a:3c4:c7b0:496b:6bb1:2a12:b6fe) (Remote host closed the connection)
2020-10-27 22:42:51 +0100knupfer(~Thunderbi@200116b82cb7c4002ca4e42aeeb0ad5c.dip.versatel-1u1.de) (Client Quit)
2020-10-27 22:42:53 +0100teardown(~user@gateway/tor-sasl/mrush) (Quit: leaving)
2020-10-27 22:43:01 +0100knupfer(~Thunderbi@200116b82cb7c400415b2bb0b7a3fec7.dip.versatel-1u1.de)
2020-10-27 22:44:10 +0100knupfer1(~Thunderbi@200116b82cb7c4002d58dadaff983f63.dip.versatel-1u1.de)
2020-10-27 22:44:12 +0100knupfer(~Thunderbi@200116b82cb7c400415b2bb0b7a3fec7.dip.versatel-1u1.de) (Read error: Connection reset by peer)
2020-10-27 22:44:14 +0100knupfer1knupfer
2020-10-27 22:46:27 +0100knupfer(~Thunderbi@200116b82cb7c4002d58dadaff983f63.dip.versatel-1u1.de) (Read error: Connection reset by peer)
2020-10-27 22:46:33 +0100hyiltiz(~quassel@unaffiliated/hyiltiz) (Ping timeout: 256 seconds)
2020-10-27 22:46:38 +0100knupfer(~Thunderbi@200116b82cb7c400705675e554fd2851.dip.versatel-1u1.de)
2020-10-27 22:47:51 +0100knupfer(~Thunderbi@200116b82cb7c400705675e554fd2851.dip.versatel-1u1.de) (Client Quit)
2020-10-27 22:48:02 +0100knupfer(~Thunderbi@200116b82cb7c4007db48986ca2bd4da.dip.versatel-1u1.de)
2020-10-27 22:49:01 +0100hyiltiz(~quassel@unaffiliated/hyiltiz)
2020-10-27 22:49:43 +0100taurux(~taurux@net-130-25-120-80.cust.vodafonedsl.it) (Ping timeout: 260 seconds)
2020-10-27 22:50:57 +0100taurux(~taurux@net-188-216-37-152.cust.vodafonedsl.it)
2020-10-27 22:52:24 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2020-10-27 22:55:40 +0100mmohammadi9812(~mmohammad@5.238.178.31) (Remote host closed the connection)
2020-10-27 22:56:08 +0100obihann(~jhann@156.34.160.69) (Ping timeout: 260 seconds)
2020-10-27 22:56:32 +0100bennofs1(~benno@dslb-178-000-069-093.178.000.pools.vodafone-ip.de)
2020-10-27 22:57:02 +0100obihann(~jhann@156.34.160.69)
2020-10-27 22:57:44 +0100mmohammadi9812(~mmohammad@5.238.178.31)
2020-10-27 22:57:57 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:4998:5831:a85a:ec6f)
2020-10-27 22:59:45 +0100elliott_(~elliott_@pool-108-51-141-12.washdc.fios.verizon.net) (Ping timeout: 240 seconds)
2020-10-27 23:03:02 +0100mmohammadi9812(~mmohammad@5.238.178.31) (Quit: Quit)
2020-10-27 23:03:29 +0100teardown(~user@gateway/tor-sasl/mrush)
2020-10-27 23:03:42 +0100__monty__(~toonn@unaffiliated/toonn) (Quit: leaving)
2020-10-27 23:04:25 +0100teardown(~user@gateway/tor-sasl/mrush) (Client Quit)
2020-10-27 23:04:53 +0100teardown(~user@gateway/tor-sasl/mrush)
2020-10-27 23:08:23 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:4998:5831:a85a:ec6f) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-10-27 23:08:29 +0100mmohammadi9812(~mmohammad@5.238.178.31)
2020-10-27 23:08:48 +0100mmohammadi9812(~mmohammad@5.238.178.31) (Client Quit)
2020-10-27 23:09:27 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2020-10-27 23:09:29 +0100mmohammadi9812(~mmohammad@5.238.178.31)
2020-10-27 23:10:46 +0100conal(~conal@198.8.81.89) (Quit: Computer has gone to sleep.)
2020-10-27 23:11:34 +0100conal(~conal@198.8.81.89)
2020-10-27 23:11:53 +0100conal(~conal@198.8.81.89) (Client Quit)
2020-10-27 23:12:37 +0100conal(~conal@198.8.81.89)
2020-10-27 23:12:37 +0100chkno(~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net) (Read error: Connection reset by peer)
2020-10-27 23:12:40 +0100conal(~conal@198.8.81.89) (Client Quit)
2020-10-27 23:13:00 +0100chkno(~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net)
2020-10-27 23:15:07 +0100damianfral4(~damianfra@243.red-176-80-34.dynamicip.rima-tde.net)
2020-10-27 23:20:16 +0100perrier-jouet(~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (Quit: WeeChat 2.9)
2020-10-27 23:20:36 +0100nuncanada(~dude@179.235.160.168) (Read error: Connection reset by peer)
2020-10-27 23:21:11 +0100conal(~conal@64.71.133.70)
2020-10-27 23:22:36 +0100christo_(~chris@81.96.113.213) (Remote host closed the connection)
2020-10-27 23:25:52 +0100knupfer(~Thunderbi@200116b82cb7c4007db48986ca2bd4da.dip.versatel-1u1.de) (Ping timeout: 260 seconds)
2020-10-27 23:27:11 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2020-10-27 23:27:24 +0100Deide(~Deide@217.155.19.23)
2020-10-27 23:27:29 +0100justanotheruser(~justanoth@unaffiliated/justanotheruser) (Ping timeout: 272 seconds)
2020-10-27 23:28:45 +0100mirrorbird(~psutcliff@2a00:801:42b:7891:16b1:e53f:55b2:15e1) (Ping timeout: 272 seconds)
2020-10-27 23:28:49 +0100Perlboy(~Perlboy@178.239.168.171)
2020-10-27 23:29:41 +0100olligobber(olligobber@gateway/vpn/privateinternetaccess/olligobber)
2020-10-27 23:30:03 +0100teardown(~user@gateway/tor-sasl/mrush) (Ping timeout: 240 seconds)
2020-10-27 23:31:52 +0100mbomba(~mbomba@142.114.9.241)
2020-10-27 23:31:55 +0100hiroaki(~hiroaki@2a02:908:4b18:e20::e363) (Ping timeout: 272 seconds)
2020-10-27 23:31:55 +0100 <Squarism> Anyone heard of any library able to (de)serialize a subset of Traversal's (used by lens)?
2020-10-27 23:32:33 +0100 <Rembane> Squarism: What's serialize in this context?
2020-10-27 23:32:39 +0100 <Squarism> e e
2020-10-27 23:33:16 +0100Tspoon(tlarjoma@hilla.kapsi.fi) (Ping timeout: 246 seconds)
2020-10-27 23:33:20 +0100 <Squarism> Rembane, preferably something human readable. But any string would do I guess.
2020-10-27 23:33:39 +0100Tspoon(tlarjoma@hilla.kapsi.fi)
2020-10-27 23:34:07 +0100Stanley00(~stanley00@unaffiliated/stanley00)
2020-10-27 23:35:25 +0100 <Rembane> Squarism: Interesting, I've never seen one but perhaps someone else here has.
2020-10-27 23:36:53 +0100DTZUZU(~DTZUZU@S0106bcd165662a4d.vs.shawcable.net) (Read error: Connection reset by peer)
2020-10-27 23:38:39 +0100 <Squarism> I mean, it feels as if something like "field1 . ix 4 . fieldA . _Just" could have a textual representation. But maybe thats a naive conclusion
2020-10-27 23:38:58 +0100DTZUZU(~DTZUZU@S0106bcd165662a4d.vs.shawcable.net)
2020-10-27 23:39:18 +0100 <Rembane> Well, you need to go from a function to a textual representation and that's kinda tricky
2020-10-27 23:39:18 +0100Stanley00(~stanley00@unaffiliated/stanley00) (Ping timeout: 260 seconds)
2020-10-27 23:39:52 +0100p-core(~Thunderbi@2001:718:1e03:5128:2ab7:7f35:48a1:8515) (Ping timeout: 260 seconds)
2020-10-27 23:40:24 +0100Kolkrabe(~user@unaffiliated/siracusa)
2020-10-27 23:40:34 +0100 <Uniaika> I can't see a way to have a straightforward, abitrary expression of a Traversal that would not need a heap of context for it to make sense
2020-10-27 23:40:45 +0100son0p(~son0p@181.136.122.143) (Quit: leaving)
2020-10-27 23:40:46 +0100 <Uniaika> hmm.
2020-10-27 23:40:49 +0100 <Uniaika> that being said.
2020-10-27 23:41:01 +0100tmciver(~tmciver@cpe-172-101-40-226.maine.res.rr.com) (Ping timeout: 264 seconds)
2020-10-27 23:41:22 +0100GyroW(~GyroW@d54C03E98.access.telenet.be)
2020-10-27 23:41:22 +0100GyroW(~GyroW@d54C03E98.access.telenet.be) (Changing host)
2020-10-27 23:41:22 +0100GyroW(~GyroW@unaffiliated/gyrow)
2020-10-27 23:41:27 +0100 <Uniaika> Squarism: have you read the Typed Tagless Final Interpreters paper? http://okmij.org/ftp/tagless-final/course/lecture.pdf
2020-10-27 23:42:01 +0100 <Uniaika> the author shows a way to have multiple interpreters for an eDSL. One that would evaluate the functions, one that pretty-prints them, one that serialises them into a Tree, etc
2020-10-27 23:42:16 +0100 <Uniaika> you may get some good stuff out of it
2020-10-27 23:42:28 +0100 <Squarism> Maybe a start would be to just have deserialize and find other means to create the serialized "addresses".
2020-10-27 23:42:32 +0100tmciver(~tmciver@cpe-172-101-40-226.maine.res.rr.com)
2020-10-27 23:42:32 +0100GyroW_(~GyroW@unaffiliated/gyrow) (Ping timeout: 260 seconds)
2020-10-27 23:42:52 +0100 <Squarism> Uniaika, ah cool. Ill look into that
2020-10-27 23:43:19 +0100 <Uniaika> 👍
2020-10-27 23:43:25 +0100bennofs1(~benno@dslb-178-000-069-093.178.000.pools.vodafone-ip.de) (Quit: WeeChat 2.7.1)
2020-10-27 23:43:29 +0100justanotheruser(~justanoth@unaffiliated/justanotheruser)
2020-10-27 23:43:43 +0100 <Uniaika> tell me if it helped you acquire some new techniques for your goal
2020-10-27 23:43:52 +0100 <Uniaika> (or if it didn't)
2020-10-27 23:43:54 +0100 <Squarism> I will
2020-10-27 23:44:28 +0100 <Rembane> Squarism: Here's a related blog post that might be easier to digest than the paper: https://serokell.io/blog/tagless-final
2020-10-27 23:44:44 +0100 <koz_> Tagless final doesn't help you here.
2020-10-27 23:44:48 +0100 <Squarism> sounds like a good start. Thanks
2020-10-27 23:44:52 +0100 <koz_> This isn't eDSL territory.
2020-10-27 23:45:01 +0100 <koz_> Uniaika: We had a conversation on this topic already, I believe. :P
2020-10-27 23:45:29 +0100 <Rembane> Uniaika: Have you perhaps found a new hammer? :)
2020-10-27 23:45:39 +0100 <koz_> Rembane: Can confirm.
2020-10-27 23:46:11 +0100 <Rembane> koz_: ^^
2020-10-27 23:46:18 +0100 <Rembane> It is a very good hammer though.
2020-10-27 23:46:58 +0100 <koz_> Yeah, but all hammers are, after all, hammers, not hammer-chisel-screwdriver-breadmaker-firearm-sketchpads.
2020-10-27 23:47:02 +0100 <Rembane> Isn't there another representation of lenses called optics that's more like an initial encoding than a final encoding?
2020-10-27 23:47:17 +0100 <Rembane> koz_: Are you talking about recursion schemes? :D
2020-10-27 23:47:35 +0100 <koz_> Rembane: No, because you did you see any Ancient Greek there? :P
2020-10-27 23:47:45 +0100 <koz_> Also yes, optics exist, but I don't think it helps here.
2020-10-27 23:48:04 +0100 <Rembane> koz_: I see Ancient Greek everywhere! :D
2020-10-27 23:48:20 +0100 <Rembane> koz_: It's like "I see dead people" but s/dead people/Ancient Greek/g
2020-10-27 23:48:40 +0100 <Rembane> Squarism: What do you need the serialization for btw?
2020-10-27 23:48:42 +0100 <koz_> Yep, both be dead, yo.
2020-10-27 23:48:58 +0100 <Rembane> They have much in common.
2020-10-27 23:49:02 +0100 <Rembane> Deadomorphisms
2020-10-27 23:49:16 +0100 <koz_> Mortimorphisms?
2020-10-27 23:49:24 +0100 <koz_> Thanamorphisms?
2020-10-27 23:49:45 +0100 <koz_> Should be thanamorphisms, I think, since 'mort' is a Latin root.
2020-10-27 23:49:51 +0100nuncanada(~dude@179.235.160.168)
2020-10-27 23:50:09 +0100 <Rembane> Yeah, mixing greek and latin always makes for good fun
2020-10-27 23:50:40 +0100 <koz_> Rembane: It's how privately-educated English people amuse themselves, I've heard.
2020-10-27 23:50:59 +0100 <mort> "mort" has no relation to "morph" afaik though?
2020-10-27 23:51:30 +0100 <koz_> mort: No it does not, but that's beside the point here. The joke is that all recursion schemes are [some Greek root] + morphism.
2020-10-27 23:51:44 +0100elliott_(~elliott_@pool-108-51-141-12.washdc.fios.verizon.net)
2020-10-27 23:51:47 +0100 <koz_> Such as 'anamorphism', 'catamorphism', 'hylomorphism', 'chronomorphism', etc.
2020-10-27 23:51:56 +0100 <Rembane> Adnd you can combine them for even more fun
2020-10-27 23:51:58 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
2020-10-27 23:52:07 +0100 <Rembane> And to make sweet rhymes
2020-10-27 23:52:11 +0100 <koz_> So if we wanna talk about 'dead-related recursion schemes', 'thanamorphism' appears to be the convention-following construction.
2020-10-27 23:52:28 +0100 <Squarism> Rembane, i have a webapp that does addition and changes to some user defined type. So i was hoping to be able to produce "all addresses for addition of values" (Nothing, List-ends) "all modifiable addresses" (any leaf of some data type)
2020-10-27 23:53:16 +0100 <mort> I see. Is thana- or thano- a root for dead in Greek then
2020-10-27 23:53:28 +0100 <mort> this explains the name thanos at least
2020-10-27 23:53:33 +0100 <Rembane> Squarism: I might be out on a limb here, but can you make another representation that can both be shown/serialized and turned into traversals?
2020-10-27 23:53:47 +0100 <koz_> mort: Indeed.
2020-10-27 23:53:49 +0100 <Rembane> mort: Who's Thanos?
2020-10-27 23:54:02 +0100ransom(~c4264035@2601:285:201:6720:a129:4845:9b41:4504)
2020-10-27 23:54:08 +0100 <koz_> It's the root of words like 'thanatosis', although English doesn't lean on Greek much for words of that meaning.
2020-10-27 23:54:09 +0100 <mort> the Marvel supervillain
2020-10-27 23:54:15 +0100 <Squarism> Rembane, so the address needs to be sent over the wire. Also, the interface on the "server" is untyped as it only operates on a serialized version of the above mentioned user defined type.
2020-10-27 23:54:25 +0100 <koz_> The 'cata' in 'catamorphism' means 'to collapse', like in 'catastrophe'.
2020-10-27 23:54:57 +0100 <Squarism> Rembane, not a bad idea.
2020-10-27 23:55:03 +0100 <koz_> But yes, the Thanos connection is indeed this.
2020-10-27 23:55:17 +0100 <Squarism> Ill ponder that
2020-10-27 23:55:44 +0100 <koz_> Usually we tend to use 'mort' or 'necro' in English for fancy death-related terms.
2020-10-27 23:55:49 +0100 <Rembane> Crunchomorphism!
2020-10-27 23:56:02 +0100 <koz_> (consider 'necrosis', 'necromancy', 'mortify', 'mortal', etc)
2020-10-27 23:56:42 +0100 <Rembane> Squarism: Got it, untyped interface sounds exciting. :)
2020-10-27 23:56:57 +0100 <Rembane> Necrofy, necrtal... hm...
2020-10-27 23:57:08 +0100invaser(~Thunderbi@31.148.23.125) (Quit: invaser)
2020-10-27 23:57:17 +0100 <mort> hydromorphism
2020-10-27 23:57:42 +0100justanotheruser(~justanoth@unaffiliated/justanotheruser) (Ping timeout: 260 seconds)
2020-10-27 23:57:43 +0100 <mort> oh, quadromorphism, the true Fourier transform which makes numbers four-ier
2020-10-27 23:57:48 +0100 <koz_> mort: ROFL.
2020-10-27 23:58:01 +0100 <Squarism> Rembane, i guess it doesnt. But web only knows text and json so yeah.
2020-10-27 23:58:04 +0100 <Axman6> gold
2020-10-27 23:58:15 +0100 <Rembane> mort: :D
2020-10-27 23:58:21 +0100 <koz_> Axman6: Chrysomorphism?
2020-10-27 23:58:32 +0100 <Rembane> Squarism: That doesn't stop you from type checking it when you deserialize it. :)
2020-10-27 23:58:36 +0100 <koz_> (inb4 I finally get where the whole 'Christ' thing came from)
2020-10-27 23:58:43 +0100 <Axman6> @quote+ mort quadromorphism, the true Fourier transform which makes numbers four-ier
2020-10-27 23:58:43 +0100 <lambdabot> No quotes for this person. Your mind just hasn't been the same since the electro-shock, has it?
2020-10-27 23:59:15 +0100 <Axman6> @remember mort quadromorphism, the true Fourier transform which makes numbers four-ier
2020-10-27 23:59:15 +0100 <lambdabot> Done.
2020-10-27 23:59:26 +0100 <Axman6> @quote four
2020-10-27 23:59:26 +0100 <lambdabot> copumpkin says: I love: Warning: Due to a known bug, the default Linux document viewer evince prints N*N copies of a PDF file when N copies requested. As a workaround, use Adobe Reader acroread for
2020-10-27 23:59:26 +0100 <lambdabot> printing multiple copies of PDF documents, or use the fact that every natural number is a sum of at most four squares.
2020-10-27 23:59:57 +0100 <mort> @quote fourier
2020-10-27 23:59:57 +0100 <lambdabot> mort says: quadromorphism, the true Fourier transform which makes numbers four-ier